优化型网站的好处,又拍云wordpress,wordpress admin init,wordpress 汽车租赁Spring Boot与MyBatis-Plus的高效集成
引言
在现代 Java 开发中#xff0c;MyBatis-Plus 作为 MyBatis 的增强工具#xff0c;以其简化 CRUD 操作和无需编写 XML 映射文件的特点#xff0c;受到了开发者的青睐。本篇文章将带你一步步整合 Spring Boot 与 MyBatis-PlusMyBatis-Plus 作为 MyBatis 的增强工具以其简化 CRUD 操作和无需编写 XML 映射文件的特点受到了开发者的青睐。本篇文章将带你一步步整合 Spring Boot 与 MyBatis-Plus并展示其在实际开发中的应用包括事务管理、安全性考虑、性能优化等高级特性。
环境准备
1.1 导入依赖
在 pom.xml 文件中添加 MyBatis-Plus 的起步依赖
dependencygroupIdcom.baomidou/groupIdartifactIdmybatis-plus-boot-starter/artifactIdversion3.4.0/version
/dependency确保使用 Maven Helper 插件检查依赖冲突。
1.2 修改配置文件
在 application.yml 中配置数据库连接和 MyBatis-Plus 参数
server:port: 8889
spring:datasource:url: jdbc:mysql://localhost:3306/boot_mybatis?serverTimezoneUTCuseUnicodetruecharacterEncodingutf-8AllowPublicKeyRetrievalTrueusername: rootpassword: 123456
mybatis-plus:mapper-locations: mapper/*.xmlconfiguration:log-impl: org.apache.ibatis.logging.stdout.StdOutImplmap-underscore-to-camel-case: truetype-aliases-package: com.example.demo.entity1.3 IUser 实体类
定义 IUser 实体类映射数据库中的用户表
Data
TableName(t_user)
public class IUser {TableId(value u_id, type IdType.AUTO)private Integer uId;TableField(user_name)private String userName;private String email;private String passWord;private Date birth;private int gender;
}1.4 UserMapper 接口
创建 UserMapper 接口继承 BaseMapper
Mapper
public interface IUserMapper extends BaseMapperIUser {}使用
2.1 基础增删改查
新增一条 User 数据
Autowired
private IUserMapper userMapper;Test
public void insertUser() {IUser user new IUser();user.setUserName(曹操);user.setPassWord(88888888);user.setEmail(321qin.com);userMapper.insert(user);
}根据条件删除 User
Test
public void deleteUserById() {userMapper.deleteById(1001);
}2.2 批量操作
批量新增
Test
public void batchInsertUsers() {ListIUser users Arrays.asList(new IUser().setUserName(关羽).setPassWord(258),new IUser().setUserName(关公).setPassWord(7530),new IUser().setUserName(关项).setPassWord(159));userMapper.insertBatch(users);
}2.3 查询条件构造器【QueryWrapper】使用
使用 QueryWrapper 构造查询条件
Test
public void selectUsersByQueryWrapper() {QueryWrapperIUser queryWrapper new QueryWrapper();queryWrapper.eq(user_name, 项羽).like(email, 123163.com);userMapper.selectList(queryWrapper);
}2.4 修改条件构造器【UpdateWrapper】使用
使用 UpdateWrapper 构造更新条件
Test
public void updateUserByUpdateWrapper() {UpdateWrapperIUser updateWrapper new UpdateWrapper();updateWrapper.eq(user_name, 王小五).set(email, wxwqq.com);userMapper.update(null, updateWrapper);
}2.5 事务管理
事务的配置
在服务层方法上使用 Transactional 注解来确保操作的原子性。
Service
public class UserService {Autowiredprivate IUserMapper userMapper;Transactionalpublic void updateUserAndSendEmail(String userName, String newEmail) {// 更新用户信息IUser user new IUser();user.setUserName(userName);user.setEmail(newEmail);userMapper.updateById(user);// 发送邮件操作示例sendEmailToUser(userName, newEmail);}private void sendEmailToUser(String userName, String email) {// 邮件发送逻辑}
}事务的传播行为
Spring 支持多种事务传播行为可以根据业务需求配置。
2.6 安全性考虑
防止 SQL 注入
MyBatis-Plus 通过预编译的语句防止 SQL 注入。
数据加密
在应用层对敏感数据进行加密比如用户密码的存储和验证。
public class SecurityUtils {public static String encryptPassword(String password) {// 加密密码逻辑}public static boolean checkPassword(String rawPassword, String encryptedPassword) {// 验证密码逻辑}
}代码生成器 3.1 准备项目和数据库表
准备一个 Spring Boot 空项目并创建数据库表
CREATE TABLE t_user (u_id int NOT NULL AUTO_INCREMENT COMMENT 主键,user_name varchar(10) NOT NULL COMMENT 用户登录名,email varchar(50) DEFAULT NULL COMMENT 邮箱,pass_word varchar(30) NOT NULL COMMENT 密码,...PRIMARY KEY (u_id)
) ENGINEInnoDB DEFAULT CHARSETutf8mb3;3.2 引入依赖
在 pom.xml 中添加代码生成器的依赖
dependencygroupIdcom.baomidou/groupIdartifactIdmybatis-plus-generator/artifactIdversion3.4.0/version
/dependency
dependencygroupIdorg.apache.velocity/groupIdartifactIdvelocity-engine-core/artifactIdversion2.0/version
/dependency3.3 配置文件
在 application.yml 中配置数据库连接
spring:datasource:url: jdbc:mysql://localhost:3306/generate?serverTimezoneUTCuseUnicodetruecharacterEncodingutf-8AllowPublicKeyRetrievalTrueusername: rootpassword: 123456driver-class-name: com.mysql.cj.jdbc.Driver3.4 测试工具类
创建一个测试工具类用于自动生成代码
public class CodeGenerator {public static void main(String[] args) {AutoGenerator mpg new AutoGenerator();mpg.setDataSource(new DataSourceConfig.Builder().setUrl(jdbc:mysql://localhost:3306/generate?serverTimezoneUTCuseUnicodetruecharacterEncodingutf-8AllowPublicKeyRetrievalTrue).setDriverName(com.mysql.cj.jdbc.Driver).setUsername(root).setPassword(123456).build());mpg.setGlobalConfig(new GlobalConfig.Builder().setOutputDir(System.getProperty(user.dir) /src/main/java).setAuthor(Your Name).setOpen(false).build());mpg.setPackageInfo(new PackageConfig.Builder().setParent(com.example.demo).setEntity(entity).setMapper(mapper).setService(service).setController(controller).build());mpg.setStrategy(new StrategyConfig.Builder().setInclude(t_user).build());mpg.execute();}
}3.5 生成目录结构
运行上述测试工具类生成项目的目录结构。
3.6 调整和测试
调整生成的 Mapper XML 文件位置并在 Mapper 接口上添加 Mapper 注解。在启动类上添加 MapperScan 注解。然后进行测试例如新增一个用户
Autowired
private TUserMapper userMapper;Test
public void testInsertUser() {TUser user new TUser();user.setUserName(王中王);user.setPassWord(wzw123456);userMapper.insert(user);
}总结与学习成果
本篇文章您将能够获得以下知识和技能 环境搭建您将学会如何在 Spring Boot 项目中引入 MyBatis-Plus并配置必要的依赖和数据库连接。 实体类与Mapper接口您将了解如何创建实体类来映射数据库表以及如何定义 Mapper 接口来操作数据库。 CRUD操作您将掌握使用 MyBatis-Plus 进行基础的增删改查操作包括单条记录和批量操作的处理。 条件构造器您将学会使用 QueryWrapper 和 UpdateWrapper 来构建复杂的查询和更新条件提高代码的可读性和维护性。 事务管理您将了解如何在服务层方法上使用 Transactional 注解来确保数据库操作的原子性。 安全性实践您将学到如何防止 SQL 注入攻击并对敏感数据进行加密处理增强应用的安全性。 性能优化您将探索查询优化技巧和缓存策略以提高数据库操作的性能。 版本兼容性与迁移您将了解不同版本的 MyBatis-Plus 之间的差异并学会如何将旧版本迁移到新版本。 实际应用场景您将通过实际案例分析了解 MyBatis-Plus 在解决实际问题中的应用。 监控与日志您将学会如何配置和使用 MyBatis-Plus 的日志记录功能以及如何监控数据库操作的性能。 代码生成器您将掌握如何使用 MyBatis-Plus 提供的代码生成器来快速生成项目代码提高开发效率。
通过这些内容您不仅能够深入了解 MyBatis-Plus 的强大功能还能够将这些知识应用到实际项目中提升您的开发能力和项目质量。希望这篇文章能够帮助您在 Spring Boot 和 MyBatis-Plus 的学习之路上更进一步。
你掌握了那些或遇到那些问题欢迎评论留言进行讨论