jeesite使用心得(一)
来源:互联网 发布:魔域淘宝绑6星vip 编辑:程序博客网 时间:2024/05/29 12:22
<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方法了。
阅读全文
0 0
- jeesite使用心得(一)
- jeesite使用心得(二)
- jeesite 使用笔记(一)
- jeesite的使用一
- JeeSite入门介绍(一)
- jeesite学习笔记(一) 项目框架
- jeesite项目学习(一)项目运行
- sqlapi 使用心得(一)
- VB使用心得(一)
- ARC使用心得(一)
- ARC使用心得(一)
- ARC使用心得(一)
- ECharts使用心得(一)
- Git使用心得(一)
- Git使用心得(一)
- EChart使用心得(一)
- JSnack使用心得(一)
- HBuilder使用心得(一)
- Ajax 调用restful服务返回json
- 日常二天
- 小程序空格解决文字分散对齐
- 博弈——Calendar Game
- Shredding Company (dfs)
- jeesite使用心得(一)
- 百度语音API的Python语音识别实践
- php最底部悬浮层,适用于手机Wap页面和所有网页页面
- leetcode--First Missing Positive
- 通过Eclipse的Git插件维护GitHub上的代码
- UI06-UIView视图层次关系
- centos 安装nginx与ftp
- Android高德地图如何让所有的轨迹在屏幕范围内都显示出来.
- Settings源码分析