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方法了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/413068.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java List集合转换为List Map集合

/*** 将List<Object>转换为List<Map<String,Object>>* param list* return*/private List<Map<String,Object>> convertListMap(List<Object> list){List<Map<String,Object>> mapsnew ArrayList<Map<String,Object>…

[css] 如果给一个元素设置background-color,它的颜色会填充哪些区域呢?

[css] 如果给一个元素设置background-color,它的颜色会填充哪些区域呢&#xff1f; 个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&#xff0c; 但坚持一定很酷。欢迎大家一起讨论 主目录 与歌谣一起通关前端面试题

jeesite使用心得(二)

按照上一篇的内容&#xff0c;有一些缺陷的地方。分页对象传什么都可以&#xff0c;但是返回的是list<HashMap<String,Object>>集合的话&#xff0c;分页方法就是无效了。这里把我写的贴一下: Controller: // 带条件分页Integer pageNo null;Integer pageSize …

jqgrid删除某一列(隐藏)

$("#jqGrid_table").setGridParam().hideCol("列的名字");//隐藏 $("#jqGrid_table").setGridParam().showCol("列的名字");//显示

一个设计项调另一个设计项(支持多选传值)

//方案管理中起企业按钮中的前端代码function(button, record, e) {debugger; // 中断调试指令&#xff0c;可以手动删除它var me this; // this 为列表视图控制器var viewModel this.getViewModel(); // 获取视图模型var grid this.getView();…

[css] 使用css3做一个魔方旋转的效果

[css] 使用css3做一个魔方旋转的效果 总的来说&#xff0c;用了一些 3D 效果的样式&#xff0c;如 translate3d&#xff0c;rotate3d&#xff0c;perspective&#xff0c;transform-style: preserve-3d; 等&#xff0c;感兴趣的可以去看看它的样式文件个人简介 我是歌谣&…

linux安装elasticsearch5.5

大家好&#xff0c;我是烤鸭: 我是采用官网下载tar包的方式安装的。 安装环境&#xff1a;centos 7.2,jdk1.8 下载地址: https://www.elastic.co/downloads/elasticsearch 1.解压缩&#xff1a; 解压 elasticsearch.5.5.2.tar.gz tar -zxvf elasticsearch-5.2.2.tar.gz2.创…

eclipse创建folder变成package解决方案

1,项目右键—-选择properties 2,选择Java Build Path—-选择Source 3,选择xxxx/src/main/resources下面的Excluded,点击Edit 4,在Exclusion patterns下面选中第一个&#xff0c;点击右边的edit 5,方案一&#xff1a;在Browse按钮左边的输入框修改为 ** 方案二&#xff1a;…

[css] 手写一个使用css3旋转硬币的效果

[css] 手写一个使用css3旋转硬币的效果 两种实现方式&#xff1a;1、animationkeyframes 2、transition&#xff1a; //第一种实现方式 <style type"text/css"> .around{ width:200px; height:200px; background:orange; /*圆形的话看不出效果&#xff0c;所以…

0076-小升初1:生日蛋糕

题目 小升初1&#xff1a;生日蛋糕难度级别&#xff1a;B&#xff1b; 运行时间限制&#xff1a;1000ms&#xff1b; 运行空间限制&#xff1a;256000KB&#xff1b; 代码长度限制&#xff1a;2000000B 试题描述一个中学生&#xff08;在线测评系统的系统管理员&#xff09;过生…

tomcat9-jenkins:insufficient free space available after evicting expired cache entries-consider

解决该问题方法&#xff0c;修改tomcat/conf/context.xml文件&#xff0c;增加资源最大可缓存的大小&#xff1a;<Context><!-- Default set of monitored resources. If one of these changes, the --><!-- web application will be reloaded. …

[css] height和line-height的区别是什么呢?

[css] height和line-height的区别是什么呢&#xff1f; height&#xff1a;元素content area的高度line-height&#xff1a;元素中&#xff0c;多行文字基线的距离个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&#xff0c; 但坚持一定很酷。欢迎大…

laydate根据开始时间或者结束时间限制范围

$(window).load(function(){//初始化时间控件var cartimeDate laydate.render({elem: #cartime //用车时间,type: datetime,format: yyyy-MM-dd HH:mm,done:function(value, date){returntimeDate.config.mingetDateArray(date);//重点}});var returntimeDate laydate.render…

Django Form -- 字段的用法扩展

form.py的代码 from django import forms from django.forms import fields from django.forms import widgetsclass DetailForm(forms.Form):inp fields.CharField()required inp fields.CharField(requiredFalse)  #表单可以为空 inp fields.CharField(requiredTrue) …

linux部署jenkins,tomcat9

大家好&#xff0c;我是烤鸭&#xff1a;今天分享的是 linux部署jenkins,tomcat9 安装环境&#xff1a;linux centos7.2tomcat 9.1Jenkins 2.73JDK 1.8maven 3.5git 2.91. 下载jenkins&#xff1a;https://jenkins.io/download/ 我选择的war下载。2. 安装…

[css] 请用css写一个扫码的加载动画图

[css] 请用css写一个扫码的加载动画图 Keyframes donut-spin { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } } .donut { display: inline-block; border: 4px solid rgba(0, 0, 0, 0.1); border-left-color: #7983ff; border-radius: 50%; width: 3…

java.lang.OutOfMemoryError: PermGen space及其解决方法

Run—-Debug Configurations -Xms2096m -Xmx2096m -XX:MaxNewSize2096m -XX:MaxPermSize2096m

【洛谷P1795 无穷的序列_NOI导刊2010提高(05)】模拟

分析 map搞一下 AC代码 #include <bits/stdc.h> using namespace std; map<int,int> mp; inline int read() {int w0,x0; char ch0;while (!isdigit(ch)) {w|ch-;chgetchar();}while (isdigit(ch)) {x(x<<1)(x<<3)(ch^48);chgetchar();}return w?-x:x…

[css] 举例说明伪类:focus-within的用法

[css] 举例说明伪类:focus-within的用法 类似于事件的冒泡机制&#xff0c;可以从获取焦点的元素一职冒泡到根元素上个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&#xff0c; 但坚持一定很酷。欢迎大家一起讨论 主目录 与歌谣一起通关前端面试…

jeesite的junit,数据没有插入?

jeesite框架自带的test方法 在common/test/SpringTransactionalContextTests.class 说一下遇到的问题。 sql执行成功了,但是数据库没有数据。what&#xff1f;&#xff1f;&#xff1f; 第一时间就想到了是事务的问题&#xff0c;事务没有提交。 RunWith(SpringJUnit4Class…