当前位置: 首页 > news >正文

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&amp;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:逻辑删除

  1. 配置全局逻辑删除application.yml):
mybatis-plus:global-config:db-config:logic-delete-field: isDeleted  # 逻辑删除字段名logic-delete-value: 1          # 删除时标记值logic-not-delete-value: 0      # 未删除时标记值
  1. 实体类添加字段
@TableLogic
private Integer isDeleted;
  1. 查询时会自动过滤已删除数据
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>

三、常见问题解决

  1. 依赖冲突
    检查 mybatis-springmybatis-plus-boot-starter 版本是否兼容。

  2. 分页不生效
    确保配置了 PaginationInterceptor,且SQL语句中有 LIMIT 关键字。

  3. 表名或字段名不匹配
    使用 @TableName@TableField 注解显式指定。


通过以上步骤和示例,可以快速上手 SSM 整合 MyBatis-Plus,并利用其简化开发流程。

相关文章:

  • 助力你的Neovim!轻松管理开发工具的魔法包管理器来了!
  • C# 参数
  • 判断点是否在立方体内
  • 贪心算法专题(Part1)
  • DeepSeek 实现趣味心理测试应用开发教程
  • 【CF】Day56——Codeforces Round 940 (Div. 2) and CodeCraft-23 BCD
  • 《从零开始:构建你的第一个区块链应用》
  • Spring 6.x 详解介绍
  • STM32单片机的快速成长路径规划
  • 深入解析C++11 auto 关键字:类型推导的现代实践
  • uniapp小程序中实现无缝衔接滚动效果
  • Nginx高级配置
  • 用go从零构建写一个RPC(仿gRPC,tRPC)--- 版本2
  • 宝蓝德中间件部署war包时,配置的绝对路径读取错误。
  • LabVIEW多通道并行数据存储系统
  • llama.cpp无法使用gpu的问题
  • 基于CNN卷积神经网络的带频偏QPSK调制信号检测识别算法matlab仿真
  • Redis 集群
  • 视觉革命来袭!ComfyUI-LTXVideo 让视频创作更高效
  • Java常用类概述
  • 人民日报读者点题·共同关注:今天我们为什么还需要图书馆?
  • 江苏省委社会工作部部长等多人拟在省志愿服务联合会任职
  • 警方通报男子地铁上拍视频致乘客恐慌受伤:列车运行一度延误,已行拘
  • 总粉丝破亿!当网络大V遇见硬核科技,互联网时代如何书写上海故事?
  • 经彩申城!上海网络大V沙龙活动走进闵行
  • 教育部、国家发改委联合启动实施教师教育能力提升工程