mybatis-plus高级查询

时间:2024-10-13 07:59:40

mybatis-plus的条件构建器

对于User类中有而user表中没有的属性需要加第二个注解@TableField(exist = false),表示排除User类中的属性.

首先看一个条件构建器实例的简单实用.

 
public void test(){
       EntityWrapper ew=new EntityWrapper();
       (new User()); String name="wang"; Integer age=16; ("name = {0}",name).andNew("age > {0}",age).orderBy("age"); List<User> list = (ew); Page page2 = (page, ew); }

 

这里使用了一个条件包装类EntityWrapper,来进行对sql语句的拼装,原理也很好理解,上面的代码中,第一个list查询的结果就是查询数据库中name=wang并且age>16岁的所有记录并按照age排序.而第二个查询就是再多加一个分页的功能.

基本上来说,使用EntityWrapper可以简单地完成一些条件查询,但如果查询方法使用频率很高的话还是建议自己写在UserMapper里.

那么自定义的mapper方法能不能使用EntityWrapper呢,当然也是可以的.

文档中给了一个这样的例子.

1.在Mappper中定义:

List<User> selectMyPage(RowBounds rowBounds, @Param("ew") Wrapper<T> wrapper);

 2.在mapper文件中定义:

<select  resultType="User">

SELECT * FROM user ${}

</select>

 对于EntityMapper的条件拼接,基本可以实现sql中常用的where,and,or,groupby,orderby等语法,具体构建方法可以灵活组合.

 
@Test
public void testTSQL11() {
    /*
     * 实体带查询使用方法  输出看结果
     */
    (new User(1)); ("name={0}", "'zhangsan'").and("id=1") .orNew("status={0}", "0").or("status=1") .notLike("nlike", "notvalue") .andNew("new=xx").like("hhh", "ddd") .andNew("pwd=11").isNotNull("n1,n2").isNull("n3") .groupBy("x1").groupBy("x2,x3") .having("x1=11").having("x3=433") .orderBy("dd").orderBy("d1,d2"); (()); }