springboot整合mybatisplus的方法详解

下面我将介绍Spring Boot整合Mybatis-Plus的详细方法,包括项目环境搭建、依赖引入、配置文件设置、代码实现等内容。

环境搭建

在进行整合前首先需要搭建好Spring Boot项目的开发环境,可以使用IDE工具,如IntelliJ IDEA、Eclipse等,也可以通过Spring Initializr快速生成一个Spring Boot项目的基础结构。

依赖引入

在pom.xml中添加Mybatis-Plus和MySQL的依赖:

<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>3.4.0</version>
</dependency>
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.23</version>
</dependency>

配置文件设置

在application.yml或application.properties中添加数据库的配置信息:

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/springboot_mybatisplus_demo?UseUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
    driver-class-name: com.mysql.cj.jdbc.Driver
    username: root
    password: root
  jpa:
    show-sql: true
mybatis-plus:
  mapper-locations: classpath*:mapper/*.xml
  configuration:
    map-underscore-to-camel-case: true

其中,datasource配置了数据库的连接信息,mybatis-plus的mapper-locations配置了mapper文件存放路径,并将数据库中的下划线命名自动转换为Java的驼峰式命名。

代码实现

整合Mybatis-Plus的核心代码就是创建一个mapper接口并继承Mybatis-Plus的BaseMapper接口,自动继承了常用的增、删、改、查等方法:

@Mapper
public interface UserMapper extends BaseMapper<User> {

}

另外,可以在mapper接口中自定义SQL语句或使用注解实现更为复杂的操作。

至此,Spring Boot整合Mybatis-Plus的方法就介绍完毕了。

下面分别给出Spring Boot整合Mybatis-Plus的XML配置和注解配置两个示例。

XML配置

  1. 配置pom.xml文件

添加需要用到的依赖:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    <version>2.3.4.RELEASE</version>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-jdbc</artifactId>
    <version>2.3.4.RELEASE</version>
</dependency>
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>3.4.0</version>
</dependency>
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.23</version>
</dependency>
  1. 配置application.yml文件

添加数据库相关的配置:

spring:
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://localhost:3306/db_test?useUnicode=true&characterEncoding=utf-8&serverTimezone=UTC
    username: root
    password: root
  jpa:
    show-sql: true
mybatis-plus:
  mapper-locations: classpath*:mapper/*.xml
  1. 创建mapper接口继承BaseMapper
@Mapper
public interface UserMapper extends BaseMapper<User> {
}
  1. 创建User类
@Data
@TableName("t_user")
public class User {
    private Long id;
    private String name;
    private Integer age;
}
  1. 创建SQL文件

在src/main/resources/mapper下创建UserMapper.xml,编写相应的SQL语句。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
 PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.example.demo.mapper.UserMapper">
    <resultMap id="BaseResultMap" type="com.example.demo.entity.User">
        <id column="id" property="id" />
        <result column="name" property="name" />
        <result column="age" property="age" />
    </resultMap>

    <sql id="Base_Column_List">
        id, name, age
    </sql>

    <select id="selectById" resultMap="BaseResultMap">
        SELECT
        <include refid="Base_Column_List"/>
        FROM t_user
        WHERE id = #{id}
    </select>

    <select id="selectAll" resultMap="BaseResultMap">
        SELECT
        <include refid="Base_Column_List"/>
        FROM t_user
    </select>

    <insert id="insert" parameterType="com.example.demo.entity.User" useGeneratedKeys="true" keyProperty="id" >
        INSERT INTO t_user(name,age) VALUES(#{name},#{age})
    </insert>

    <update id="update" parameterType="com.example.demo.entity.User">
        UPDATE t_user SET name=#{name} WHERE id=#{id}
    </update>

    <delete id="deleteById" parameterType="Long">
        DELETE FROM t_user WHERE id=#{id}
    </delete>

</mapper>
  1. 创建Service和Controller层
@Service
public class UserServiceImpl implements UserService {

    @Autowired
    private UserMapper userMapper;

    @Override
    public User findById(Long id) {
        return userMapper.selectById(id);
    }

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

    @Override
    public int save(User user) {
        return userMapper.insert(user);
    }

    @Override
    public int update(User user) {
        return userMapper.updateById(user);
    }

    @Override
    public int deleteById(Long id) {
        return userMapper.deleteById(id);
    }
}

@RestController
@RequestMapping("/user")
public class UserController {

    @Autowired
    private UserService userService;

    @GetMapping("/{id}")
    public User findById(@PathVariable Long id) {
        return userService.findById(id);
    }

    @GetMapping("/")
    public List<User> findAll() {
        return userService.findAll();
    }

    @PostMapping("/")
    public int save(User user) {
        return userService.save(user);
    }

    @PutMapping("/")
    public int update(User user) {
        return userService.update(user);
    }

    @DeleteMapping("/{id}")
    public int deleteById(@PathVariable Long id) {
        return userService.deleteById(id);
    }
}

至此,整合Mybatis-Plus的示例代码就完成了。在这个示例中,我们使用了XML形式的mapper文件来完成SQL语句的编写和数据的增、删、改、查操作。XML的方式相对于注解的方式可以更为灵活地进行各种复杂的SQL操作。

注解方式配置

  1. 修改pom.xml文件

添加mybatis-plus和mysql的依赖:

<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>3.4.0</version>
</dependency>
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.23</version>
</dependency>
  1. 添加配置

在application.yml或application.properties中配置数据源和mybatis-plus的相关信息:

server:
  port: 8080

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

  jpa:
    show-sql: true

# mybatis-plus
mybatis-plus:
  # 扫描mapper.xml文件
  mapper-locations:
    - classpath:/mapper/*.xml
  # mybatis-plus配置
  configuration:
    map-underscore-to-camel-case: true
  1. 创建User和UserMapper

User类:

@Data
public class User {
    private Long id;

    private String name;

    private Integer age;
}

UserMapper类:

@Mapper
public interface UserMapper extends BaseMapper<User> {

    // 基本的CRUD操作,都不用自己写了

    /**
     * 根据名称查找
     *
     * @param name 名称
     * @return User
     */
    @Select("SELECT * FROM user WHERE name=#{name}")
    User findByName(@Param("name") String name);
}

在Mybatis-Plus中继承了BaseMapper之后,就已经具备了基本的CRUD操作,无需自己再写SQL语句了。这里演示了一个自定义的查询操作。

  1. 编写controller与service
@Service
public class UserServiceImpl implements UserService {

    @Autowired
    private UserMapper userMapper;

    @Override
    public User getById(Long id){
        return userMapper.selectById(id);
    }

    @Override
    public boolean save(User user) {
        return userMapper.insert(user) > 0;
    }

    @Override
    public boolean updateById(User user) {
        return userMapper.updateById(user) > 0;
    }

    @Override
    public boolean removeById(Long id) {
        return userMapper.deleteById(id) > 0;
    }

}

@RestController
@RequestMapping("/user")
public class UserController {

    @Autowired
    private UserService userService;

    @GetMapping("/{id}")
    public User getOne(@PathVariable Long id){
        return userService.getById(id);
    }

    @PostMapping("/")
    public String create(User user){
        return userService.save(user) ? "success" : "failed";
    }

    @PutMapping("/")
    public String update(User user){
        return userService.updateById(user) ? "success" : "failed";
    }

    @DeleteMapping("/{id}")
    public String delete(@PathVariable Long id){
        return userService.removeById(id) ? "success" : "failed";
    }

    @GetMapping("/find")
    public User findByName(String name){
        return userService.findByName(name);
    }

}

至此,整合Mybatis-Plus的注解方式配置就完成了。在这个示例中,我们使用了基本的CRUD操作和自定义的查询操作。注解方式相对于XML的方式也很灵活,不需创建XML文件,所有SQL语句都使用注解的形式在代码中体现。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:springboot整合mybatisplus的方法详解 - Python技术站

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

相关文章

  • JSP 中文字符处理代码

    JSP 中文字符处理是Web开发中一个常见问题,本文针对JSP中文字符处理提供一些攻略。 一、确保JSP页面编码和文件编码一致 JSP页面的编码格式需要和文件编码格式一致,包括jsp文件本身的编码、jsp引用的外部文件(如CSS、JS等)和JSP应用程序中的所有文件。可以使用以下代码在JSP页面中指定编码格式: <%@ page contentType…

    Java 2023年6月15日
    00
  • Spring-基于Spring使用自定义注解及Aspect实现数据库切换操作

    下面是详细讲解基于Spring使用自定义注解及Aspect实现数据库切换操作的完整攻略。 简介 随着项目规模的增大,往往需要使用多个数据库,每个库分配到不同的模块或者不同的服务。如何快速方便地切换数据库是我们需求的核心,本文主要介绍基于Spring使用自定义注解及Aspect实现数据库切换操作。 准备工作 首先需要安装Spring Framework,建议使…

    Java 2023年5月20日
    00
  • SpringData Repository Bean方法定义规范代码实例

    下面是SpringData Repository Bean方法定义规范的完整攻略。 什么是Spring Data Repository Bean? Spring Data是Spring框架提供的一个子项目,它为各种数据存储技术提供了统一的访问方式。Spring Data Repository是Spring Data中最核心的组件之一,它提供了一种声明式的方式…

    Java 2023年5月20日
    00
  • 详解Java中日期工具类的操作

    详解Java中日期工具类的操作 Java 提供了 java.util.Date 和 java.util.Calendar 两个类来操作日期,但是由于它们的设计缺陷,使用起来不够方便,因此出现了许多常用且好用的日期工具类,如:Joda-Time、Time4j、Date4j、Apache Commons Lang 等。本文将以 Apache Commons La…

    Java 2023年5月20日
    00
  • java线程池中线程数量到底是几

    首先让我们来了解一下Java线程池。 线程池是一种线程使用方式的抽象,它可以优化多线程的资源使用情况。通过重复利用已创建的线程,降低线程创建和销毁的开销,提高响应速度。 而Java中的线程池主要由ThreadPoolExecutor类实现,该类有以下构造方法 public ThreadPoolExecutor(int corePoolSize, //核心线程…

    Java 2023年5月26日
    00
  • java中的static{}块的实例详解

    Java中的static{}块的实例详解 概述 在Java中,可以使用static关键字定义的静态代码块static {},这个静态代码块在类被加载时执行,且只执行一次。可以用于在类加载时进行一些必要的初始化操作等。 示例说明一 public class StaticTest { static { System.out.println("静态代码块…

    Java 2023年5月23日
    00
  • Mysql数据库编码问题 (修改数据库,表,字段编码为utf8)

    当我们在使用MySQL数据库时,可能会遇到中文乱码的问题。这个问题的根源就是MySQL数据库本身的编码问题。如果我们想要避免这种问题的出现,我们需要将数据库、表和字段的编码都设置为utf8编码。 以下是MySQL数据库编码问题的完整攻略: 1. 确定数据库、表和字段的当前编码 使用以下命令查看当前数据库的编码: SHOW CREATE DATABASE da…

    Java 2023年6月16日
    00
  • java整合SSM框架的图文教程

    下面是Java整合SSM框架的完整攻略: 第一步:环境配置 在整合SSM框架前,需要先准备好相关环境。具体包括以下步骤: 安装JDK并配置环境变量。 安装Tomcat,并在Eclipse或IntelliJ IDEA中配置Tomcat服务器。 安装MySQL数据库,并在本机或远程服务器中创建相应数据库。 下载SSM框架的相关jar包,并将它们放置在项目的cla…

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