①查询name不为空,email不为空,age>=25
@Test
public void testWarpper1(){
QueryWrapper<User> wrapper = new QueryWrapper<>();
wrapper
.isNotNull("name")
.isNotNull("email")
.ge("age",25);//ge:大于等于
List<User> userList = userMapper.selectList(wrapper);
userList.forEach(System.out::println);
}
②查询name为laoli的唯一数据
@Test
public void testWarpper2(){
QueryWrapper<User> wrapper = new QueryWrapper<>();
wrapper
.eq("name","laoli");
//selectOne只返回1个,返回值超过一个就报错
User user = userMapper.selectOne(wrapper);
System.out.println(user);
}
③查询age在25-30岁之间的数据个数
@Test
public void testWarpper3(){
QueryWrapper<User> wrapper = new QueryWrapper<>();
wrapper
.between("age","25","30");
//selectCount
Integer count = userMapper.selectCount(wrapper);
System.out.println(count);
}
④模糊查询 名字不包含o 邮箱包含cn
@Test
public void testWarpper4(){
QueryWrapper<User> wrapper = new QueryWrapper<>();
wrapper
.notLike("name","o")
.like("email","cn");
//selectMaps
List<Map<String, Object>> maps = userMapper.selectMaps(wrapper);
maps.forEach(System.out::println);
}
⑤子查询
@Test
public void testWarpper5(){
QueryWrapper<User> wrapper = new QueryWrapper<>();
wrapper
.inSql("id","select `id` from `user` where `name` = 'laowang'");
//selectObjs
List<Object> objects = userMapper.selectObjs(wrapper);
objects.forEach(System.out::println);
}
⑥通过id排序
@Test
public void testWarpper6(){
QueryWrapper<User> wrapper = new QueryWrapper<>();
wrapper
.orderByDesc("id");
//selectList
List<User> userList = userMapper.selectList(wrapper);
userList.forEach(System.out::println);
}
代码生成器
官方网址:https://baomidou.com/pages/d357af/
一、在pom.xml中引入包
<!-- 代码生成器 -->
<!-- https://mvnrepository.com/artifact/com.baomidou/mybatis-plus-generator -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>3.4.1</version>
</dependency>
<!-- 模板引擎 -->
<!-- https://mvnrepository.com/artifact/org.apache.velocity/velocity-engine-core -->
<dependency>
<groupId>org.apache.velocity</groupId>
<artifactId>velocity-engine-core</artifactId>
<version>2.3</version>
</dependency>
二、编写GeneratorCode文件
public class GeneratorCode {
public static void main(String[] args) {
// 需要构建一个 代码自动生成器 对象
AutoGenerator mpg = new AutoGenerator();
// 1、全局配置
GlobalConfig gc = new GlobalConfig();
String projectPath = System.getProperty("user.dir");
gc.setOutputDir(projectPath + "/src/main/java");//设置代码生成路径
gc.setAuthor("小孩");//设置项目作者名称
gc.setOpen(false);//是否打开生成目录
gc.setFileOverride(false); //是否覆盖以前文件
gc.setServiceName("%sService"); // 去Service的I前缀
gc.setIdType(IdType.AUTO);//设置主键策略
gc.setBaseResultMap(true);//生成基本ResultMap
gc.setBaseColumnList(true);//生成基本ColumnList
gc.setDateType(DateType.ONLY_DATE);//设置时间类型
gc.setSwagger2(true);//设置开启swagger
mpg.setGlobalConfig(gc);
//2、设置数据源
DataSourceConfig dsc = new DataSourceConfig();
dsc.setUrl("jdbc:mysql://localhost:3306/hahuhu?characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2B8&rewriteBatchedStatements=true");
dsc.setDriverName("com.mysql.cj.jdbc.Driver");
dsc.setUsername("root");
dsc.setPassword("root");
dsc.setDbType(DbType.MYSQL);
mpg.setDataSource(dsc);
//3、包的配置
PackageConfig pc = new PackageConfig();
pc.setParent("com");
pc.setModuleName("dfrz");
pc.setEntity("pojo");
pc.setMapper("mapper");
pc.setService("service");
pc.setController("controller");
mpg.setPackageInfo(pc);
// 自定义配置
InjectionConfig cfg = new InjectionConfig() {
@Override
public void initMap() {
}
};
//如果模板引擎是 velocity
String templatePath = "/templates/mapper.xml.vm";
// 自定义输出配置
List<FileOutConfig> focList = new ArrayList<>();
// 自定义配置会被优先输出
focList.add(new FileOutConfig(templatePath) {
@Override
public String outputFile(TableInfo tableInfo) {
// 自定义输出文件名 , 如果你 Entity 设置了前后缀、此处注意 xml 的名称会跟着发生变化!!
return projectPath + "/src/main/resources/mapper/" + tableInfo.getEntityName() + "Mapper" + StringPool.DOT_XML;
}
});
cfg.setFileOutConfigList(focList);
mpg.setCfg(cfg);
// 配置模板
TemplateConfig templateConfig = new TemplateConfig();
templateConfig.setXml(null);
mpg.setTemplate(templateConfig);
//4、策略配置
StrategyConfig strategy = new StrategyConfig();
strategy.setInclude("t_goods"); // 设置要映射的表名
strategy.setNaming(NamingStrategy.underline_to_camel);
strategy.setColumnNaming(NamingStrategy.underline_to_camel);
strategy.setEntityLombokModel(true); // 自动lombok;
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);
// 乐观锁
strategy.setVersionFieldName("version");
strategy.setRestControllerStyle(true);
strategy.setControllerMappingHyphenStyle(true);
mpg.setStrategy(strategy);
mpg.execute(); //执行
}
}
三、运行代码,生成相应文件