一、MyBatis-Plus入门开发及配置
1、MyBatis-Plus简介
MyBatis-Plus(简称:MP)是一个MyBatis的增强工具,在MyBatis的基础上只做增强不做改变,为简化开发、提高效率而生。
MyBatis-Plus易于学习,官网提供了基于SpringBoot的中文文档,社区活跃,版本迭代快速。
MyBatis-Plus官方文档:baomidou.com/guide/,可作为日…
2、基于SpringBoot项目集成MyBatis-Plus
可以基于IDEA的Spring Initializr进行SpringBoot项目的创建,或者移步至Boot官网构建一个简单的web starter项目:start.spring.io/
①导入MyBatis-Plus相关的依赖包、数据库驱动、lombok插件包:
pom.xml文件配置
<dependencies>
<!--数据库驱动-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<!--lombok-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<!--mybatis-plus:版本3.0.5-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.0.5</version>
</dependency>
<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>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
复制代码
②配置数据库驱动、日志级别
application.properties配置
#mysql5 驱动不同,默认驱动:com.mysql.jdbc.Driver
spring.datasource.username=root
spring.datasource.password=admin
spring.datasource.url=jdbc:mysql://localhost:3306/mybatisplus_0312?useSSL=false&useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT%2B8
#mysql8 驱动不同:com.mysql.cj.jdbc.Driver、需要增加时区的配置:serverTimezone=GMT%2B8,mysql8的驱动向下兼容mysql5
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
#配置日志
mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
复制代码
3、入门Hello World进行数据库操作
基于官网示例来构建数据库表单及POJO数据类:baomidou.com/guide/quick…
MybatisPlusApplication启动类:
@SpringBootApplication
//配置Mapper接口类扫描
@MapperScan("com.fengye.mapper")
//配置Spring Bean注解扫描
@ComponentScan(basePackages = "com.fengye.mapper")
public class MybatisPlusApplication {
public static void main(String[] args) {
SpringApplication.run(MybatisPlusApplication.class, args);
}
}
复制代码
UserMapper类:
@Repository //持久层注解,表示该类交给Springboot管理
public interface UserMapper extends BaseMapper<User> {
}
复制代码
User类:
@Data
public class User {
private Long id;
private String name;
private Integer age;
private String email;
}
复制代码
基础CRUD操作:
@SpringBootTest
class MybatisPlusApplicationTests {
@Autowired //需要配置SpringBoot包扫描,否则此处使用@Autowired会报警告
//@Resource
private UserMapper userMapper;
@Test
void testSelect() {
System.out.println(("----- selectAll method test ------"));
List<User> userList = userMapper.selectList(null);
Assert.assertEquals(5, userList.size());
userList.forEach(System.out::println);
}
@Test
void testInsert(){
System.out.println("----- insert method test ------");
User user = new User();
user.setName("枫夜爱学习");
user.setAge(20);
user.setEmail("241337663@qq.com");
int insertId = userMapper.insert(user);
System.out.println(insertId);
}
@Test
void testUpdate(){
System.out.println("----- update method test ------");
User user = new User();
user.setId(1370382950972436481L);
user.setName("苞米豆最爱");
user.setAge(4);
user.setEmail("baomidou@github.com");
int updateId = userMapper.updateById(user);
System.out.println(updateId);
System.out.println(user);
}
@Test
void testDelete(){
System.out.println("----- delete method test ------");
int deleteId = userMapper.deleteById(1370386235364118529L);
System.out.println(deleteId);
}
}
复制代码
4、主键生成策略配置
主键生成策略:
使用@TableId(type = IdType.AUTO,value = "id") ,value属性值当实体类字段名和数据库一致时可以不写,这里的value指的是数据库字段名称,type的类型有以下几种:
public enum IdType {
AUTO(0), //Id自增操作
NONE(1), //未设置主键
INPUT(2), //手动输入,需要自己setID值
ID_WORKER(3), //默认的全局唯一id
UUID(4), //全局唯一id uuid
ID_WORKER_STR(5); //ID_WORKER的字符串表示法
...
}
复制代码
目前MyBatis-Plus官方文档建议的id主键设置为:@TableId(type = IdType.INPUT)