SSM框架整合MyBatis-Plus的步骤和简单用法示例
以下是 SSM框架整合MyBatis-Plus的步骤 和 简单用法示例:
一、SSM整合MyBatis-Plus步骤
1. 添加依赖(Maven)
<?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>hirain-reader</artifactId><version>1.0-SNAPSHOT</version><properties><maven.compiler.source>8</maven.compiler.source><maven.compiler.target>8</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><repositories><!--创建私服地址--><repository><id>aliyun</id><name>aliyun</name><url>https://maven.aliyun.com/repository/public</url></repository></repositories><dependencies><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>5.3.30</version></dependency><!--freemarker--><dependency><groupId>org.freemarker</groupId><artifactId>freemarker</artifactId><version>2.3.31</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-context-support</artifactId><version>5.3.30</version></dependency><!--Jackson--><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-core</artifactId><version>2.17.2</version></dependency><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-annotations</artifactId><version>2.17.2</version></dependency><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId><version>2.17.2</version></dependency><!--MyBatis--><dependency><groupId>org.springframework</groupId><artifactId>spring-jdbc</artifactId><version>5.3.30</version></dependency><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.5.13</version></dependency><dependency><groupId>org.mybatis</groupId><artifactId>mybatis-spring</artifactId><version>2.0.7</version></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.33</version></dependency><dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.2.8</version></dependency><!--单元测试依赖--><dependency><groupId>org.springframework</groupId><artifactId>spring-test</artifactId><version>5.3.30</version></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.13.2</version><scope>test</scope></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.13.2</version><scope>test</scope></dependency><dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>4.0.1</version></dependency><!--logback日志组件--><dependency><groupId>ch.qos.logback</groupId><artifactId>logback-classic</artifactId><version>1.2.3</version></dependency><!--Mybatis-Plus--><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus</artifactId><version>3.5.12</version></dependency></dependencies>
</project>
2. 配置数据源(applicationContext.xml
)
<!-- 数据源 -->
<bean id="dataSource" class="com.zaxxer.hikari.HikariDataSource"><property name="driverClassName" value="com.mysql.cj.jdbc.Driver"/><property name="jdbcUrl" value="jdbc:mysql://localhost:3306/test_db?useSSL=false&serverTimezone=UTC"/><property name="username" value="root"/><property name="password" value="123456"/>
</bean><!-- SqlSessionFactory -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"><property name="dataSource" ref="dataSource"/><!-- 指定MyBatis配置文件(非必须) --><property name="configLocation" value="classpath:mybatis-config.xml"/><!-- 指定Mapper XML文件位置 --><property name="mapperLocations" value="classpath:mappers/*.xml"/>
</bean><!-- Mapper扫描器 -->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"><property name="basePackage" value="com.example.mapper"/><property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
</bean>
3. 配置MyBatis-Plus(Java Config)
@Configuration
@MapperScan("com.example.mapper") // 指定Mapper接口所在的包
public class MyBatisPlusConfig {// 分页插件配置@Beanpublic PaginationInterceptor paginationInterceptor() {return new PaginationInterceptor();}
}
4. 编写实体类(Lombok简化)
@Data
@TableName("user") // 对应数据库表名
public class User {@TableId(type = IdType.AUTO) // 主键自增private Long id;private String name;private Integer age;private String email;
}
5. 编写Mapper接口
public interface UserMapper extends BaseMapper<User> {// 继承BaseMapper后,直接使用内置的CRUD方法(无需编写XML)
}
6. Service层调用
@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {// 直接调用父类方法(如 save, remove, getById 等)
}
二、MyBatis-Plus 用法示例
示例1:基础CRUD操作
// 插入数据
User user = new User();
user.setName("张三");
user.setAge(25);
userService.save(user);// 查询单条
User user = userService.getById(1L);// 更新数据
user.setAge(26);
userService.updateById(user);// 删除数据
userService.removeById(1L);
示例2:条件构造器查询
// 查询年龄大于20的用户
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.gt("age", 20);
List<User> userList = userMapper.selectList(queryWrapper);// 模糊查询(LIKE)
queryWrapper.like("name", "张");
List<User> users = userMapper.selectList(queryWrapper);
示例3:分页查询
// 分页参数:当前页=1,每页=5条
Page<User> page = new Page<>(1, 5);
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.orderByAsc("age");
IPage<User> userPage = userMapper.selectPage(page, queryWrapper);// 获取分页结果
List<User> records = userPage.getRecords();
long total = userPage.getTotal();
示例4:逻辑删除
- 配置全局逻辑删除(
application.yml
):
mybatis-plus:global-config:db-config:logic-delete-field: isDeleted # 逻辑删除字段名logic-delete-value: 1 # 删除时标记值logic-not-delete-value: 0 # 未删除时标记值
- 实体类添加字段:
@TableLogic
private Integer isDeleted;
- 查询时会自动过滤已删除数据:
userMapper.selectList(null); // 自动忽略 isDeleted=1 的记录
示例5:自定义SQL
// 在Mapper接口中定义方法
@Select("SELECT * FROM user WHERE age > #{age}")
List<User> selectByAgeGreaterThan(@Param("age") Integer age);// 或通过XML配置(resources/mappers/UserMapper.xml)
<select id="selectByAgeGreaterThan" resultType="User">SELECT * FROM user WHERE age > #{age}
</select>
三、常见问题解决
-
依赖冲突
检查mybatis-spring
和mybatis-plus-boot-starter
版本是否兼容。 -
分页不生效
确保配置了PaginationInterceptor
,且SQL语句中有LIMIT
关键字。 -
表名或字段名不匹配
使用@TableName
和@TableField
注解显式指定。
通过以上步骤和示例,可以快速上手 SSM 整合 MyBatis-Plus,并利用其简化开发流程。