当前位置: 代码网 > it编程>编程语言>Java > SpringBoot与MyBatis-Plus的高效集成方式

SpringBoot与MyBatis-Plus的高效集成方式

2024年11月25日 Java 我要评论
引言在现代 java 开发中,mybatis-plus 作为 mybatis 的增强工具,以其简化 crud 操作和无需编写 xml 映射文件的特点,受到了开发者的青睐。本篇文章将带你一步步整合 sp

引言

在现代 java 开发中,mybatis-plus 作为 mybatis 的增强工具,以其简化 crud 操作和无需编写 xml 映射文件的特点,受到了开发者的青睐。

本篇文章将带你一步步整合 spring boot 与 mybatis-plus,并展示其在实际开发中的应用,包括事务管理、安全性考虑、性能优化等高级特性。

环境准备

1.1 导入依赖

pom.xml 文件中添加 mybatis-plus 的起步依赖:

<dependency>
    <groupid>com.baomidou</groupid>
    <artifactid>mybatis-plus-boot-starter</artifactid>
    <version>3.4.0</version>
</dependency>

确保使用 maven helper 插件检查依赖冲突。

1.2 修改配置文件

application.yml 中配置数据库连接和 mybatis-plus 参数:

server:
  port: 8889
spring:
  datasource:
    url: jdbc:mysql://localhost:3306/boot_mybatis?servertimezone=utc&useunicode=true&characterencoding=utf-8&allowpublickeyretrieval=true
    username: root
    password: 123456
mybatis-plus:
  mapper-locations: mapper/*.xml
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.stdoutimpl
    map-underscore-to-camel-case: true
  type-aliases-package: com.example.demo.entity

1.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 basemapper<iuser> {}

使用

2.1 基础增删改查

新增一条 user 数据

@autowired
private iusermapper usermapper;

@test
public void insertuser() {
    iuser user = new iuser();
    user.setusername("曹操");
    user.setpassword("88888888");
    user.setemail("321@qin.com");
    usermapper.insert(user);
}

根据条件删除 user

@test
public void deleteuserbyid() {
    usermapper.deletebyid(1001);
}

2.2 批量操作

批量新增

@test
public void batchinsertusers() {
    list<iuser> 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() {
    querywrapper<iuser> querywrapper = new querywrapper<>();
    querywrapper.eq("user_name", "项羽").like("email", "123@163.com");
    usermapper.selectlist(querywrapper);
}

2.4 修改条件构造器【updatewrapper】使用

使用 updatewrapper 构造更新条件:

@test
public void updateuserbyupdatewrapper() {
    updatewrapper<iuser> updatewrapper = new updatewrapper<>();
    updatewrapper.eq("user_name", "王小五").set("email", "wxw@qq.com");
    usermapper.update(null, updatewrapper);
}

2.5 事务管理

事务的配置

在服务层方法上使用 @transactional 注解来确保操作的原子性。

@service
public class userservice {

    @autowired
    private iusermapper usermapper;

    @transactional
    public 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`)
) engine=innodb default charset=utf8mb3;

3.2 引入依赖

pom.xml 中添加代码生成器的依赖:

<dependency>
    <groupid>com.baomidou</groupid>
    <artifactid>mybatis-plus-generator</artifactid>
    <version>3.4.0</version>
</dependency>
<dependency>
    <groupid>org.apache.velocity</groupid>
    <artifactid>velocity-engine-core</artifactid>
    <version>2.0</version>
</dependency>

3.3 配置文件

application.yml 中配置数据库连接:

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/generate?servertimezone=utc&useunicode=true&characterencoding=utf-8&allowpublickeyretrieval=true
    username: root
    password: 123456
    driver-class-name: com.mysql.cj.jdbc.driver

3.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?servertimezone=utc&useunicode=true&characterencoding=utf-8&allowpublickeyretrieval=true")
            .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);
}

总结与学习成果

本篇文章,您将能够获得以下知识和技能:

  1. 环境搭建:您将学会如何在 spring boot 项目中引入 mybatis-plus,并配置必要的依赖和数据库连接。
  2. 实体类与mapper接口:您将了解如何创建实体类来映射数据库表,以及如何定义 mapper 接口来操作数据库。
  3. crud操作:您将掌握使用 mybatis-plus 进行基础的增删改查操作,包括单条记录和批量操作的处理。
  4. 条件构造器:您将学会使用 querywrapper 和 updatewrapper 来构建复杂的查询和更新条件,提高代码的可读性和维护性。
  5. 事务管理:您将了解如何在服务层方法上使用 @transactional 注解来确保数据库操作的原子性。
  6. 安全性实践:您将学到如何防止 sql 注入攻击,并对敏感数据进行加密处理,增强应用的安全性。
  7. 性能优化:您将探索查询优化技巧和缓存策略,以提高数据库操作的性能。
  8. 版本兼容性与迁移:您将了解不同版本的 mybatis-plus 之间的差异,并学会如何将旧版本迁移到新版本。
  9. 实际应用场景:您将通过实际案例分析,了解 mybatis-plus 在解决实际问题中的应用。
  10. 监控与日志:您将学会如何配置和使用 mybatis-plus 的日志记录功能,以及如何监控数据库操作的性能。
  11. 代码生成器:您将掌握如何使用 mybatis-plus 提供的代码生成器来快速生成项目代码,提高开发效率。

通过这些内容,您不仅能够深入了解 mybatis-plus 的强大功能,还能够将这些知识应用到实际项目中,提升您的开发能力和项目质量。希望这篇文章能够帮助您在 spring boot 和 mybatis-plus 的学习之路上更进一步。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com