MybatisPlus环境的搭建和CRUD接口的简单使用以及代码构造器的简单尝试(自用,备忘)
1.依赖引入
支持mysql 5.7的mysql-connector-java
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.11</version>
</dependency>
mybatisplus
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.2.0</version>
</dependency>
mybatisplus-generator
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>3.2.0</version>
</dependency>
velocity引擎(如果使用构造器选择velocity引擎则需要添加该依赖)
<dependency>
<groupId>org.apache.velocity</groupId>
<artifactId>velocity-engine-core</artifactId>
<version>2.2</version>
</dependency>
2.properties有关数据库和MP的配置
spring.datasource.url=jdbc:mysql://localhost:端口号/数据库名?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2B8
spring.datasource.username=用户名
spring.datasource.password=密码
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
mybatis-plus.mapper-locations=classpath:mapper/*.xml
3.CRUD接口的简单使用(推荐使用postman进行测试)
package com.example.demo.controller;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.example.demo.entity.User;
import com.example.demo.generator.UserGenerator;
import com.example.demo.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.sql.Wrapper;
import java.util.List;
@RestController
@RequestMapping("/user")
public class UserController {
@Autowired
private UserService userService;
@RequestMapping("/selectById")
public User selectById(@RequestParam(value = "id") Integer id){
return userService.getById(id);
}
@RequestMapping("/selectList")
public List<User> selectList(){
//使用eq返回部分字段
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.select("name","age").like("name","J");
return userService.list(queryWrapper);
}
//使用构造器进行查询
@RequestMapping("/selectByName")
public User selectByName(@RequestParam("name") String name){
//使用eq进行单条件查询
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("name",name);
//使用实体类进行单条件查询
// User user=new User();
// user.setName(name);
// QueryWrapper<User> queryWrapper = new QueryWrapper<>(user);
//使用eq实现多条件查询
// QueryWrapper<User> queryWrapper = new QueryWrapper<>();
// queryWrapper.between("age",15,20)
// .like("name",name);
return userService.getOne(queryWrapper);
}
@RequestMapping("/updateOrInsert")
public boolean updateOrInsert(@RequestBody User user){
//插入或更新函数,根据传入实体类id值判断进行哪个操作
return userService.saveOrUpdate(user);
}
//调用代码生成器的方法
@RequestMapping("/generator")
public void generator(){
UserGenerator userGenerator=new UserGenerator();
userGenerator.generator();
}
}
3.生成器具体方法的实现
package com.example.demo.generator;
import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
import com.baomidou.mybatisplus.generator.config.GlobalConfig;
import com.baomidou.mybatisplus.generator.config.PackageConfig;
import com.baomidou.mybatisplus.generator.config.StrategyConfig;
import com.baomidou.mybatisplus.generator.config.rules.DateType;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
public class UserGenerator {
public void generator(){
//创建生成器
AutoGenerator mpg = new AutoGenerator();
//全局配置
GlobalConfig gc = new GlobalConfig();
String projectPath = System.getProperty("user.dir");
gc.setOutputDir(projectPath + "/src/main/java");
gc.setAuthor("why");
gc.setOpen(false); //生成后是否打开资源管理器
gc.setFileOverride(false); //重新生成时文件是否覆盖
gc.setServiceName("%sService"); //去掉Service接口的首字母I
gc.setIdType(IdType.ID_WORKER_STR); //主键策略
gc.setDateType(DateType.ONLY_DATE);//定义生成的实体类中日期类型
gc.setSwagger2(false);//开启Swagger2模式
mpg.setGlobalConfig(gc);
// 数据源配置
DataSourceConfig dsc = new DataSourceConfig();
dsc.setUrl("jdbc:mysql://localhost:3306/数据库名?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2B8");
dsc.setDriverName("com.mysql.cj.jdbc.Driver");
dsc.setUsername("用户名");
dsc.setPassword("密码");
dsc.setDbType(DbType.MYSQL);
mpg.setDataSource(dsc);
// 包配置
PackageConfig pc = new PackageConfig();
pc.setModuleName(null); //模块名
pc.setParent("com.example.demo"); //整体生成的代码根目录
pc.setController("controller"); //controller根目录名字,如果没有则创建,有的话则自动在这个目录下生成。
pc.setEntity("entity"); //实体类根目录
pc.setService("service"); //服务层根目录,不配置impl实现类的目录的话,会在service根目录下创建一个impl的目录,在该目录下生成实现类
pc.setMapper("mapper"); //mapper根目录
mpg.setPackageInfo(pc);
// 策略配置
StrategyConfig strategy = new StrategyConfig();
strategy.setInclude("表名");//对那一张表生成代码
strategy.setNaming(NamingStrategy.underline_to_camel);//数据库表映射到实体的命名策略
strategy.setTablePrefix(pc.getModuleName() + "_"); //生成实体时去掉表前缀
strategy.setColumnNaming(NamingStrategy.underline_to_camel);//数据库表字段映射到实体的命名策略
strategy.setEntityLombokModel(true); // lombok 模型 @Accessors(chain = true) setter链式操作
strategy.setRestControllerStyle(true); //restful api风格控制器
strategy.setControllerMappingHyphenStyle(true); //url中驼峰转连字符
mpg.setStrategy(strategy);
// 执行
mpg.execute();
}
}