pom.xml
容易出现版本冲突
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.example</groupId>
<artifactId>new_demo</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
<version>2.2.3.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<version>2.2.3.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>2.2.3.RELEASE</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.45</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.4.1</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.16.20</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
application.properties
server.port=8823
spring.datasource.data-password=root
spring.datasource.data-username=root
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/springboottest?useUnicode=true&characterEncoding=utf-8&useSSL=true
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
logging.level.com.plus.mapper=debug
#日志
mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
# 逻辑删除
mybatis-plus.global-config.db-config.logic-delete-value=0
mybatis-plus.global-config.db-config.logic-not-delete-value=1
启动类:
/**
* @description: 启动类
* @author: zms
* @create: 2021-06-22
**/
@SpringBootApplication
@MapperScan("com.plus.mapper")
public class Myapplication {
public static void main(String[] args) {
SpringApplication.run(Myapplication.class,args);
}
}
Controller 层:
@Controller
public class TravelController {
@Resource
private UserService service;
@Autowired
private UserMapper mapper;
@ResponseBody
@RequestMapping("/list")
public String list(){
List<User> list = service.selList();
System.out.print("===");
list.forEach(System.out::println);
return "ok";
}
@ResponseBody
@RequestMapping("/add")
public String add(){
User bean=new User();
bean.setUsername("昌长");
bean.setPassword("123p");
bean.setNickname("比昌长");
bean.setEmail("123456@qq.com");
boolean save = service.save(bean);
String code="ok";
if (!save){
code="NO";
System.out.print("===");
}
return code;
}
@ResponseBody
@RequestMapping("/update/{id}")
public String update(@PathVariable("id") Integer id){
User bean=new User();
bean.setId(id);
bean.setUsername("昌长123");
bean.setPassword("123p");
bean.setNickname("比昌长12");
bean.setEmail("00123456@qq.com");
boolean save = service.updateById(bean);
String code="update==ok";
if (!save){
code="NO";
System.out.print("===");
}
return code;
}
@ResponseBody
@RequestMapping("/delete/{id}")
public Integer delete(@PathVariable("id") Integer id){
User bean=new User();
bean.setId(id);
bean.setUsername("昌长123");
bean.setPassword("123p");
bean.setNickname("比昌长12");
bean.setEmail("00123456@qq.com");
int i = mapper.deleteById(id);
return i;
}
@ResponseBody
@RequestMapping("/lock")
public Integer lock(){
User bean=new User();
bean.setId(6);
bean.setUsername("昌长000");
bean.setPassword("www");
User bean2=new User();
bean2.setId(6);
bean2.setUsername("昌长666");
bean2.setPassword("com");
boolean i2 = service.updateById(bean2);
boolean i = service.updateById(bean);
return 1;
}
@ResponseBody
@RequestMapping("/page")
public Integer page(){
Page<User> page =new Page<>(2,2);
Page<User> page1 = mapper.selectPage(page, null);
System.err.println("================");
page1.getRecords().forEach(System.out::println);
return 1;
}
//构造器
@ResponseBody
@RequestMapping("/wrapper")
public Integer wrapper(){
QueryWrapper<User> wrapper = new QueryWrapper<>();
// wrapper.lambda().isNotNull(true,User::getCreateUser);
// wrapper.eq("username","admin").isNotNull("create_user");
// wrapper.between("id",2,3);
// wrapper.inSql("id","select id from sys_user where id>3");
//mapper.selectObjs(wrapper);
wrapper.orderByDesc("id");
List<User> list = mapper.selectList(wrapper);
return 1;
}
service:
public interface UserService extends IService<User> {
}
serviceImpl :
@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {
}
mapper:
@Mapper
@Repository
public interface UserMapper extends BaseMapper<User> {
}
自动填充
:编写处理器处理注解
@Component
public class MyMetaObjectHandler implements MetaObjectHandler {
//插入时候的填充策略
@Override
public void insertFill(MetaObject metaObject) {
//default MetaObjectHandler
//setFieldValByName(String fieldName, Object fieldVal, MetaObject metaObject)
this.setFieldValByName("createTime", new Date(), metaObject);
this.setFieldValByName("updateTime", new Date(), metaObject);
}
//更新时候的填充策略
@Override
public void updateFill(MetaObject metaObject) {
this.setUpdateFieldValByName("updateTime", new Date(), metaObject);
}
}
自动填充 实体类 pojo中 加注解
@TableField(fill = FieldFill.INSERT )
private Date createTime;// datetime 创建时间
@TableField(fill = FieldFill.UPDATE)
private Date updateTime;// datetime 修改时间
@Data
@AllArgsConstructor
@NoArgsConstructor
@TableName("sys_user")
public class User {
@TableId(type = IdType.AUTO)
private Integer id ;//主键自增,
private String username ;// '账号',
private String password ;// '密码',
private String nickname ;// '昵称',
private String email ;// '邮箱',
@TableLogic
private Integer status ;// 逻辑删除)',
@Version
private Integer version ;// 0:乐观锁锁,
private String createUser;// ,
private String updateUser;// ,
@TableField(fill = FieldFill.INSERT )
private Date createTime;// datetime ,
@TableField(fill = FieldFill.UPDATE)
private Date updateTime;// datetime DEFAULT NULL,
}
mybatisplus 配置类
@Configuration
@EnableTransactionManagement
@MapperScan("com.plus.mapper")
public class MybatisPlusConfig {
//注册乐观锁插件
@Bean
public OptimisticLockerInnerInterceptor optimisticLockerInnerInterceptor(){
return new OptimisticLockerInnerInterceptor();
}
//分页插件
@Bean
public PaginationInterceptor paginationInterceptor() {
PaginationInterceptor paginationInterceptor = new PaginationInterceptor();
return paginationInterceptor;
}
}
代码自动生成器
dao、pojo、service、controller都编写完成
AutoGenerator 是 MyBatis-Plus 的代码生成器,通过 AutoGenerator 可以快速生成 Entity、Mapper、Mapper XML、Service、Controller 等各个模块的代码
测试:
public class Code {
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("ChanV");
gc.setOpen(false);
gc.setFileOverride(false); //是否覆盖
gc.setServiceName("%sService"); //去Service的I前缀
gc.setIdType(IdType.ID_WORKER);
gc.setDateType(DateType.ONLY_DATE);
gc.setSwagger2(true);
mpg.setGlobalConfig(gc);
//2、设置数据源
DataSourceConfig dsc = new DataSourceConfig();
dsc.setUrl("jdbc:mysql://localhost:3306/mybatis-plus?useSSL=false&useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT%2B8");
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.setModuleName("blog");
pc.setParent("com.chanv");
pc.setEntity("pojo");
pc.setMapper("mapper");
pc.setService("service");
pc.setController("controller");
mpg.setPackageInfo(pc);
//4、策略配置
StrategyConfig strategy = new StrategyConfig();
strategy.setInclude("user"); //设置要映射的表名
strategy.setNaming(NamingStrategy.underline_to_camel);
strategy.setColumnNaming(NamingStrategy.underline_to_camel);
strategy.setEntityLombokModel(true); //自动lombok
strategy.setLogicDeleteFieldName("deleted");
//自动填充配置
TableFill createTime = new TableFill("create_time", FieldFill.INSERT);
TableFill updateTime = new TableFill("update_time", FieldFill.UPDATE);
ArrayList<TableFill> tableFills = new ArrayList<>();
tableFills.add(createTime);
tableFills.add(updateTime);
strategy.setTableFillList(tableFills);
//乐观锁
strategy.setVersionFieldName("version");
strategy.setRestControllerStyle(true);
strategy.setControllerMappingHyphenStyle(true); //localhost:8080/hello_id_2
mpg.setStrategy(strategy);
mpg.execute(); //执行代码构造器
}
}