<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使用心得(一)相关推荐

  1. jeesite使用心得(二)

    按照上一篇的内容,有一些缺陷的地方. 分页对象传什么都可以,但是返回的是list<HashMap<String,Object>>集合的话,分页方法就是无效了. 这里把我写的贴一 ...

  2. jeesite(一)

    首先 刚进公司 项目框架是jeesite,而且还是前后都是我一个人搞 这可我把我这个JS菜鸟逼疯了,并且这个框架封装了太多文档和资料却很少 ,所以为了造福大家和我自己(更重要是我自己)我将记录我在je ...

  3. Java EE学习心得

    –Java EE学习心得   1.    称为编程专家的秘诀是: 思考-----编程--------思考------编程--.. 编程不能一步到位,不能一上来就编,必须先思考如何写,怎样写?然后再编程 ...

  4. 测试心得:微图书销售小程序

    测试心得:微图书销售小程序 前言 这个学期差不多也将近结束,经过大半个学期,从项目需求的确认和项目文档的编写,到一步步的设计与实现,现在终于到了测试阶段,但是我们在测试阶段也暴露出了很多bug,但是每 ...

  5. java.lang.OutOfMemoryError:GC overhead limit exceeded填坑心得

    该文章出自:http://www.cnblogs.com/hucn/p/3572384.html 分析工具:http://www.blogjava.net/jjshcc/archive/2014/03 ...

  6. 计算机财务应用实验心得,计算机会计实习心得-20210628124643.doc-原创力文档

    计算机会计实习心得 计算机会计实习心得1 毕业实践环节是大学生在完成全部课程后.走向社会之前最真实的一个模拟实验,对于我们财会专业的学生,平时注意注重理论学习,缺乏实践锻炼,因此实习显得尤为重要.在本 ...

  7. html5考试总结300字,期中考心得300字5

    为了检验学生半个学期所学的知识而进行的一次考试,有利于学生比较正式地检验自己平时的学习水平,根据这个成绩,学生可以及时的调整学习心态和方法,更有效率地进行下一阶段的学习,期中考试主要考察学生前半学期的 ...

  8. Assembly学习心得

    http://blog.csdn.net/etmonitor/ Assembly学习心得 说明: 最近开始准备把学到的.NET知识重新整理一遍,眼过千遍不如手过一遍,所以我准备记下我的学习心得,已备参 ...

  9. 什么叫安装文件索引服务器,搜出精彩 玩转Windows 2008系统心得

    [IT168 专稿]不少朋友已经在不经意间与Windows Server 2008系统进行了亲密接触,在一段时间的接触之后,不知大家对该系统的文件搜索功能会有什么样的体会?其实,Windows Ser ...

最新文章

  1. 我都陪你坐了一天了,你好歹说句话啊!吖的,谱也忒大了。。。
  2. 捷报!又一名HIV感染者被治愈,干细胞移植再次立功
  3. cannot be registered to your development team. Change your bundle identifier to a unique string to t
  4. java页面可配置化_web.xml页面配置
  5. [转载] Java8 Stream流遍历 如何使用索引
  6. java 如何判定消息已在队列_【05期】消息队列中,如何保证消息的顺序性?
  7. CCF农产品价格预测-复赛rank2代码公布
  8. PyCharm自定义背景图片、更换主题
  9. yum执行出错,There are no enabled repos
  10. 一道逻辑推理题的程序实现(纯属娱乐)
  11. vue获取上一个页面路由
  12. 苹果6plus几核处理器_全是回忆!苹果12年进化史:21部iPhone你用过哪一款?
  13. java 内部类声明 抽象类_Java 抽象类、接口、内部类
  14. hadoop 实现文件压缩
  15. win7企业版安装vmtool提示无法进行,需要更新到SP1。【不换镜像,已解决】
  16. 企业开源该选什么软件许可证?
  17. Elastic Job Lite调度中心和Cron表达式
  18. 《学习记录》“Python”输入1-4判断季度有那几个月
  19. Android Vlc播放器加载rtsp及http地址视频
  20. 操作系统——存储管理

热门文章

  1. [html] 如何禁用掉a标签的默认事件?
  2. [vue] 你知道style加scoped属性的用途和原理吗?
  3. 工作169:vue项目报错[Vue warn]: Property “visible“ must be accessed with “$data.visible“ because properties
  4. 前端学习(1933)vue之电商管理系统电商系统之优化树形控件
  5. 前端学习(1425):同步异步概述
  6. 前端学习(594):network面板
  7. 前端学习(547):node的系统模块fs
  8. 第三十二期:如何摆脱「技术思维」的惯性?
  9. absolute元素在text-align属性下的对齐显示
  10. 基于display:table的CSS布局