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>
上一篇下一篇

猜你喜欢

热点阅读