日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

jeesite使用心得(一)

發布時間:2023/12/10 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 jeesite使用心得(一) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
<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是一個很好用的開源框架,尤其是權限角色的管理,不需要改什么就可以直接拿來用。
但使用中還是有一點不滿足需求,就試著改了一下。

用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";}調用abstract class CrudService的findPage方法

/*** 查詢分頁數據* @param page 分頁對象* @param entity* @return*/public Page<T> findPage(Page<T> page, T entity) {entity.setPage(page);page.setList(dao.findList(entity));return page;}
這樣查到的是一個對象集合,也可以帶參數查詢,只要是參數的屬性即可。
但是如果需要太多,查詢條件不是一個表對應的對象屬性,查詢到的結果是幾個表關聯查詢的結果,
以前的處理方式是,封裝成HashMap<String,Object>的形式.查到的結果是List<HashMap<String,Object>>
這樣就不需要封裝到對象,交流一下代碼。

jsp:

<form:form id="searchForm" modelAttribute="baseBusMddkApplication" action="${ctx}/contract/busMddkApplication/" method="post" class="breadcrumb form-search"> 模糊搜索:<input class="resetClass" type="text" name="orderNo" id="orderNo"/> <li class="btns"><input id="btnSubmit" class="btn btn-primary" type="submit" value="確定"/> </li> <li class="clearfix"></li> </form:form>
本來有很多參數,就不都貼出來了。
會按name值查詢(orderNo)

controller:

@RequiresPermissions("contract:busMddkApplication:view")@RequestMapping(value = { "list", "" })protected String list(BusMddkApplicationVo BusMddkApplicationVo, HttpServletRequest request,HttpServletResponse response, Model model) {Page<BusMddkApplication> page = new Page<BusMddkApplication>(request, response);Map<String, Object> params = request.getParameterMap();List<Map<String, Object>> list = busMddkApplicationService.findPage(page, params);return "modules/bus/contract/busMddkApplicationList";}
這里的params會有一個{orderNo=}
page對象,可以封裝成任意一個entity,這里我封裝的是這個controller對應的entity
調用service的重寫的findPage(Page<BusMddkApplication> page, Map<String, Object> params)方法

dao:

List<Map<String, Object>> findListByPage(@Param("page")Page<BusMddkApplication> page,@Param("params")Map<String, Object> params);
注意@param注解,一定要加,否則找不到參數的錯。

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>
這樣就多表關聯查詢,將結果封裝到Map
jsp回顯數據:

<c:forEach items="${list}" var="baseBusMddkApplication"><input type="hidden" id="applicationId" value="${baseBusMddkApplication.applicationId}"/> </c:forEach>也是遍歷之后,對象.屬性的方式,可以根據map的key值獲取value值。


關于updateSelective方法,jeesite沒有提供這個方法。他都是先查再更新。
但是有時候頁面的數據太多,updateSelective方法比較實用,如果傳過來的參數有值就更新,沒有就保持原來的值。
jeesite代碼生成的模板在resources/templates/modules/gen文件夾下,
找到dao下的mapper.xml
增加下面的代碼:

再生成的就有updateSelective方法了。

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的jeesite使用心得(一)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。