• 精创网络
  • 精创网络
  • 首页
  • 产品优势
  • 产品价格
  • 产品功能
  • 新闻中心
  • 关于我们
  • 在线客服
  • 登录
  • DDoS防御和CC防御
  • 精创网络云防护,专注于大流量DDoS防御和CC防御。可防止SQL注入,以及XSS等网站安全漏洞的利用。
  • 免费试用
  • 新闻中心
  • 关于我们
  • 资讯动态
  • 帮助文档
  • 白名单保护
  • 常见问题
  • 政策协议
  • 帮助文档
  • mybatis plus与mysql数据库的最佳实践
  • 来源:www.jcwlyf.com浏览:8更新:2025-10-31
  • 在现代的软件开发中,高效地与数据库进行交互是至关重要的。MyBatis Plus 作为 MyBatis 的增强工具,极大地简化了与数据库的交互过程,而 MySQL 则是广泛使用的开源关系型数据库。本文将详细介绍 MyBatis Plus 与 MySQL 数据库的最佳实践,帮助开发者更好地利用这两个工具进行项目开发。

    环境搭建

    首先,我们需要搭建使用 MyBatis Plus 和 MySQL 的开发环境。这里以 Spring Boot 项目为例进行说明。

    1. 创建 Spring Boot 项目:可以使用 Spring Initializr 网站(https://start.spring.io/)来快速创建一个基本的 Spring Boot 项目,添加以下依赖:Spring Web、MyBatis Plus、MySQL Driver。

    2. 配置数据库连接:在 application.properties 或 application.yml 文件中配置 MySQL 数据库的连接信息,示例如下:

    spring.datasource.url=jdbc:mysql://localhost:3306/your_database_name?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC
    spring.datasource.username=your_username
    spring.datasource.password=your_password
    spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

    3. 配置 MyBatis Plus:在项目中添加 MyBatis Plus 的配置类,示例代码如下:

    import com.baomidou.mybatisplus.annotation.DbType;
    import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
    import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    
    @Configuration
    public class MyBatisPlusConfig {
        @Bean
        public MybatisPlusInterceptor mybatisPlusInterceptor() {
            MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
            interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
            return interceptor;
        }
    }

    实体类与数据库表映射

    MyBatis Plus 可以通过实体类与数据库表进行映射,方便进行数据库操作。

    1. 创建实体类:在项目中创建与数据库表对应的实体类,使用注解来指定表名和字段映射,示例如下:

    import com.baomidou.mybatisplus.annotation.TableId;
    import com.baomidou.mybatisplus.annotation.TableName;
    import lombok.Data;
    
    @Data
    @TableName("user")
    public class User {
        @TableId
        private Long id;
        private String username;
        private String password;
    }

    2. 自动生成实体类:MyBatis Plus 提供了代码生成器,可以根据数据库表自动生成实体类、Mapper 接口和 Service 层代码。示例代码如下:

    import com.baomidou.mybatisplus.generator.FastAutoGenerator;
    import com.baomidou.mybatisplus.generator.config.OutputFile;
    import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;
    
    import java.util.Collections;
    
    public class CodeGenerator {
        public static void main(String[] args) {
            FastAutoGenerator.create("jdbc:mysql://localhost:3306/your_database_name", "your_username", "your_password")
                   .globalConfig(builder -> {
                        builder.author("your_name") // 设置作者
                               .outputDir("src/main/java"); // 指定输出目录
                    })
                   .packageConfig(builder -> {
                        builder.parent("com.example.demo") // 设置父包名
                               .moduleName("module") // 设置模块名
                               .pathInfo(Collections.singletonMap(OutputFile.xml, "src/main/resources/mapper")); // 设置mapperXml生成路径
                    })
                   .strategyConfig(builder -> {
                        builder.addInclude("user") // 设置需要生成的表名
                               .addTablePrefix("t_", "c_"); // 设置过滤表前缀
                    })
                   .templateEngine(new FreemarkerTemplateEngine()) // 使用Freemarker引擎模板,默认的是Velocity引擎模板
                   .execute();
        }
    }

    基本的 CRUD 操作

    MyBatis Plus 提供了丰富的方法来进行基本的 CRUD(创建、读取、更新、删除)操作。

    1. 创建 Mapper 接口:创建继承自 BaseMapper 的 Mapper 接口,示例如下:

    import com.baomidou.mybatisplus.core.mapper.BaseMapper;
    import com.example.demo.entity.User;
    
    public interface UserMapper extends BaseMapper<User> {
    }

    2. 添加数据:使用 Mapper 接口的 insert 方法添加数据,示例代码如下:

    import com.example.demo.entity.User;
    import com.example.demo.mapper.UserMapper;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Service;
    
    @Service
    public class UserService {
        @Autowired
        private UserMapper userMapper;
    
        public void insertUser() {
            User user = new User();
            user.setUsername("test");
            user.setPassword("123456");
            userMapper.insert(user);
        }
    }

    3. 查询数据:使用 Mapper 接口的 select 方法查询数据,示例代码如下:

    import com.example.demo.entity.User;
    import com.example.demo.mapper.UserMapper;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Service;
    
    import java.util.List;
    
    @Service
    public class UserService {
        @Autowired
        private UserMapper userMapper;
    
        public List<User> selectAllUsers() {
            return userMapper.selectList(null);
        }
    }

    4. 更新数据:使用 Mapper 接口的 update 方法更新数据,示例代码如下:

    import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
    import com.example.demo.entity.User;
    import com.example.demo.mapper.UserMapper;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Service;
    
    @Service
    public class UserService {
        @Autowired
        private UserMapper userMapper;
    
        public void updateUser() {
            UpdateWrapper<User> updateWrapper = new UpdateWrapper<>();
            updateWrapper.eq("username", "test");
            User user = new User();
            user.setPassword("654321");
            userMapper.update(user, updateWrapper);
        }
    }

    5. 删除数据:使用 Mapper 接口的 delete 方法删除数据,示例代码如下:

    import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
    import com.example.demo.entity.User;
    import com.example.demo.mapper.UserMapper;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Service;
    
    @Service
    public class UserService {
        @Autowired
        private UserMapper userMapper;
    
        public void deleteUser() {
            QueryWrapper<User> queryWrapper = new QueryWrapper<>();
            queryWrapper.eq("username", "test");
            userMapper.delete(queryWrapper);
        }
    }

    分页查询

    在实际开发中,分页查询是非常常见的需求。MyBatis Plus 提供了简单的分页查询功能。

    示例代码如下:

    import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
    import com.baomidou.mybatisplus.core.metadata.IPage;
    import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
    import com.example.demo.entity.User;
    import com.example.demo.mapper.UserMapper;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Service;
    
    @Service
    public class UserService {
        @Autowired
        private UserMapper userMapper;
    
        public IPage<User> selectUserPage(int pageNum, int pageSize) {
            Page<User> page = new Page<>(pageNum, pageSize);
            QueryWrapper<User> queryWrapper = new QueryWrapper<>();
            return userMapper.selectPage(page, queryWrapper);
        }
    }

    条件构造器

    MyBatis Plus 的条件构造器可以方便地构建复杂的查询条件。

    示例代码如下:

    import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
    import com.example.demo.entity.User;
    import com.example.demo.mapper.UserMapper;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Service;
    
    import java.util.List;
    
    @Service
    public class UserService {
        @Autowired
        private UserMapper userMapper;
    
        public List<User> selectUsersByCondition() {
            QueryWrapper<User> queryWrapper = new QueryWrapper<>();
            queryWrapper.like("username", "test")
                   .gt("id", 10);
            return userMapper.selectList(queryWrapper);
        }
    }

    事务管理

    在进行数据库操作时,事务管理是非常重要的。Spring Boot 提供了简单的事务管理功能。

    示例代码如下:

    import com.example.demo.entity.User;
    import com.example.demo.mapper.UserMapper;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Service;
    import org.springframework.transaction.annotation.Transactional;
    
    @Service
    public class UserService {
        @Autowired
        private UserMapper userMapper;
    
        @Transactional
        public void insertUsersInTransaction() {
            User user1 = new User();
            user1.setUsername("user1");
            user1.setPassword("123");
            userMapper.insert(user1);
    
            User user2 = new User();
            user2.setUsername("user2");
            user2.setPassword("456");
            userMapper.insert(user2);
        }
    }

    通过以上的最佳实践,我们可以看到 MyBatis Plus 与 MySQL 数据库结合使用可以极大地提高开发效率,减少代码量。开发者可以根据实际需求灵活运用 MyBatis Plus 的各种功能,实现高效的数据库交互。同时,在实际项目中,还需要注意数据库的性能优化、事务管理等方面的问题,以确保系统的稳定性和可靠性。

  • 关于我们
  • 关于我们
  • 服务条款
  • 隐私政策
  • 新闻中心
  • 资讯动态
  • 帮助文档
  • 网站地图
  • 服务指南
  • 购买流程
  • 白名单保护
  • 联系我们
  • QQ咨询:189292897
  • 电话咨询:16725561188
  • 服务时间:7*24小时
  • 电子邮箱:admin@jcwlyf.com
  • 微信咨询
  • Copyright © 2025 All Rights Reserved
  • 精创网络版权所有
  • 皖ICP备2022000252号
  • 皖公网安备34072202000275号