使用mybatis框架后,mybatis-generator可以为我们自动生成操作数据库(MYSQL)的*Mapper.xml文件+模型类+*Mapper接口,但是,mybatis-generator并不能为我们生成所有方法,例如根据输入的不定条件来查询数据,又比如按照某个参数升序或者降序并分页显示所查到的数据,下面介绍一下条件不定查询及按降序/升序分页显示的方法。
在BookMapper.xml中加入selectByCondition方法
1
2 parameterType="com.wn.model.Book">
3 select4
5 from t_book6
7
8 book_name=#{bookName,jdbcType=VARCHAR}9
10
11 AND author=#{author,jdbcType=VARCHAR}12
13
14 AND publish_date=#{publishDate,jdbcType=TIMESTAMP}15
16
17
在BookMapper.java中加入:
List selectByCondition(Book record);
在BookDao加入
1 public ListselectByCondition(Book book) {2 returnbookMapper.selectByCondition(book);3 }
在BookService加入
1 public ListselectByCondition(String bookName, String author, Date publishDate) {2 Book book = newBook();3 book.setBookName(bookName);4 book.setAuthor(author);5 book.setPublishDate(publishDate);6 returnbookDao.selectByCondition(book);7 }
在BookController加入
1 @RequestMapping(value = "/selectByCondition", method =RequestMethod.GET)2 public List selectByCondition(@RequestParam(value="bookName",required=false) String bookName,3 @RequestParam(value="author",required=false) String author,4 @RequestParam(value="publishDate",required=false) @DateTimeFormat(pattern = "yyyy-mm-dd HH:mm:ss")Date publishDate) {5 returnbookService.selectByCondition(bookName, author, publishDate);6 }
2、按降序/升序分页显示(基于缓存(本地缓存)花店的代码实现)
在FlowerMapper.xml中加入
1
2 parameterType="java.lang.Integer">
3 select4
5 from t_flower6 order by price DESC limit #{start}, #{size}7
在FlowerMapper.java中加入:
1 List selectLimit(@Param("start") int start, @Param("size") int size);
上述start表示开始显示记录索引,size表示显示记录的条数,为了方便找到这两个参数,这里使用了@Param注解
在FlowerDao中加入:
1 /*
2 * 传入开始显示记录的索引,即显示记录的条数,实现分页显示功能3 */
4 public List selectLimit(int start, intsize) {5 returnflowerMapper.selectLimit(start, size);6 }
在FlowerService中加入:
1 public ListselectLimit(Integer start, Integer size) {2 returnflowerDao.selectLimit(start, size);3 }
在FlowerController中加入
1 @RequestMapping(value = "/getFlowerByLimit", method =RequestMethod.GET)2 public List getFlowerByLimit(@RequestParam("start") Integer start, @RequestParam("size") Integer size) {3 returnflowerService.selectLimit(start, size);4 }