mybatis多条件查询
2019-11-28 本文已影响0人
李霖神谷
在开发中,我们需要传过来的参数可能有很多,这里设置一个vo类型的包。将此类封装多个条件。
在进行模糊分页查询的时候需要另外添加起始索引,和每页要查询的个数。
vo下的类:
public class QueryVo {
private book b;
private Integer start;
private Integer end;
test类:
public void test(){
SqlSession sqlSession= sqlSessionFactory.openSession();
bookDao bookDao= sqlSession.getMapper(bookDao.class);
QueryVo queryVo=new QueryVo();
book b=new book();
b.setName("丽");
queryVo.setB(b);
queryVo.setStart(2);
queryVo.setEnd(6);
List<book> bookList= bookDao.findAll(queryVo);
for (book book : bookList) {
System.out.println(book);
}
}
映射文件:
<mapper namespace="com.shuai.Dao.bookDao">
<select id="findAll" resultType="com.shuai.domain.book" parameterType="com.shuai.VO.QueryVo">
select * from p where name like "%"#{b.name}"%" limit #{start},#{end};
</select>
这里要注意一个问题:
(1)控制台中文乱码问题,在settings中找到filsencoding,将idear页面的编码设置一下
核心配置文件中数据库url <property name="url" value="jdbc:mysql://localhost:3306/book?useUnicode=true&characterEncoding=UTF-8&"></property>
(2)映射文件与接口文件的路径问题:
当设置
<mappers>
<package name="com.shuai.mapper"></package>
</mappers>
映射文件的路径与名称一定要与dao层的接口的名称与路径一样否则就会报错
当返回值与数据库的数值不一致的时候就需要配置resultMap="booklist
<mapper namespace="com.shuai.mapper.bookDao">
<resultMap id="booklist" type="com.shuai.domain.book">
<result property="my_password" column="password"></result>
</resultMap>
<select id="findAll" resultMap="booklist" parameterType="com.shuai.VO.QueryVo">
select * from p where name like "%"#{b.name}"%" limit #{start},#{end};
</select>
</mapper>