MYSQL复杂查询(条件不定查询+按降序/升序分页显示)

使用mybatis框架后,mybatis-generator可以为我们自动生成操作数据库(MYSQL)的*Mapper.xml文件+模型类+*Mapper接口,但是,mybatis-generator并不能为我们生成所有方法,例如根据输入的不定条件来查询数据,又比如按照某个参数升序或者降序并分页显示所查到的数据,下面介绍一下条件不定查询及按降序/升序分页显示的方法。

1、按条件不定查询(项目基于SSMM(spring+springmvc+maven+mybatis)框架整合的代码进行举例)

  • 在BookMapper.xml中加入selectByCondition方法
 1     <select id="selectByCondition" resultMap="BaseResultMap"
 2         parameterType="com.wn.model.Book">
 3         select
 4         <include refid="Base_Column_List" />
 5         from t_book
 6         <where>
 7             <if test="bookName!=null">
 8                 book_name=#{bookName,jdbcType=VARCHAR}
 9             </if>
10             <if test="author!=null">
11                 AND author=#{author,jdbcType=VARCHAR}
12             </if>
13             <if test="publishDate!=null">
14                 AND publish_date=#{publishDate,jdbcType=TIMESTAMP}
15             </if>
16         </where>
17     </select>
  • 在BookMapper.java中加入:
List<Book> selectByCondition(Book record);
  • 在BookDao加入
1     public List<Book> selectByCondition(Book book) {
2         return bookMapper.selectByCondition(book);
3     }
  • 在BookService加入
1     public List<Book> selectByCondition(String bookName, String author, Date publishDate) {
2         Book book = new Book();
3         book.setBookName(bookName);
4         book.setAuthor(author);
5         book.setPublishDate(publishDate);
6         return bookDao.selectByCondition(book);
7     }
  • 在BookController加入
1     @RequestMapping(value = "/selectByCondition", method = RequestMethod.GET)
2     public List<Book> 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         return bookService.selectByCondition(bookName, author, publishDate);
6     }

2、按降序/升序分页显示(基于缓存(本地缓存)花店的代码实现)

  • 在FlowerMapper.xml中加入
1    <select id="selectLimit" resultMap="BaseResultMap"
2         parameterType="java.lang.Integer">
3         select
4         <include refid="Base_Column_List" />
5         from t_flower
6         order by price DESC limit #{start}, #{size}
7     </select>
  • 在FlowerMapper.java中加入:
1 List<Flower> selectLimit(@Param("start") int start, @Param("size") int size);

上述start表示开始显示记录索引,size表示显示记录的条数,为了方便找到这两个参数,这里使用了@Param注解

  • 在FlowerDao中加入:
1      /*
2      * 传入开始显示记录的索引,即显示记录的条数,实现分页显示功能
3      */
4     public List<Flower> selectLimit(int start, int size) {
5         return flowerMapper.selectLimit(start, size);
6     }
  • 在FlowerService中加入:
1     public List<Flower> selectLimit(Integer start, Integer size) {
2         return flowerDao.selectLimit(start, size);
3     }
  • 在FlowerController中加入
1     @RequestMapping(value = "/getFlowerByLimit", method = RequestMethod.GET)
2     public List<Flower> getFlowerByLimit(@RequestParam("start") Integer start, @RequestParam("size") Integer size) {
3         return flowerService.selectLimit(start, size);
4     }
时间: 2024-10-29 19:10:21

MYSQL复杂查询(条件不定查询+按降序/升序分页显示)的相关文章

指定查询条件,查询对应的集合List(单表)

TestDao.java(测试类) @Test public void findCollectionByConditionNoPage(){  ApplicationContext ac = new ClassPathXmlApplicationContext("beans.xml");  IElecTextService elecTextService = (IElecTextService) ac.getBean(IElecTextService.SERVICE_NAME);   

SolrJ查询条件组合查询实现——(十六)

DAO 功能:接收service层传递过来的参数,根据参数查询索引库,返回查询结果. 返回值:一个商品列表List<ProductModel>. package cn.qlq.jd.dao; import java.util.ArrayList; import java.util.List; import java.util.Map; import org.apache.solr.client.solrj.SolrQuery; import org.apache.solr.client.sol

jeecg 扩展封装查询条件 时间段查询

使用jeecg框架开发的小伙伴们知道,添加查询条件,通常是我们加一个配置(query="true")就可以将该字段设置为查询条件.简单方便.但是这样的配置查询条件仅适用于输入框输入查询和下拉框查询(如果你配置的该字段使用了replace).显然,这样的查询条件根本满足不了我们的需求,最常见的就是时间段查询,以及时间段与其他字段混合查询的情况,下面简单说一下解决方法. 自定义查询条件, 第一步:将字段中所有配置的query="true",改为query="f

[转载]MySQL开发中常用的查询语句总结

1.查询数值型数据: SELECT * FROM tb_name WHERE sum > 100; 查询谓词:>,=,<,<>,!=,!>,!<,=>,=< 2.查询字符串 SELECT * FROM tb_stu  WHERE sname  =  ‘Cricode.com’ SELECT * FROM tb_stu  WHERE sname like ‘Uncle%Too’ SELECT * FROM tb_stu  WHERE sname like

thinkphp-where-数组条件-普通查询

语法 Db::table(表名)->where(条件)->select(); 示例 $map['name'] = 'thinkphp'; $map['status'] = 1; // 把查询条件传入查询方法 Db::table('think_user')->where($map)->select(); 对应原始sql SELECT * FROM think_user WHERE `name`='thinkphp' AND status=1

Thinkphp 查询条件 and 和 or同时使用即复合查询

        thinkphp 3.2快捷查询OR查询&分割表示AND查询讲解         快捷查询方式是一种多字段查询的简化写法,可以进一步简化查询条件的写法,在多个字段之间用|分割表示OR查询,用&分割表示AND查询,可以实现下面的查询,例如:         一.不同字段相同的查询条件 $User = M("User"); // 实例化User对象             $map['name|title'] = 'thinkphp';           

ThinkPHP可以支持直接使用字符串作为查询条件

ThinkPHP可以支持直接使用字符串作为查询条件,但是大多数情况推荐使用数组或者对象来作为查询条件,因为会更加安全. 大理石平台哪家好 一.使用字符串作为查询条件 这是最传统的方式,但是安全性不高,例如: $User = M("User"); // 实例化User对象 $User->where('type=1 AND status=1')->select(); 最后生成的SQL语句是 SELECT * FROM think_user WHERE type=1 AND st

hibernate查询方式和查询策略

1.Hibernate框架的查询方式    1) 唯一标识OID的检索方式        * session.get(对象.class,OID)    2) 对象的导航的方式        3) HQL的检索方式        * Hibernate Query Language    -- Hibernate的查询语言        4) QBC的检索方式        * Query By Criteria    -- 条件查询        5) SQL检索方式(了解)        *

数据库基础(2):简单查询和连接查询

1. 实验内容 建的数据库如下: 1 CREATE TABLE Depts 2 ( 3 Dno CHAR(20) PRIMARY KEY, 4 Dname CHAR(20) NOT NULL 5 ) 6 INSERT INTO Depts VALUES('D01','自动化') 7 INSERT INTO Depts VALUES('D02','计算机') 8 INSERT INTO Depts VALUES('D03','数学') 9 INSERT INTO Depts VALUES('D04