推荐下载插件:MyBatisX
插件的优点:
1. mapper and xml can jump back and forth:mapper和xml可以来回跳转
2. mybatis.xml,mapper.xml prompt:mybatis.xml,mapper.xml提示
3. mapper and xml support auto prompt like jpa(reference MybatisCodeHelperPro):mapper和xml支持像jpa一样的自动提示(参考MybatisCodeHelperPro)
4. integrate mybatis generator Gui (copy fromfree mybatis plugin):集成mybatis生成器Gui(从免费mybatis插件复制)
将Spring Boot与MyBatis Plus整合需要完成以下几个步骤:
在项目的pom.xml文件中MyBatis Plus的依赖。请确保版本兼容性,并引入需要的数据库驱动程序。示例:
com.baomidou
mybatis-plus-boot-starter
兼容版本
在application.properties
(或application.yml
)文件中配置数据库连接信息和数据源相关属性。示例:
# 数据库连接配置
spring.datasource.url=jdbc:mysql://localhost:3306/mydatabase
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
如果你使用了数据库连接池也要导入相应的依赖和配置,这里以Druid为例:
Druid是一个强大的数据库连接池和监控工具,如果你希望使用Druid作为连接池,需要导入Druid的依赖。可以通过以下方式在pom.xml
文件中添加Druid的依赖:
com.alibaba
druid-spring-boot-starter
兼容版本
使用了Druid,还需要加上Druid相关配置(spring.datasource.type=com.alibaba.druid.pool.DruidDataSource必须加上,其他配置可不加)
# Druid配置
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.druid.initial-size=5
spring.datasource.druid.min-idle=5
spring.datasource.druid.max-active=20
spring.datasource.druid.test-on-borrow=false
spring.datasource.druid.test-while-idle=true
spring.datasource.druid.time-between-eviction-runs-millis=60000
spring.datasource.druid.min-evictable-idle-time-millis=30000
spring.datasource.druid.pool-prepared-statements=true
spring.datasource.druid.max-pool-prepared-statement-per-connection-size=20
spring.datasource.druid.filters=stat,wall,log4j
spring.datasource.druid.connectionProperties=druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000
SpringBoot整合Druid ------> SpringBoot整合Druid_Maiko Star的博客-CSDN博客
创建一个配置类,用于配置MyBatis Plus相关的配置。示例:
@Configuration
@MapperScan("com.example.mapper") // 指定Mapper接口的扫描路径
public class MyBatisPlusConfig {
@Bean
public PaginationInterceptor paginationInterceptor() {
return new PaginationInterceptor(); // 分页插件
}
}
如果不需要配置MyBatisPlus的话,@MapperScan("com.example.mapper") 可以放在启动类上
创建一个与数据库表对应的实体类,并可以使用MyBatis Plus的注解来完成实体类与数据库表之间的映射关系。
假设有一个数据库表user
,包含以下字段:
CREATE TABLE `user` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`username` varchar(50) DEFAULT NULL,
`email` varchar(100) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
创建实体类可以如下:(如果表名和实体类对应的上,即名字相同,那么其中注解也可以省略)
import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
@Data
@TableName("user") // 指定数据库表名
public class User {
@TableId(type = IdType.AUTO) // 指定主键生成策略为自动增长
private Long id;
private String username;
private String email;
}
创建一个继承自BaseMapper
的Mapper接口,用于进行数据库操作。无需编写SQL语句,MyBatis Plus会基于实体类的注解自动生成相应的SQL语句。
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface UserMapper extends BaseMapper {
// 这里无需编写具体的SQL语句,继承BaseMapper后即可直接使用MyBatis Plus提供的通用CRUD方法进行数据库操作
}
如果不用@Mapper注解,需要使用@MapperScan(“对应mapper包的路径”)替换
在业务逻辑层或控制器层中,通过自动注入Mapper接口对象,调用其方法进行数据库操作。示例:
@Service
public class UserService {
@Autowired
private UserMapper userMapper;
public User getUserById(Long id) {
return userMapper.selectById(id);
}
public List getAllUsers() {
return userMapper.selectList(null);
}
public int insertUser(User user) {
return userMapper.insert(user);
}
public int updateUser(User user) {
return userMapper.updateById(user);
}
public int deleteUser(Long id) {
return userMapper.deleteById(id);
}
}
以上是整合Spring Boot与MyBatis Plus的完整过程。通过添加依赖、配置数据源、配置MyBatis Plus、创建实体类和Mapper接口,即可完成Spring Boot与MyBatis Plus的整合。这样,就可以在业务逻辑层或控制器层中直接调用Mapper接口的方法进行数据库操作,极大地简化了数据库操作的代码。注意确保数据库连接信息正确,并根据实际情况进行配置。