Mybatis-Plus -04 条件构造器与代码生成器

news/2024/11/15 4:19:53/

Mybatis-Plus--条件构造器与代码生成器

  • 1 条件构造器
    • 1.1 > < =
    • 1.2 in notin
    • 1.3 between...
    • 1.4 orderBy...
    • 1.5 like...
  • 2 代码生成器
    • 2.1 引入依赖
    • 2.2 生成器代码

1 条件构造器

通过条件构造器可以更加轻松的完成条件查询与更新(底层就是动态SQL)

1.1 > < =

  1. ge 小于 <
    • 例: lt("age", 18)—>age < 18
  2. gt 大于 >
    • 例: gt("age", 18)—>age > 18
  3. eq 等于 =
    • 例: eq("name", "老王")—>name = '老王'
@Test
public void test1(){QueryWrapper<User> queryWrapper = new QueryWrapper<>();//查询年龄大于24岁用户,姓名为tomqueryWrapper.ge("age",24).eq("name","tom");List<User> userList = userMapper.selectList(queryWrapper);userList.forEach(System.out::println);
}

1.2 in notin

  1. in

    in(R column, Collection<?> value)
    in(boolean condition, R column, Collection<?> value)
    
    • 字段 IN (value.get(0), value.get(1), …)
      • 例: in("age",{1,2,3})—>age in (1,2,3)
    in(R column, Object... values)
    in(boolean condition, R column, Object... values)
    
    • 字段 IN (v0, v1, …)
      • 例: in("age", 1, 2, 3)—>age in (1,2,3)
  2. notIn

    otIn(R column, Collection<?> value)
    notIn(boolean condition, R column, Collection<?> value)
    
    • 字段 NOT IN (value.get(0), value.get(1), …)
      • 例: notIn("age",{1,2,3})—>age not in (1,2,3)
    notIn(R column, Object... values)
    notIn(boolean condition, R column, Object... values)
    
    • 字段 NOT IN (v0, v1, …)
      • 例: notIn("age", 1, 2, 3)—>age not in (1,2,3)
@Test
public void test2(){QueryWrapper<User> queryWrapper = new QueryWrapper<>();//查询id为1,3,5queryWrapper.in("id",1,3,5);List<User> userList = userMapper.selectList(queryWrapper);userList.forEach(System.out::println);
}

1.3 between…

  1. between

    between(R column, Object val1, Object val2)
    between(boolean condition, R column, Object val1, Object val2)
    
    • BETWEEN 值1 AND 值2
      • 例: between("age", 18, 30)—>age between 18 and 30
  2. notBetween

    notBetween(R column, Object val1, Object val2)
    notBetween(boolean condition, R column, Object val1, Object val2)
    
    • NOT BETWEEN 值1 AND 值2
      • 例: notBetween("age", 18, 30)—>age not between 18 and 30
@Test
public void test3(){QueryWrapper<User> queryWrapper = new QueryWrapper<>();//查询年龄在20~28之间queryWrapper.between("age",20,28);List<User> userList = userMapper.selectList(queryWrapper);userList.forEach(System.out::println);
}

1.4 orderBy…

  1. orderByAsc

    orderByAsc(R... columns)
    orderByAsc(boolean condition, R... columns)
    
    • 排序:ORDER BY 字段, … ASC
      • 例: orderByAsc("id", "name")—>order by id ASC,name ASC
  2. orderByDesc

    orderByDesc(R... columns)
    orderByDesc(boolean condition, R... columns)
    
    • 排序:ORDER BY 字段, … DESC
      • 例: orderByDesc("id", "name")—>order by id DESC,name DESC
  3. orderBy

    orderBy(boolean condition, boolean isAsc, R... columns)
    
    • 排序:ORDER BY 字段, …
    • 例: orderBy(true, true, "id", "name")—>order by id ASC,name ASC
@Test
public void test4(){QueryWrapper<User> queryWrapper = new QueryWrapper<>();//查询按照年龄降序,如果年龄相等按照姓名降序queryWrapper.orderByDesc("age","name");List<User> userList = userMapper.selectList(queryWrapper);userList.forEach(System.out::println);
}
@Test
public void test5(){QueryWrapper<User> queryWrapper = new QueryWrapper<>();//查询姓名中包含%S%//queryWrapper.like("name","s");//查询姓名中包含%S//queryWrapper.likeLeft("name","s");//查询姓名中包含S%queryWrapper.likeRight("name","s");List<User> userList = userMapper.selectList(queryWrapper);userList.forEach(System.out::println);
}

1.5 like…

  1. like

    like(R column, Object val)
    like(boolean condition, R column, Object val)
    
    • LIKE ‘%值%’
      • 例: like("name", "王")—>name like '%王%'
  2. notLike

    notLike(R column, Object val)
    notLike(boolean condition, R column, Object val)
    
    • NOT LIKE ‘%值%’
      • 例: notLike("name", "王")—>name not like '%王%'
  3. likeLeft

    likeLeft(R column, Object val)
    likeLeft(boolean condition, R column, Object val)
    
    • LIKE ‘%值’
      • 例: likeLeft("name", "王")—>name like '%王'
  4. likeRight

    likeRight(R column, Object val)
    likeRight(boolean condition, R column, Object val)
    
    • LIKE ‘值%’
      • 例: likeRight("name", "王")—>name like '王%'
  5. notLikeLeft

    notLikeLeft(R column, Object val)
    notLikeLeft(boolean condition, R column, Object val)
    
    • NOT LIKE ‘%值’
      • 例: notLikeLeft("name", "王")—>name not like '%王'
  6. notLikeRight

    notLikeRight(R column, Object val)
    notLikeRight(boolean condition, R column, Object val)
    
    • NOT LIKE ‘值%’
      • 例: notLikeRight("name", "王")—>name not like '王%'
  7. isNull

    isNull(R column)
    isNull(boolean condition, R column)
    
    • 字段 IS NULL
      • 例: isNull("name")—>name is null
  8. isNotNull

    isNotNull(R column)
    isNotNull(boolean condition, R column)
    
    • 字段 IS NOT NULL
      • 例: isNotNull("name")—>name is not null
@Test
public void test6(){UpdateWrapper<User> updateWrapper = new UpdateWrapper<>();//修改姓名中不包含s的用户updateWrapper.notLike("name","s");User user = new User();user.setName("尼古拉斯");userMapper.update(user,updateWrapper);
}

2 代码生成器

AutoGenerator 是 MyBatis-Plus 的代码生成器,通过 AutoGenerator 可以快速生成 Entity、Mapper、Mapper XML、Service、Controller 等各个模块的代码,极大的提升了开发效率。

2.1 引入依赖

  • 代码生成器依赖
  • 模板引擎 依赖
  • 日志依赖
<!--  代码生成器依赖  -->
<dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-generator</artifactId><version>3.4.1</version>
</dependency>
<!--  模板引擎 依赖  -->
<dependency><groupId>org.apache.velocity</groupId><artifactId>velocity-engine-core</artifactId><version>2.3</version>
</dependency>
<!--   日志依赖     -->
<dependency><groupId>org.slf4j</groupId><artifactId>slf4j-api</artifactId><version>1.7.30</version>
</dependency>

2.2 生成器代码

  1. 代码生成器相关诶之
  2. 数据源配置
  3. 包配置
  4. 策略配置
  5. 其他配置
public class CodeGenerator {public static void main(String[] args) {// 代码生成器AutoGenerator mpg = new AutoGenerator();// 全局配置GlobalConfig gc = new GlobalConfig();//获取当前路径String projectPath = System.getProperty("user.dir");//设置生成代码位置gc.setOutputDir(projectPath + "/src/main/java");//设置代码文件头作者gc.setAuthor("ying");//设置是否在资源管理器打开gc.setOpen(false);//设置生成代码是否覆盖gc.setFileOverride(true);//设置去除生成代码接口中的Igc.setServiceName("%sService");mpg.setGlobalConfig(gc);// 数据源配置DataSourceConfig dsc = new DataSourceConfig();dsc.setUrl("jdbc:mysql:///java11");dsc.setDriverName("com.mysql.jdbc.Driver");dsc.setUsername("root");dsc.setPassword("123456");mpg.setDataSource(dsc);// 包配置PackageConfig pc = new PackageConfig();//设置模块名称//pc.setModuleName("shopping");pc.setParent("com.ying");pc.setEntity("pojo");pc.setMapper("mapper");pc.setService("service");pc.setController("controller");mpg.setPackageInfo(pc);// 策略配置StrategyConfig strategy = new StrategyConfig();//表名  下划线转驼峰strategy.setNaming(NamingStrategy.underline_to_camel);//字段名  下划线转驼峰strategy.setColumnNaming(NamingStrategy.underline_to_camel);//实体类是否使用lombokstrategy.setEntityLombokModel(true);//Controller是否使用RESTful风格(RestController)strategy.setRestControllerStyle(true);//设置逻辑删除字段(数据库中需要有deleted字段)strategy.setLogicDeleteFieldName("deleted");//设置乐观锁注解(数据库中需要有version字段)strategy.setVersionFieldName("version");//设置生成的表名strategy.setInclude("user");mpg.setStrategy(strategy);mpg.execute();}
}

http://www.ppmy.cn/news/50712.html

相关文章

【状态估计】电力系统状态估计的虚假数据注入攻击建模与对策(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

MPRC086444-005对其进行维护和管理,以确保系统的稳定性和可靠性。

​ MPRC086444-005对其进行维护和管理&#xff0c;以确保系统的稳定性和可靠性。 变电站自动化系统优缺点 变电站自动化系统结构 变电站自动化系统优缺点 变电站自动化系统是以计算机技术、自动控制技术及通信技术为核心&#xff0c;对变电站及配电系统各个环节进行自动化控制和…

Java线程池及拒绝策略详解

前文提到线程的使用以及线程间通信方式&#xff0c;通常情况下我们通过new Thread或者new Runnable创建线程&#xff0c;这种情况下&#xff0c;需要开发者手动管理线程的创建和回收&#xff0c;线程对象没有复用&#xff0c;大量的线程对象创建与销毁会引起频繁GC&#xff0c;…

数据湖Iceberg-Hive集成Iceberg(3)

文章目录 Hive集成Iceberg环境准备Hive与Iceberg的版本对应关系如下上传jar包&#xff0c;拷贝到Hive的auxlib目录中修改hive-site.xml&#xff0c;添加配置项启动 HMS 服务启动 Hadoop 创建和管理 Catalog默认使用 HiveCatalog指定 Catalog 类型使用 HiveCatalog使用 HadoopCa…

阿里云ecs服务器挂载oss

一、 wget http://gosspublic.alicdn.com/ossfs/ossfs_1.80.7_ubuntu20.04_amd64.deb sudo gdebi ossfs_1.80.7_ubuntu20.04_amd64.deb 二、 echo BucketName:yourAccessKeyId:yourAccessKeySecret > /etc/passwd-ossfs 三、 chmod 640 /etc/passwd-ossfs 四、 mkdi…

JAVA数组元素的静态初始化和动态初始化------JAVA入门基础教程

package C05;import java.util.Scanner;public class Arr {public static void main(String args[]){double[] prices;//静态初始化:数组初始化与数组元素赋值同时进行prices new double[]{20.32,43.21,43.22};String [] foods new String[4];//动态初始化:数组初始化与数组元…

IDEA 用上这款免费 GPT4 插件,生产力爆表了

早前给大家分享过GPT的一些玩法&#xff0c;今天再分享给一款 IDE 插件&#xff1a;Bito-ChatGPT &#xff0c;安装就能直接在IDE中使用 GPT&#xff0c;就算是不会魔法&#xff0c;同样也能使用&#xff1b; 最重要是免费使用&#xff0c;速度也非常可观&#xff0c;今天分享…

一些常用的git命令

git checkout -b [branch-name] 新建并切换分支 git branch -d [branch-name] 删除分支 git switch [branch-name] 切换分支 git merge [branch] 合并指定分支到当前分支 git branch -D [branch-name] 强制删除一个没有合并的分支 git log -3 查看最新3条commit日志 git reflo…