MyBatisPlus
上古有C,后有C++。
先有Myatis,后MyBatis+
什么是MyBatis-Plus
- 润物无声
只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑。
- 效率至上
只需简单配置,即可快速进行 CRUD 操作,从而节省大量时间。
- 丰富功能
热加载、代码生成、分页、性能分析等功能一应俱全。
maven添加依赖
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus</artifactId>
<version>latest-version</version>
</dependency>
版本查看请看这里
测试前准备
- 创建表
CREATE table `sob_user` (`id` INTEGER PRIMARY KEY auto_increment,
`name` varchar(64) NOT NULL,
`password` varchar(32) NOT NULL,
`gender` CHAR(1) NOT NULL,
`age` INTEGER);
INSERT INTO `sob_user` (`name`,`password`,`gender`,`age`) VALUES('TrillGates','123456','1',20);
INSERT INTO `sob_user` (`name`,`password`,`gender`,`age`) VALUES('BillGates','232323','1',60);
INSERT INTO `sob_user` (`name`,`password`,`gender`,`age`) VALUES('LarryPage','434r22','1',49);
INSERT INTO `sob_user` (`name`,`password`,`gender`,`age`) VALUES('SteveJob','23232','1',56);
INSERT INTO `sob_user` (`name`,`password`,`gender`,`age`) VALUES('Pony','23sds','1',48);
创建表,并插入数据。
创建项目
我们使用maven来管理项目,我们创建maven工程即可
构建maven项目
把以下的文件添加到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>MyBatisCoursePlan</artifactId>
<version>1.0-SNAPSHOT</version>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.4.1</version>
<relativePath/>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.4.1</version>
</dependency>
<!--mysql-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<!--lombok用来简化实体类-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<!--代码生成器-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>3.4.1</version>
</dependency>
<dependency>
<groupId>org.apache.velocity</groupId>
<artifactId>velocity-engine-core</artifactId>
<version>2.2</version>
</dependency>
<!--swagger2-->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.9.2</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.9.2</version>
</dependency>
</dependencies>
<build>
<finalName>sob-mo-yu-ucenter-1.0.0</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<mainClass>net.sunofbeach.mybatis.App</mainClass>
</configuration>
</plugin>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<includeSystemScope>true</includeSystemScope>
</configuration>
</plugin>
</plugins>
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
</resource>
<resource>
<directory>src/main/resources</directory>
</resource>
</resources>
</build>
</project>
修改一下相关的名称即可
在resources目录下创建application.yml文件
添加以下内容
server:
port: 9900
spring:
application:
name: sob-mybatis-plus
datasource:
url: jdbc:mysql://192.168.220.128:3306/mybatis_plus_demo?characterEncoding=utf-8&useSSL=false
username: root
password: 密码
mybatis-plus:
mapper-locations: classpath:net/sunofbeach/mybatis/mapper/xml/*.xml
global-config:
db-config:
id-type: auto # 主键自增
configuration:
map-underscore-to-camel-case: true # 开启驼峰命名法
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl # 输出语句Log
创建启动文件,在包目录下创建App.java
@SpringBootApplication
@MapperScan("net.sunofbeach.mybatis.mapper")
public class App {
public static void main(String[] args) {
SpringApplication.run(App.class, args);
}
}
启动项目,跑下来,有这样的Log,显示端口好之类的就运行成功了
创建对应的bean类
以下内容可以通过逆向的方式来创建。逆向的类和相关的依赖放在文章后头吧。
请安装好lombok插件
/**
* <p>
*
* </p>
*
* @author sunofbeach.net
* @since 2021-07-20
*/
@Data
@EqualsAndHashCode(callSuper = false)
@ApiModel(value="SobUser对象", description="")
public class SobUser implements Serializable {
private static final long serialVersionUID = 1L;
@TableId(value = "id", type = IdType.AUTO)
private Integer id;
private String name;
private String password;
private String gender;
private Integer age;
}
逆向的代码,相关的依赖在前面的pom.xml中已经给出了。
public class CodeGenerator {
public static void main(String[] args) {
// 代码生成器
AutoGenerator mpg = new AutoGenerator();
// 全局配置
GlobalConfig gc = new GlobalConfig();
//这里右键复制path,使用绝对路径
gc.setOutputDir("E:\\codes\\Idear\\MyBatisCoursePlan\\src\\main\\java");
//作者名称
gc.setAuthor("sunofbeach.net");
//去掉Service接口的首字母I
gc.setServiceName("%sService");
gc.setOpen(false);
//实体属性 Swagger2 注解
gc.setSwagger2(true);
//主键策略,类型看里面的枚举
gc.setIdType(IdType.ASSIGN_ID);
//定义生成的实体类中日期类型
gc.setDateType(DateType.ONLY_DATE);
mpg.setGlobalConfig(gc);
// 数据源配置
DataSourceConfig dsc = new DataSourceConfig();
//修改数据库名,账号和密码
dsc.setUrl("jdbc:mysql://192.168.220.128:3306/mybatis_plus_demo?useUnicode=true&useSSL=false&characterEncoding=utf8");
dsc.setDriverName("com.mysql.cj.jdbc.Driver");
dsc.setUsername("root");
dsc.setPassword("123456");
mpg.setDataSource(dsc);
// 包配置
PackageConfig pc = new PackageConfig();
//模块名
pc.setModuleName("mybatis");
//包名,最后会是:net.sunofbeach.ucenter
pc.setParent("net.sunofbeach");
//控制器文件夹
pc.setController("api");
//实体类文件夹
pc.setEntity("pojo");
//service文件夹名
pc.setService("service");
//mapper
pc.setMapper("mapper");
mpg.setPackageInfo(pc);
// 策略配置
StrategyConfig strategy = new StrategyConfig();
//如果有多个表,逗号隔开,比如:"sob_user","sob_user"...
strategy.setInclude("sob_user");
//驼峰命名法
strategy.setNaming(NamingStrategy.underline_to_camel);
strategy.setColumnNaming(NamingStrategy.underline_to_camel);
strategy.setEntityLombokModel(true);
strategy.setRestControllerStyle(true);
strategy.setControllerMappingHyphenStyle(true);
//去掉字段的横杠
strategy.setTablePrefix(pc.getModuleName() + "_");
mpg.setStrategy(strategy);
mpg.execute();
}
}
创建测试类
简单地测试一下增删改查
@RunWith(SpringRunner.class)
@SpringBootTest
public class MyBatisApplicationTest {
@Autowired
private SobUserMapper userMapper;
@Test
public void testSelectList() {
List<SobUser> users = userMapper.selectList(null);
for (SobUser user : users) {
System.out.println(user);
}
}
//测试插入
@Test
public void testInsert() {
SobUser user = new SobUser();
user.setAge(31);
user.setName("康师傅");
int insert = userMapper.insert(user);
System.out.println("insert count = > " + insert);
}
//测试更新
@Test
public void update() {
SobUser user = new SobUser();
//更新年龄
user.setAge(30);
user.setId(1);
int insert = userMapper.updateById(user);
System.out.println("insert count = > " + insert);
}
//测试删除
@Test
public void delete() {
//删除规则,eq就是equals的意思
QueryWrapper<SobUser> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("id", 1");
int insert = userMapper.delete(queryWrapper);
System.out.println("insert count = > " + insert);
}
}