[学习笔记] MyBatis-Plus之条件构造与代码生成器
# 学习 # · 2021-05-12
条件构造器Wrapper
1、条件构造器(Wrapper):用于构造查询条件以实现复杂SQL语句。
2、条件构造器的常见使用方法:https://mp.baomidou.com/guide/wrapper.html#abstractwrapper
3、列表查询法:查询ID为1,姓名为张三的User。
@Test
void selectByMap() {
Map<String, Object> map = new HashMap<>();
map.put("id", 1);
map.put("name", "张三");
List<User> users = userMapper.selectByMap(map);
System.out.println(users);
}
3、条件构造器查询:
// 查询王姓,年龄大于20岁的User
@Test
public void selectWrapper() {
QueryWrapper queryWrapper = new QueryWrapper();
queryWrapper.likeRight("name", "王");
queryWrapper.gt("age", 20);
List list = userMapper.selectList(queryWrapper);
System.out.println(list);
}
// 查询王姓,年龄20-40岁,email不为空的User
@Test
public void selectWrapper01() {
QueryWrapper queryWrapper = new QueryWrapper();
queryWrapper.likeRight("name", "王");
queryWrapper.between("age", 20, 40);
queryWrapper.isNotNull("email");
List list = userMapper.selectList(queryWrapper);
System.out.println(list);
}
// 查询王姓或年龄大于30的User并按照年龄降序排列
@Test
public void selectWrapper02() {
QueryWrapper queryWrapper = new QueryWrapper();
queryWrapper.likeRight("name", "王");
queryWrapper.or();
queryWrapper.ge("age", 30);
queryWrapper.orderByDesc("age");
queryWrapper.orderByAsc("id");
List list = userMapper.selectList(queryWrapper);
System.out.println(list);
}
5、Wrapper传入实体参数:
// 修改User实体类,设置name前后模糊
@TableField(condition = SqlCondition.LIKE)
private String name;
// 测试类
@Test
public void selectWrapper12() {
User user = new User();
user.setName("王");
user.setAge(21);
QueryWrapper<User> queryWrapper = new QueryWrapper<>(user);
List<User> users = userMapper.selectList(queryWrapper);
System.out.println(list);
}
代码自动生成器
1、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.2</version>
</dependency>
<dependency>
<groupId>org.apache.velocity</groupId>
<artifactId>velocity-engine-core</artifactId>
<version>2.3</version>
</dependency>
(2)编写代码:
/**
* @Package: com.example.demo
* @Description: 代码自动生成器
* @Author 多仔
*/
public class MyCodeAutoGenerator {
public static void main(String[] args) {
/**
* 构建代码自动生成器对象
**/
AutoGenerator mpg = new AutoGenerator();
/**
* 全局策略配置
**/
GlobalConfig globalConfig = new GlobalConfig();
// 设置生成目录
String projectPath = System.getProperty("user.dir");
globalConfig.setOutputDir(projectPath+"/src/main/java");
// 设置author
globalConfig.setAuthor("多仔");
globalConfig.setOpen(false);
// 是否覆盖文件
globalConfig.setFileOverride(false);
// 去除Service的I前缀
globalConfig.setServiceName("%sService");
// 主键生成策略
globalConfig.setIdType(IdType.AUTO);
// 配置Swagger
globalConfig.setSwagger2(true);
mpg.setGlobalConfig(globalConfig);
/**
* 数据源配置
*/
DataSourceConfig dataSourceConfig = new DataSourceConfig();
dataSourceConfig.setUrl("jdbc:mysql://localhost:3306/mybatisplus_demo?serverTimezone=UTC");
dataSourceConfig.setDriverName("com.mysql.cj.jdbc.Driver");
dataSourceConfig.setUsername("root");
dataSourceConfig.setPassword("123456");
dataSourceConfig.setDbType(DbType.MYSQL);
mpg.setDataSource(dataSourceConfig);
/**
* 配置生成包
**/
PackageConfig packageConfig = new PackageConfig();
// 模块名称
packageConfig.setModuleName("demo");
// 包名
packageConfig.setParent("com.example");
// 设置包
packageConfig.setEntity("pojo");
packageConfig.setMapper("mapper");
packageConfig.setService("service");
packageConfig.setController("packageConfig");
mpg.setPackageInfo(packageConfig);
/**
* 生成策略配置
**/
StrategyConfig strategy = new StrategyConfig();
// 设置要映射的表名
strategy.setInclude("user");
// 自动驼峰命名
strategy.setNaming(NamingStrategy.underline_to_camel);
strategy.setColumnNaming(NamingStrategy.underline_to_camel);
// 自动lombok
strategy.setEntityLombokModel(true);
// 逻辑删除字段
strategy.setLogicDeleteFieldName("deleted");
// 自动填充配置
TableFill gmtCreate = new TableFill("gmt_create", FieldFill.INSERT);
TableFill gmtModified = new TableFill("gmt_modified", FieldFill.INSERT_UPDATE);
ArrayList<TableFill> tableFills = new ArrayList<>();
tableFills.add(gmtCreate);
tableFills.add(gmtModified);
strategy.setTableFillList(tableFills);
/**
* 执行操作
**/
mpg.execute();
}
}
如无特殊说明,本博所有文章均为博主原创。
如若转载,请注明出处:一木林多 - https://www.l5v.cn/archives/301/
如若转载,请注明出处:一木林多 - https://www.l5v.cn/archives/301/
评论