记录新建springboot项目的过程,配置mybatis-plus相关依赖,并读取数据库中的数据,数据表createTime和updateTime字段在添加数据和修改数据时自动生成和修改
1、选择idea中创建springboot的组件
2、Group与Artifact中输入名称并选择java版本
3、选择项目所需的插件
如果是前后端分离项目可以不用选择Thymeleaf
4、选择文件保存路径
5、创建成功后等待项目初始化
6、pom.xml中引入mybatis-plus的依赖(不能使用mybatis-plus,必须使用mybatis-plus-boot-starter,因为是在springboot工程中,需要有对应关系)
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.4.3.1</version>
</dependency>
7、将resources下的application.properties文件改为application.yml,并加入数据源配置
spring:
datasource:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://localhost:3306/DataBaseName?useUnicode=true&characterEncoding=UTF-8
username: root
password: root
# 打印sql
mybatis-plus:
configuration:
mapUnderscoreToCamelCase: true
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
8、mybatis-plus根据数据表自动生成代码,包括实体类、Mapper、Service、ServiceImpl、Controller
- 引入依赖
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>3.3.2</version>
</dependency>
<dependency>
<groupId>org.apache.velocity</groupId>
<artifactId>velocity</artifactId>
<version>1.7</version>
</dependency>
- 创建启动类
import com.baomidou.mybatisplus.annotation.DbType;
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.NamingStrategy;
public class Main {
public static void main(String[] args){
// 创建generator对象
AutoGenerator autoGenerator = new AutoGenerator();
// 设置数据源
DataSourceConfig dataSourceConfig = new DataSourceConfig();
dataSourceConfig.setDbType(DbType.MYSQL);
dataSourceConfig.setDriverName("com.mysql.cj.jdbc.Driver");
dataSourceConfig.setUsername("root");
dataSourceConfig.setPassword("root");
dataSourceConfig.setUrl("jdbc:mysql://localhost:3306/DataBaseName?useUnicode=true&characterEncoding=UTF-8");
autoGenerator.setDataSource(dataSourceConfig);
// 全局配置
GlobalConfig globalConfig = new GlobalConfig();
globalConfig.setOpen(false);
globalConfig.setOutputDir(System.getProperty("user.dir")+"/src/main/java");
globalConfig.setAuthor("ws");
globalConfig.setServiceName("%sService");
autoGenerator.setGlobalConfig(globalConfig);
// 包信息
PackageConfig packageConfig = new PackageConfig();
packageConfig.setParent("com.test.allstart");
packageConfig.setEntity("entity");
packageConfig.setMapper("mapper");
packageConfig.setController("controller");
packageConfig.setService("service");
packageConfig.setServiceImpl("service.impl");
autoGenerator.setPackageInfo(packageConfig);
// 配置策略
StrategyConfig strategyConfig = new StrategyConfig();
strategyConfig.setEntityLombokModel(true);
strategyConfig.setNaming(NamingStrategy.underline_to_camel);
strategyConfig.setColumnNaming(NamingStrategy.underline_to_camel);
autoGenerator.setStrategy(strategyConfig);
autoGenerator.execute();
}
}
9、启动类添加@MapperScan(“com.test.allstart.mapper”),否则无法加载Mapper bean
10、在Controller中的user文件中加入代码简单测试,浏览器访问”localhost:8080/user/a”可以查看数据库中的数据@RestController
@RequestMapping("/user")
public class UserController {
@Autowired
private UserMapper userMapper;
@GetMapping("/a")
public List<User> display(){
List<User> user = userMapper.selectList(null);
return user;
}
}
11、数据表中自动添加createTime和updateTime
- 实体类中添加如下代码
@TableField(fill = FieldFill.INSERT)
private Date createTime;
@TableField(fill = FieldFill.INSERT_UPDATE)
private Date updateTime;
- 添加自动填充处理器
package com.test.allstart.config;
import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import org.apache.ibatis.reflection.MetaObject;
import org.springframework.stereotype.Component;
import java.util.Date;
@Component
public class addTime implements MetaObjectHandler {
@Override
public void insertFill(MetaObject metaObject) {
this.setFieldValByName("createTime",new Date(),metaObject);
this.setFieldValByName("updateTime",new Date(),metaObject);
}
@Override
public void updateFill(MetaObject metaObject) {
this.setFieldValByName("updateTime",new Date(),metaObject);
}
}
- 测试代码
@Test
void insert(){
User user = new User();
user.setUserName("Tom");
user.setPassword("123");
user.setMoneryAdd("aaabbbccc");
user.setBalancePrice(new BigDecimal(100));
user.setHeadImage("./1.jpg");
userMapper.insert(user);
}
@Test
void update(){
User user = userMapper.selectById(20);
user.setBalancePrice(new BigDecimal(200));
QueryWrapper queryWrapper = new QueryWrapper();
queryWrapper.eq("id",20);
userMapper.update(user,queryWrapper);
}