当前位置: 首页 > 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,并利用其简化开发流程。

http://www.xdnf.cn/news/374113.html

相关文章:

  • LLM大模型入门知识概念
  • 小米创业思考——阅读小记
  • MySQL 中如何进行 SQL 调优?
  • 数据库连接池
  • 04 mysql 修改端口和重置root密码
  • 图像处理篇--- HTTP|RTSP|MJPEG视频流格式
  • MindSpore框架学习项目-ResNet药物分类-模型优化
  • 对话 BitMart 新任 CEO Nenter (Nathan) Chow:技术创新、全球扩张和社区赋能
  • Jsp技术入门指南【十二】自定义标签
  • 内存安全暗战:从 CVE-2025-21298 看 C 语言防御体系的范式革命
  • vim 查看复杂的宏扩展
  • 程序代码篇---esp32视频流处理
  • Hive表JOIN性能问
  • 质量保证计划,软件质量计划书,软件质量方案(word原件)
  • 在线SQL转ER图工具
  • java命令行打包class为jar并运行
  • 使用FastAPI和React以及MongoDB构建全栈Web应用03 全栈开发快速入门
  • 51c大模型~合集126
  • Pyhton生活手册-NumPy数据类型:从快递单到智能家居的数据变形术
  • 高精度之加减乘除之多解总结(加与减篇)
  • C++GO语言微服务和服务发现②
  • Java—— 泛型详解
  • PLC可编程控制器在接地电阻柜接触器柜中的智能化控制实践
  • 最大公约数gcd和最小公倍数lcm
  • `RotationTransition` 是 Flutter 中的一个动画组件,用于实现旋转动画效果
  • 跨境热销产品安全危机:一场召回事件背后的全球合规挑战
  • 提高工作效率的新选择[特殊字符]——Element Plus UI库
  • 基于小波神经网络(WNN)的回归预测模型【MATLAB】
  • 精品,第22章 Python3 数据类型与文件操作详解
  • Jmeter中的Json提取器如何使用?