springboot集成mybatisplus实例详解

关于“springboot集成mybatisplus实例详解”的攻略,首先我们需要明确一个事实——mybatisplus 是基于mybatis进行改进的一种ORM(对象关系映射)框架,它能够有效地提高我们开发项目的效率与代码的可维护性。

一、相关依赖引入

  • 首先,我们需要在 pom.xml 文件中添加以下依赖:
<!-- mybatis-plus的核心依赖 -->
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>3.3.2.tmp</version>
</dependency>
<!-- 这里使用的是mysql数据库,所以需要添加mysql的依赖 -->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.23</version>
</dependency>

二、配置 SQLSessionFactory

  • 首先,我们需要在 application.yml 文件中配置mybatisplus的相关参数:
spring:
  datasource:
    url: jdbc:mysql://localhost:3306/db_test?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8
    username: root
    password: root
    driver-class-name: com.mysql.jdbc.Driver
mybatis-plus:
  mapper-locations: classpath:mapper/*.xml
  type-aliases-package: com.example.pojo
  global-config:
    # 下划线转驼峰
    db-config:
      id-type: auto
      column-underline: true
  • 其中,mybatis-plus 的核心配置项有以下几个:

  • mapper-locations:指定mybatis的mapper.xml文件的位置;

  • type-aliases-package:指定mybatis的model类所在的包路径;
  • global-config:设置一些全局配置,比如主键生成策略等。

在这里,我们使用了默认配置,即自动采用驼峰命名法规则,不需要额外的配置。

  • 然后,在配置完 application.yml 文件后,我们需要在代码中编写 SQLSessionFactory 的配置类,其代码如下所示:
@Configuration
public class MybatisPlusConfig {

    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor() {
        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();

        return interceptor;
    }

    @Bean
    public ISqlInjector sqlInjector() {
        return new DefaultSqlInjector();
    }

    @Bean(name = "sqlSessionFactory")
    public SqlSessionFactory sqlSessionFactory(@Autowired DataSource dataSource) throws Exception {
        SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
        sessionFactory.setDataSource(dataSource);

        String mapperLocations = "classpath*:mapper/*.xml";
        Resource[] resources = new PathMatchingResourcePatternResolver().getResources(mapperLocations);
        sessionFactory.setMapperLocations(resources);

        // 这里使用的是MybatisSqlSessionFactoryBean,因为要用到MybatisPlusInterceptor这个类
        MybatisSqlSessionFactoryBean sqlSessionFactory = new MybatisSqlSessionFactoryBean();
        sqlSessionFactory.setDataSource(dataSource);
        sqlSessionFactory.setPlugins(mybatisPlusInterceptor());

        return sqlSessionFactory.getObject();
    }

}
  • 其中,主要配置如下:

  • sqlSessionFactor:用于配置SQLSessionFactory,它是mybatis的核心类,用于管理所有的Mapper对象和维护与数据库的连接;

  • mapperLocations:指定Mapper XML文件所在的包路径。
  • MybatisPlusInterceptor:mybatis-plus提供的拦截器,用于在SQL执行前/后进行一些特殊的处理。

三、添加Mapper和Service

  • 在添加 Mapper 类之前,我们需要先添加一个对应的Pojo类,它将作为Mapper类映射的Java对象。如下所示:
@Data
@NoArgsConstructor
@AllArgsConstructor
public class User {

    private Integer id;
    private String name;
    private Integer age;
    private String email;

}
  • 接下来,我们在 mybatis-plus 中添加一个Mapper类,用于对数据库进行增删改查操作:
@Repository
public interface UserMapper extends BaseMapper<User> {

}
  • 然后,我们添加一个Service类(也就是服务层),它用于实现具体的业务逻辑:
@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {

    private final UserMapper userMapper;

    @Autowired
    public UserServiceImpl(UserMapper userMapper) {
        this.userMapper = userMapper;
    }

    @Override
    public List<User> queryAllUsers() {
        return userMapper.selectList(null);
    }

    @Override
    public User queryUserById(Integer id) {
        return userMapper.selectById(id);
    }

    @Override
    public void addUser(User user) {
        userMapper.insert(user);
    }

    @Override
    public void updateUser(User user) {
        userMapper.updateById(user);
    }

    @Override
    public void deleteUser(Integer id) {
        userMapper.deleteById(id);
    }
}

在这个类里面,我们实现了UserMapper接口中定义的增删改查方法,其中,ServiceImpl 是mybatis-plus提供的一个 BaseService 实现,用于简化Service的编写过程,而 @Service 注解则表示这是一个服务层的类。

四、示例代码演示

接下来,我们来演示一下使用 mybatis-plus 在 SpringBoot 中访问mysql数据库的正确姿势。首先,我们分别编写控制器和视图层,实现对数据库表的增删改查操作。

示例1:添加用户

  • 用户在界面上输入信息后,传递给后端请求的 URL 如下:
@RequestMapping(value = "/addUser", method = RequestMethod.POST)
public ModelAndView addUser(@ModelAttribute User user) {
    userService.addUser(user);
    return listUsers();
}
  • 在后端,我们通过 UserService 的实现类,调用 addUser() 函数,将获取到的user对象添加至数据库,代码如下:
@Override
public void addUser(User user) {
    userMapper.insert(user);
}

示例2:查询用户

  • 用户进入查询界面,请求的 URL 如下:
@RequestMapping(value = "/listUsers", method = RequestMethod.GET)
public ModelAndView listUsers() {
    ModelAndView modelAndView = new ModelAndView();
    modelAndView.setViewName("userList");
    modelAndView.addObject("userList", userService.queryAllUsers());
    return modelAndView;
}

在后端,我们通过 UserService 的queryAllUsers()函数获取到已有的所有用户,并将其保存在 ModelAndView 对象中,代码如下所示:

@Override
public List<User> queryAllUsers() {
    return userMapper.selectList(null);
}

最后,在前端界面,我们使用 Thymeleaf 模板引擎来实现查询结果表格的展示,代码如下:

<table>
    <tr>
        <th>ID</th>
        <th>Name</th>
        <th>Age</th>
        <th>Email</th>
    </tr>
    <tr th:each="user : ${userList}">
        <td th:text="${user.id}"></td>
        <td th:text="${user.name}"></td>
        <td th:text="${user.age}"></td>
        <td th:text="${user.email}"></td>
    </tr>
</table>

至此,我们就成功的实现了在 SpringBoot 中使用 mybatis-plus 访问 mysql 数据库的全过程。

总结

本篇文章详细介绍了mybatis-plus在SpringBoot中的集成方法,并通过实例代码演示,让大家了解到如何通过mabatis-plus进行数据库增删改查操作。在实战中,掌握好mybatis-plus,能够让我们更快地进行Java Web项目开发,提升开发效率和代码质量。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:springboot集成mybatisplus实例详解 - Python技术站

(0)
上一篇 2023年5月19日
下一篇 2023年5月19日

相关文章

  • SpringBoot自定义Starter与自动配置实现方法详解

    SpringBoot自定义Starter与自动配置实现方法详解 什么是SpringBoot Starter SpringBoot Starter是一种用于扩展SpringBoot框架功能的一种技术手段,它可以将应用程序中涉及到的依赖库集成到SpringBoot环境中,使得应用程序更加简单、灵活且易于扩展。 Starter的实现过程主要有自定义Starter和…

    Java 2023年5月20日
    00
  • 几道和「黑洞照片」那种海量数据有关的算法问题

    这个话题涉及到海量数据处理和算法问题,我会尽可能详细地解释来帮助大家了解。 大数据处理的常用算法 排序算法 排序是大数据处理中最常用的算法之一。这是因为,在许多情况下,我们需要对从数据库中获取的大量数据进行排序,以便更好地分析和使用它们。以下是一些常用的排序算法: 冒泡排序:这是一种简单的排序算法,在较小的数据集中表现良好,但对于大规模数据集则效率较低。 快…

    Java 2023年5月19日
    00
  • 混乱的Java日志体系及集成jar包梳理分析

    混乱的Java日志体系及集成jar包梳理分析是一篇旨在帮助Java开发者理解Java日志体系和集成jar包的文章。本文将围绕Java日志体系的问题、集成jar包的例子、分析Java日志框架的实现等多方面展开讲解。 一、Java日志体系的问题 在Java开发过程中,我们经常需要使用日志来帮助我们进行调试。但是,Java日志体系却十分混乱,不同的日志框架都有着自…

    Java 2023年5月19日
    00
  • Java基础教程之对象的方法与数据成员

    Java基础教程之对象的方法与数据成员 对象是Java编程中的一个重要概念。对象可以看作是一个包含数据和方法的实体。数据成员是对象中的变量,存储对象的状态信息;方法是定义对象的行为的函数,用来对对象进行操作。 定义一个对象 在Java中,对象的定义通常包括以下步骤: 定义类(class) 定义数据成员(member variable) 定义方法(method…

    Java 2023年5月26日
    00
  • 关于JAVA中stream流的基础处理(获取对象字段和对象批量处理等)

    以下是关于JAVA中stream流的基础处理的完整攻略: 1. Stream概述 Stream是JAVA 8中新增的一个API,定义在Java.util.stream中。与I/O中的字节与字符的input与output流不同,Stream是操作集合和数组的高级抽象。Stream支持函数式编程,可以方便地通过filter、map、reduce等操作快速分析、处…

    Java 2023年5月26日
    00
  • Spring Security权限管理实现接口动态权限控制

    以下是关于Spring Security权限管理实现接口动态权限控制的完整攻略: 1. 什么是接口动态权限控制 接口动态权限控制即根据用户的权限动态的对接口进行权限控制,这个过程可以分为两步:一是获取用户所拥有的权限,二是根据用户所拥有的权限动态的对接口进行控制。 2. Spring Security实现接口动态权限控制的步骤 以下是实现Spring Sec…

    Java 2023年6月3日
    00
  • Java数组(Array)最全汇总(上篇)

    Java数组(Array)最全汇总(上篇)攻略 为什么要学习Java数组? Java数组是Java编程中基本的数据结构之一。在Java中,我们使用数组来存储和操作一组相同类型的数据。使用数组可以更高效地处理大量的数据,提高程序的性能。 Java数组的基本概念 Java数组是一个包含相同数据类型的数据结构。在Java中,我们可以使用以下语法定义一个数组: da…

    Java 2023年5月26日
    00
  • Java Apache Commons报错“TransformerException”的原因与解决方法

    “ChainProcessorException”是Java的Struts框架中的一个异常,通常由以下原因之一引起: 链处理器错误:如果Struts框架无法处理链,则可能会出现此异常。例如,可能会使用错误的拦截器或拦截器顺序。 链处理器配置错误:如果Struts框架中的链处理器配置不正确,则可能会出现此异常。例如,可能会缺少必需的拦截器或拦截器配置。 以下是…

    Java 2023年5月5日
    00
合作推广
合作推广
分享本页
返回顶部