因为在平时写service层和mapper层发现大部分代码都差不多,所以发现mybatis与mybatis-plus都有代码生成器可以用来提升编码效率
这里有源码地址https://gitee.com/fishheadgit/wechartcode
mybatis可以代码生成mapper.xml和实体类pojo
mybatis-plus可以生成控制层、业务层、持久层和实体类
创建数据库
create database mybatis_demo;
创建一个
mybatis_demo
的数据库
create table `tb_user` (
id int not null auto_increment primary key comment '主键',
username varchar(50) not null comment '用户名',
password varchar(255) not null comment '密码'
)engine=InnoDB default charset=utf8mb4;
创建用户表
tb_user
创建maven工程
<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-webartifactId>
<version>3.4.0version>
dependency>
<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-testartifactId>
<version>3.4.0version>
dependency>
<dependency>
<groupId>com.baomidougroupId>
<artifactId>mybatis-plus-boot-starterartifactId>
<version>3.4.0version>
dependency>
<dependency>
<groupId>mysqlgroupId>
<artifactId>mysql-connector-javaartifactId>
<version>8.0.11version>
dependency>
<dependency>
<groupId>com.baomidougroupId>
<artifactId>mybatis-plus-generatorartifactId>
<version>3.4.0version>
dependency>
<dependency>
<groupId>org.apache.velocitygroupId>
<artifactId>velocity-engine-coreartifactId>
<version>2.2version>
dependency>
引入需要的依赖,这里使用springboot来启动
springboot配置文件
在依赖中已经导入了数据库,如果不写数据库配置就会报错 在resources中新建application.yml(这里也可以使用properties)
# 连接数据库配置
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql:///mybatis_demo?useSSL=false&useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC
username: root
password: 123456
# 设置在控制台输出日志
mybatis-plus:
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
注意:
driver-class-name中
com.mysql.cj.jdbc.Driver
是8.0以上的全类名,旧版的是com.mysql.jdbc.Driver
如果使用jdbc是8.0以上,url需要加上时区
useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC
如果需要使用中文存取数据,需要在url中加上编码
useUnicode=true
或characterEncoding=utf8
username是数据库用户账号,password是数据库密码
log-impl是指定日志的实现方式,这里选择在控制台输出
编写启动类
@SpringBootApplication
public class MyBatisPlusApplication {
public static void main(String[] args) {
SpringApplication.run(MyBatisPlusApplication.class, args);
}
}
启动MyBatisPlusApplication类,没有报错代表着启动没有问题了。
代码生成器配置类
在test/java/com.yujutg/包下,新建测试类AutoBuildTable.java
/**
* @author Fishhead
* @version 1.0
* @date 2020/9/23 17:25
*/
@SpringBootTest
public class AutoBuildTable {
@Test
public void build(){
// 写下面的代码
}
}
@SpringBootTest是设置这是由springboot启动的测试类
@Test是指明这个是一个单元测试方法
将下面代码写入build方法中
全局配置
AutoGenerator autoGenerator = new AutoGenerator();
// 配置策略
// 全局配置
GlobalConfig globalConfig = new GlobalConfig();
// 项目的绝对路径
String property = System.getProperty("user.dir");
System.out.println(property);
globalConfig.setOutputDir(property+"\\src\\main\\java");
// 作者的名称
globalConfig.setAuthor("Fishhead");
globalConfig.setOpen(false);
// 文件是否覆盖
globalConfig.setFileOverride(false);
// 去掉service的i前缀
globalConfig.setServiceName("%sService");
globalConfig.setDateType(DateType.ONLY_DATE);
// 设置全局配置
autoGenerator.setGlobalConfig(globalConfig);
设置数据源
DataSourceConfig config = new DataSourceConfig();
// 设置连接的url
config.setUrl("jdbc:mysql:///mybatis_demo?useSSL=false&useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC");
// 设置jdbc的驱动类
config.setDriverName("com.mysql.cj.jdbc.Driver");
// username是数据库用户账号
config.setUsername("root");
// password是数据库密码
config.setPassword("123456");
// 指明这个是mysql的数据库
config.setDbType(DbType.MYSQL);
autoGenerator.setDataSource(config);
包的配置
PackageConfig packageConfig = new PackageConfig();
// 设置父包名
packageConfig.setParent("com.yujutg");
// 设置实体类的包名
packageConfig.setEntity("entity");
// 设置mapper接口的包名
packageConfig.setMapper("mapper");
// 设置业务层的包名
packageConfig.setService("service");
// 设置控制层的包名
packageConfig.setController("controller");
autoGenerator.setPackageInfo(packageConfig);
策略配置
StrategyConfig strategyConfig = new StrategyConfig();
// 选择需要生成的数据库,这里可以传入多个参数
// setInclude("tb_user", "tb_rule", "tb_book")
strategyConfig.setInclude("tb_user");
// 去除数据库表名的前缀
strategyConfig.setTablePrefix("tb_");
// 下划线转驼峰命名法
strategyConfig.setNaming(NamingStrategy.underline_to_camel);
strategyConfig.setColumnNaming(NamingStrategy.underline_to_camel);
autoGenerator.setStrategy(strategyConfig);
模板配置
TemplateConfig templateConfig = new TemplateConfig();
templateConfig.setXml(null);
autoGenerator.setTemplate(templateConfig);
执行生成
autoGenerator.execute();
测试结果
运行build()方法,会出现生成的包 编写一个Restful接口
@RestController
@RequestMapping("/user")
public class UserController {
@Autowired
private UserService userService;
/**
* 获取所有User用户
* @return List集合
*/
@GetMapping("/")
public List getAll(){
return userService.list(null);
}
/**
* 插入一个User用户
* @param user 前端传入的用户名和密码
* @return 返回是否插入成功
*/
@PostMapping("/")
public Boolean saveOne(User user){
if(user != null){
return userService.save(user);
}
return false;
}
}
这里有源码地址https://gitee.com/fishheadgit/wechartcode