mybatis-plus高级查询

mybatis-plus的条件构建器

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

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



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


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

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

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

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

  1.在Mappper中定义:

  ListselectMyPage(RowBounds rowBounds@Param("ew") Wrapper> wrapper);

   2.在mapper文件中定义:

id="selectMyPageresultType="User">

   SELECT * FROM user ${ew.sqlSegment}

>

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



@Test
public void testTSQL11() {
    /* * 实体带查询使用方法 输出看结果 */ ew.setEntity(new User(1)); ew.where("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"); System.out.println(ew.getSqlSegment()); }


你可能感兴趣的:(Java和Jvm)