一、Mybatis-plus概述
MyBatis-Plus是一个为MyBatis提供增强功能的开源框架,是对MyBatis进行了简化,并提供了一些常用功能的自动化映射,MyBatis-Plus的目标是减少样板代码,增加开发效率。
Mybatis-plus提供了许多增强功能和扩展,包括:
- 自动生成基本的 CRUD
操作:Mybatis-Plus提供了很多常用SQL操作,例如分页、排序、插入、更新和删除,自动生成的Java代码可以减少开发人员的工作量,提高开发效率。 - 复杂查询支持:Mybatis-Plus提供了Wrapper的支持,它能够帮助我们构建强大的查询条件;除此之外,Mybatis-Plus也提供了很多简化支持,例如链式调用等。
- 自动生成代码:Mybatis-Plus能够根据表结构自动生成POJO、Mapper和XML文件,极大地简化了对象关系映射的编写工作。
- 支持Lambda表达式:Mybatis-Plus通过引入Lambda表达式来进行条件查询,能够让代码更加直观,减少开发人员的错误。
- 性能监控:Mybatis-Plus提供了一些常见的性能监控,例如分页插件、SQL执行分析和缓存配置等。
二、mybatis-plus基础程序
1、创建一个springboot项目,导入相应的依赖包
注:导入mybatis-plus依赖后不能再导入mybatis和mybatis-spring包,否则会冲突
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.47</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.4.1</version>
</dependency>
2、application.properties关联数据库
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/mydatabase?useSSL=false&useUnicode=true&characterEncoding=utf8
#配置日志
mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
3、创建实体类
@TableName("lsz_user") //映射数据库
public class User {
private int id;
private String name;
private String pwd;
public User() {
}
public User(int id, String name, String pwd) {
this.id = id;
this.name = name;
this.pwd = pwd;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPwd() {
return pwd;
}
public void setPwd(String pwd) {
this.pwd = pwd;
}
}
4、创建UserMapper
@Repository //注册bean
@Mapper
public interface UserMapper extends BaseMapper<User>{
//CRUD方法已经自动编写完成
}
5、测试
@SpringBootTest
class MybatisPlusTestApplicationTests {
@Autowired
private UserMapper userMapper;
@Test
void contextLoads() {
List<User> users = userMapper.selectList(null);
for (User user:users){
System.out.println(user.getName());
}
}
}