jeesite使用心得(一)
生活随笔
收集整理的這篇文章主要介紹了
jeesite使用心得(一)
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
<update id="updateSelective">UPDATE ${table.name} <set> <#list table.columnList as c><#if c.isEdit?? && c.isEdit == "1"><if test="${c.javaFieldId} != null" >${c.name} = ${"#"}{${c.javaFieldId}},</if></#if></#list></set>WHERE id = ${"#"}{id}
</update>
jeesite是一個很好用的開源框架,尤其是權(quán)限角色的管理,不需要改什么就可以直接拿來用。
但使用中還是有一點不滿足需求,就試著改了一下。
這樣查到的是一個對象集合,也可以帶參數(shù)查詢,只要是參數(shù)的屬性即可。
但是如果需要太多,查詢條件不是一個表對應(yīng)的對象屬性,查詢到的結(jié)果是幾個表關(guān)聯(lián)查詢的結(jié)果,
以前的處理方式是,封裝成HashMap<String,Object>的形式.查到的結(jié)果是List<HashMap<String,Object>>
這樣就不需要封裝到對象,交流一下代碼。
本來有很多參數(shù),就不都貼出來了。
會按name值查詢(orderNo)
這里的params會有一個{orderNo=}
page對象,可以封裝成任意一個entity,這里我封裝的是這個controller對應(yīng)的entity
調(diào)用service的重寫的findPage(Page<BusMddkApplication> page, Map<String, Object> params)方法
注意@param注解,一定要加,否則找不到參數(shù)的錯。
這樣就多表關(guān)聯(lián)查詢,將結(jié)果封裝到Map
jsp回顯數(shù)據(jù):
<c:forEach items="${list}" var="baseBusMddkApplication"><input type="hidden" id="applicationId" value="${baseBusMddkApplication.applicationId}"/> </c:forEach>也是遍歷之后,對象.屬性的方式,可以根據(jù)map的key值獲取value值。
關(guān)于updateSelective方法,jeesite沒有提供這個方法。他都是先查再更新。
但是有時候頁面的數(shù)據(jù)太多,updateSelective方法比較實用,如果傳過來的參數(shù)有值就更新,沒有就保持原來的值。
jeesite代碼生成的模板在resources/templates/modules/gen文件夾下,
找到dao下的mapper.xml
增加下面的代碼:
jeesite是一個很好用的開源框架,尤其是權(quán)限角色的管理,不需要改什么就可以直接拿來用。
但使用中還是有一點不滿足需求,就試著改了一下。
用jeesite自帶的代碼生成器,生成的實例如下:
@RequiresPermissions("test:testData:view")@RequestMapping(value = {"list", ""})public String list(TestData testData, HttpServletRequest request, HttpServletResponse response, Model model) {Page<TestData> page = testDataService.findPage(new Page<TestData>(request, response), testData); model.addAttribute("page", page);return "jeesite/test/testDataList";}調(diào)用abstract class CrudService的findPage方法 /*** 查詢分頁數(shù)據(jù)* @param page 分頁對象* @param entity* @return*/public Page<T> findPage(Page<T> page, T entity) {entity.setPage(page);page.setList(dao.findList(entity));return page;}這樣查到的是一個對象集合,也可以帶參數(shù)查詢,只要是參數(shù)的屬性即可。
但是如果需要太多,查詢條件不是一個表對應(yīng)的對象屬性,查詢到的結(jié)果是幾個表關(guān)聯(lián)查詢的結(jié)果,
以前的處理方式是,封裝成HashMap<String,Object>的形式.查到的結(jié)果是List<HashMap<String,Object>>
這樣就不需要封裝到對象,交流一下代碼。
jsp:
本來有很多參數(shù),就不都貼出來了。
會按name值查詢(orderNo)
controller:
這里的params會有一個{orderNo=}
page對象,可以封裝成任意一個entity,這里我封裝的是這個controller對應(yīng)的entity
調(diào)用service的重寫的findPage(Page<BusMddkApplication> page, Map<String, Object> params)方法
dao:
注意@param注解,一定要加,否則找不到參數(shù)的錯。
mapper.xml:
<!-- 自定義sql begin --><sql id="busMddkApplicationColumnsMap">a.application_id AS "applicationId",a.order_no AS "orderNo",b.merchants AS "merchants",c.application_name AS"applicationName",ar1.name AS "pArea.name",ar2.name AS "cArea.name"</sql><sql id="busMddkApplicationJoinsMap">LEFT JOIN sys_area ar1 ON ar1.id = a.area_id_proviceLEFTJOIN sys_area ar2 ON ar2.id = a.area_id_cityLEFT JOINbus_mddk_application_customer c ON c.application_id = a.application_idLEFT JOIN bus_mddk_application_office b ON b.application_id = a.application_id</sql><!-- 自定義sql end --> <select id="findListByPage" resultType="java.util.HashMap">SELECT<include refid="busMddkApplicationColumnsMap" />FROM bus_mddk_application a<include refid="busMddkApplicationJoinsMap" /><where>1 = 1 <!-- like --><if test="params.orderNo != null and params.orderNo != ''">AND b.merchants likeconcat('%',concat(#{params.orderNo},'%'))</if><if test="params.orderNo != null and params.orderNo != ''">AND c.application_name likeconcat('%',concat(#{params.orderNo},'%'))</if><if test="params.orderNo != null and params.orderNo != ''">AND a.order_no likeconcat('%',concat(#{params.orderNo},'%'))</if></where><choose><when test="page !=null and page.orderBy != null and page.orderBy != ''">ORDER BY #{page.orderBy}</when><otherwise>ORDER BY a.update_date DESC</otherwise></choose></select>這樣就多表關(guān)聯(lián)查詢,將結(jié)果封裝到Map
jsp回顯數(shù)據(jù):
<c:forEach items="${list}" var="baseBusMddkApplication"><input type="hidden" id="applicationId" value="${baseBusMddkApplication.applicationId}"/> </c:forEach>也是遍歷之后,對象.屬性的方式,可以根據(jù)map的key值獲取value值。
關(guān)于updateSelective方法,jeesite沒有提供這個方法。他都是先查再更新。
但是有時候頁面的數(shù)據(jù)太多,updateSelective方法比較實用,如果傳過來的參數(shù)有值就更新,沒有就保持原來的值。
jeesite代碼生成的模板在resources/templates/modules/gen文件夾下,
找到dao下的mapper.xml
增加下面的代碼:
再生成的就有updateSelective方法了。
總結(jié)
以上是生活随笔為你收集整理的jeesite使用心得(一)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 构造函数内部原理 包装类
- 下一篇: 谈项目需求