赞
踩
一、Mybatis动态SQL
动态SQL实现更新
创建VideoSqlProvider类,自定义方法updateVideo,返回值是String类型,具体见参考文档:动态SQL参考文档
public class VideoSqlProvider { public String updateVideo(final Video video){ return new SQL(){{ UPDATE("video"); //表名 //条件写法. if(video.getTitle()!= null){ SET("title=#{title}"); } if(video.getSummary()!= null){ SET("summary=#{summary}"); } //....... WHERE("id=#{id}"); }}.toString(); } }
修改mapper层的SQL用法
使用@UpdateProvider
注解,type
值是上面类的类名VideoSqlProvider.class
,method
选择对应的方法名"updateVideo"
。
添加、删除、查询:@InsertProvider 插入
@DeleteProvider 删除
@SelectProvider 查询
/**
* 更新
* @param video
* @return
*/
// @Update("update video set title = #{title} where id = #{id}") //原更新方式
@UpdateProvider(type = VideoSqlProvider.class,method = "updateVideo") //动态SQL更新方式
int update(Video video);
二、pageHelper分页助手插件
pom.xml文件配置相关依赖
这里使用的是5.x的版本
<!-- 分页插件依赖 -->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>5.1.10</version>
</dependency>
创建PageHelperConfig 类
使用@Configuration
注解,自定义pageHelper
方法,方法返回一个PageInterceptor
对象,使用@Bean
注解,把方法交给spring容器管理
@Configuration public class PageHelperConfig { @Bean public PageInterceptor pageHelper() { PageInterceptor pageHelper = new PageInterceptor(); Properties p = new Properties(); p.setProperty("offsetAsPageNum","true");//设置为true代表,可以将offset当做pageNum使用 p.setProperty("rowBoundsWithCount","true");//表示进行select count(*) 查询 p.setProperty("reasonable","true"); p.setProperty("returnPageInfo", "check"); p.setProperty("params", "count=countSql"); pageHelper.setProperties(p); return pageHelper; } }
修改controller层的查询方法
使用@RequestParam
注解,定义两个参数page
和 size
,并赋予默认值;后面使用了map集合,只获取需要的数据,减轻服务器的消耗
//查询所有video信息 @RequestMapping("/find_all") public Object findAll( @RequestParam(value = "page",defaultValue = "1")int page, @RequestParam(value = "size",defaultValue = "5")int size ){ PageHelper.startPage(page,size); //设置初始页 List<Video> list = videoService.findAll(); PageInfo<Video> pageInfo = new PageInfo<>(list); Map<String,Object> map = new HashMap<>(); map.put("total_size",pageInfo.getTotal()); //总数量 map.put("list",pageInfo.getList()); //当前页数据 map.put("now_page",page); //当前页 map.put("total_page",pageInfo.getPages()); //总页数 return map; }
测试
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。