SpringBoot整合MyBatis逆向工程及 MyBatis通用Mapper实例详解

介绍

本文从零开始讲解SpringBoot整合MyBatis逆向工程及MyBatis通用Mapper的详细步骤和示例代码。MyBatis是一款优秀的ORM框架,通过逆向工程可以将关系型数据库的表结构生成对应的Java Bean,以及相关的Mapper和XML映射文件,以减少开发量。而MyBatis通用Mapper可以进一步提高开发效率,省去了大量的Mapper编写工作。SpringBoot则提供了一种快速开发、方便集成的利器,通过SpringBoot整合MyBatis逆向工程和MyBatis通用Mapper,可以快速完成项目的开发。

环境准备

  • JDK1.8
  • Maven3.0以上
  • IntelliJ IDEA或Eclipse
  • SpringBoot
  • MyBatis逆向工程插件generator
  • MyBatis通用Mapper插件mapper-helper

MyBatis逆向工程

配置逆向工程插件

pom.xml文件中增加MyBatis Generator插件(这里使用的是MySQL数据库):

<build>
    <plugins>
        <plugin>
            <groupId>org.mybatis.generator</groupId>
            <artifactId>mybatis-generator-maven-plugin</artifactId>
            <version>1.3.2</version>
            <configuration>
                <configurationFile>src/main/resources/generator/generatorConfig.xml</configurationFile>
                <verbose>true</verbose>
                <overwrite>true</overwrite>
            </configuration>
            <dependencies>
                <dependency>
                    <groupId>mysql</groupId>
                    <artifactId>mysql-connector-java</artifactId>
                    <version>5.1.30</version>
                    <scope>runtime</scope>
                </dependency>
              </dependencies>
        </plugin>
    </plugins>
</build>

配置generator.xml

在src/main/resources/generator目录下创建generatorConfig.xml文件:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE generatorConfiguration PUBLIC
        "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
        "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
<generatorConfiguration>
  <context id="MySql" targetRuntime="MyBatis3">
    <commentGenerator>
      <property name="suppressDate" value="true"/>
      <property name="suppressAllComments" value="true"/>
    </commentGenerator>
    <jdbcConnection driverClass="com.mysql.jdbc.Driver"
        connectionURL="jdbc:mysql://localhost:3306/test?useUnicode=true&amp;characterEncoding=utf-8&amp;useSSL=false"
        userId="root"
        password="root">
    </jdbcConnection>
    <javaTypeResolver>
      <property name="forceBigDecimals" value="false"/>
    </javaTypeResolver>
    <javaModelGenerator targetPackage="com.example.demo.model" targetProject="src/main/java">
      <property name="enableSubPackages" value="true"/>
      <property name="trimStrings" value="true"/>
    </javaModelGenerator>
    <sqlMapGenerator targetPackage="mapper" targetProject="src/main/resources">
      <property name="enableSubPackages" value="true"/>
    </sqlMapGenerator>
    <javaClientGenerator targetPackage="com.example.demo.dao" targetProject="src/main/java" type="XMLMAPPER">
      <property name="enableSubPackages" value="true"/>
    </javaClientGenerator>
    <table tableName="user" domainObjectName="User"></table>
  </context>
</generatorConfiguration>

该文件的作用是配置逆向工程的相关信息,包括连接数据库的信息、生成代码的信息、生成的表和实体类等。

生成代码

在IDEA或Eclipse中打开终端,输入以下命令即可生成代码:

mvn mybatis-generator:generate

生成的代码在src/main/java和src/main/resources中。

MyBatis通用Mapper

配置通用Mapper插件

pom.xml文件中增加mapper-helper插件(这里使用的是MySQL数据库):

<build>
    <plugins>
        <plugin>
            <groupId>org.mybatis.generator</groupId>
            <artifactId>mybatis-generator-maven-plugin</artifactId>
            <version>1.3.2</version>
            <configuration>
                <configurationFile>src/main/resources/generator/generatorConfig.xml</configurationFile>
                <verbose>true</verbose>
                <overwrite>true</overwrite>
            </configuration>
            <dependencies>
                <dependency>
                    <groupId>mysql</groupId>
                    <artifactId>mysql-connector-java</artifactId>
                    <version>5.1.30</version>
                    <scope>runtime</scope>
                </dependency>
              </dependencies>
        </plugin>
        <plugin>
            <groupId>com.github.abel533</groupId>
            <artifactId>mapper-helper-maven-plugin</artifactId>
            <version>3.0.5</version>
            <executions>
                <execution>
                    <phase>compile</phase>
                    <goals>
                        <goal>generate</goal>
                    </goals>
                    <configuration>
                        <configFile>src/main/resources/generator/generatorConfig.xml</configFile>
                        <type>MYSQL</type>
                        <extend>true</extend>
                    </configuration>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

配置MyBatis

在src/main/resources目录下创建mybatis-config.xml文件:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
    PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
    "http://mybatis.org/dtd/mybatis-3-config.dtd">

<configuration>
    <typeAliases>
        <package name="com.example.demo.model" />
    </typeAliases>

    <mappers>
        <mapper resource="mapper/UserMapper.xml" />
    </mappers>

    <plugins>
        <plugin interceptor="com.github.abel533.mapperhelper.MapperInterceptor">
            <property name="IDENTITY" value="MYSQL"/>
        </plugin>
    </plugins>
</configuration>

该文件的作用是将实体类别名设置为包路径,将Mapper映射文件加入到配置文件中,并配置通用Mapper插件。

配置Mapper

在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.dao.UserMapper">

    <select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.Integer">
        select
        <include refid="Base_Column_List" />
        from user
        where id = #{id,jdbcType=INTEGER}
    </select>

    <insert id="insert" parameterType="com.example.demo.model.User">
        insert into user (name, age) values (#{name,jdbcType=VARCHAR}, #{age,jdbcType=INTEGER});
    </insert>

    <update id="updateByPrimaryKey" parameterType="com.example.demo.model.User">
        update user
        set name = #{name,jdbcType=VARCHAR},
            age = #{age,jdbcType=INTEGER}
        where id = #{id,jdbcType=INTEGER}
    </update>

    <delete id="deleteByPrimaryKey" parameterType="java.lang.Integer">
        delete from user where id = #{id,jdbcType=INTEGER}
    </delete>

</mapper>

使用通用Mapper

在src/main/java/com/example/demo/service/impl/UserServiceImpl.java中,注入UserMapper:

@Service
public class UserServiceImpl implements UserService {

    //注入Mapper
    @Autowired
    private UserMapper userMapper;

    @Override
    public User getUserById(int id) {
        return this.userMapper.selectByPrimaryKey(id);
    }

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

    @Override
    public int updateUser(User user) {
        return this.userMapper.updateByPrimaryKey(user);
    }

    @Override
    public int deleteUser(int id) {
        return this.userMapper.deleteByPrimaryKey(id);
    }
}

完成以上步骤后,即完成了整合MyBatis逆向工程和MyBatis通用Mapper的工作。

示例

这里提供两个示例:

查询用户

访问地址:http://localhost:8080/user/1

UserController.java:

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

    @Autowired
    private UserService userService;

    @RequestMapping("/{id}")
    public User getUserById(@PathVariable("id") int id) {
        return this.userService.getUserById(id);
    }
}

添加用户

访问地址:http://localhost:8080/user

UserController.java:

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

    @Autowired
    private UserService userService;

    @PostMapping
    public int saveUser(@RequestBody User user) {
        return this.userService.saveUser(user);
    }
}

User.java:

public class User {

    private Integer id;

    private String name;

    private Integer age;

    // getter、setter方法省略
}

以上即为完成了SpringBoot整合MyBatis逆向工程及MyBatis通用Mapper的完整攻略,并提供了两个示例。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:SpringBoot整合MyBatis逆向工程及 MyBatis通用Mapper实例详解 - Python技术站

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

相关文章

  • 如何使用Java持久化框架?

    Java持久化框架是Java程序开发中非常常用的工具之一,可以帮助我们方便地进行数据持久化操作。下面我将为大家详细讲解“如何使用Java持久化框架?”,过程中包含如下内容: Java持久化框架的概念和作用; Java持久化框架的使用步骤; 两个具体的使用示例。 一、Java持久化框架的概念和作用 Java持久化框架(Java Persistence Fram…

    Java 2023年5月11日
    00
  • Java CAS基本实现原理代码实例解析

    下面将为你讲解“Java CAS基本实现原理代码实例解析”的完整攻略。 什么是Java CAS Java CAS是指Java中的“Compare and Swap”(比较和交换)机制,它是实现多线程同步的经典算法。使用CAS,我们可以在不锁定的情况下实现对内存中的变量原子操作,从而为多线程的并发访问提供了保障。 Java CAS实现原理 Java CAS的基…

    Java 2023年5月18日
    00
  • java webApp异步上传图片实现代码

    下面是详细的java webApp异步上传图片实现代码的攻略: 一、介绍 本文将详细讲解如何在Java Web应用程序中实现异步上传图片的功能。异步上传可以提高上传的效率并提升用户体验。本文中的示例代码使用了Spring MVC框架,使用了jQuery的异步文件上传插件。 二、向项目中添加所需的库和插件 首先,需要将所需的库和插件添加到项目中。这些库包含Sp…

    Java 2023年6月2日
    00
  • Java基础教程之八大基本数据类型

    Java基础教程之八大基本数据类型 在Java中,基本数据类型指的是不同类型的数据的原始值,它们是Java程序设计的基础。Java中有八种基本数据类型,分别是: byte:8位有符号整数,取值范围为-128到127; short:16位有符号整数,取值范围为-32768到32767; int:32位有符号整数,取值范围为-2147483648到2147483…

    Java 2023年5月26日
    00
  • JDK14的新特性NullPointerExceptions的使用

    下面是详细讲解“JDK14的新特性NullPointerExceptions的使用”的完整攻略。 什么是NullPointerExceptions NullPointerExceptions 是 Java 程序中最常见的错误之一,它通常会在代码中使用空引用时发生。在 JDK14 中,对于这个问题已经进行了一些新的改进,我们可以更加方便地处理这个问题。 如何使…

    Java 2023年5月27日
    00
  • 详解JAVA中转义字符

    当我们需要在Java中表示一些特殊含义的字符时,会用到转义字符,也就是用一个反斜杠(\)将特殊字符进行转义。Java中转义字符的使用可以大大丰富字符串的表达能力,让我们来详解一下。 转义字符的常见用法 在Java中,转义字符是以反斜杠(\)开头,后面紧跟着代表特殊含义的字符。下面是Java中经常用到的转义字符及其对应的含义: \n:换行符 \t:制表符 \’…

    Java 2023年5月27日
    00
  • 浅谈Java包装类型Long的==操作引发的低级bug

    让我来详细讲解一下关于“浅谈Java包装类型Long的==操作引发的低级bug”的攻略。 什么是Java包装类型 Java包装类型是Java针对基本数据类型提供的类型封装。Java中共有八种基本数据类型,分别是byte、short、int、long、float、double、char和boolean。而Java的基本数据类型都不是对象,因此不能参与到Java…

    Java 2023年5月25日
    00
  • Springboot2.x 使用 Log4j2 异步打印日志的实现

    下面是详细的攻略: 准备工作 首先,我们需要在Spring Boot项目中引入log4j2和log4j2-async两个依赖: <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-log…

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