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日

相关文章

  • SpringBoot超详细深入讲解底层原理

    SpringBoot超详细深入讲解底层原理 Spring Boot是一种基于Spring框架的轻量级、快速开发的框架,是近年来非常受欢迎的Java开发框架之一。在学习SpringBoot的过程中,深入了解底层原理有助于我们更好地掌握该框架的使用和优化。本文将对SpringBoot的底层原理进行详细讲解,包括源码分析和示例演示。 Spring Boot的核心原…

    Java 2023年5月15日
    00
  • 详解Java编程中包package的内容与包对象的规范

    Java编程中的包(package)是为了更好地组织类而产生的概念,它可以将同一类别或功能的类文件存放在同一包目录下,使用时只需要import相应包的类即可。在Java编程中,包的定义需要遵循一定的规范。 包的定义规范 定义包名时,使用小写字母(包名不要与类名相同); 将包的名字写在Java源文件的顶部; 多个单词组成包名时,使用”.”分割,例如com.co…

    Java 2023年5月26日
    00
  • java比较两个json文件的差异及说明

    Java比较两个JSON文件的差异及说明 在日常开发中,我们经常需要比较两个JSON文件之间的差异,以判断其中的数据是否有更新或者变化。Java提供了许多方式来实现JSON文件的比较,下面将详细介绍其中的常用方法。 一、JSON文件的读取 在对JSON文件进行比较之前,我们需要先读取这两个JSON文件中的数据。 // 读取JSON文件中的内容 public …

    Java 2023年5月26日
    00
  • java的Hibernate框架报错“CallbackException”的原因和解决方法

    当使用Java的Hibernate框架时,可能会遇到“CacheException”错误。这个错误通常是由于以下原因之一引起的: 缓存配置错误:如果您的缓存配置错误,则可能会出现此错误。在这种情况下,需要检查您的缓存配置以解决此问题。 缓存操作失败:如果您的缓存操作失败,则可能会出现此错误。在这种情况下,需要检查您的缓存操作以解决此问题。 以下是两个实例说明…

    Java 2023年5月4日
    00
  • Java编程实现排他锁代码详解

    Java编程实现排他锁代码详解 在Java中,排他锁也就是独占锁,是用来控制对共享资源的访问的一种锁。它允许在同一时间只有一个线程访问共享资源,其他的线程必须等待锁被释放之后才能争抢获取锁。在多线程环境下,使用排他锁可以实现线程之间的同步和协作,防止并发问题的发生。本攻略将详细讲解如何使用Java编程实现排他锁。 什么是排他锁 排他锁是独占锁,它控制同一时间…

    Java 2023年5月23日
    00
  • java编程常用技术(推荐)

    Java编程常用技术(推荐) 在Java编程中,有一些常用的技术和工具,这些技术和工具可以帮助开发者提高编程效率、降低编程难度和优化程序性能。以下是本文推荐的Java编程常用技术: 1. 集合框架 Java集合框架提供了一系列的数据结构和算法,可以帮助开发者存储和操作不同类型的数据。集合框架分为三个层次:接口、实现和算法。接口层次定义了所有的集合类应该有的方…

    Java 2023年5月30日
    00
  • 深入讲解Java中的流程控制与运算符

    深入讲解Java中的流程控制与运算符 流程控制 Java中的流程控制分为三种:顺序结构、选择结构和循环结构。其中选择结构和循环结构都是根据条件来判断是执行某些操作还是跳出循环。以下是具体介绍: 选择结构 if语句:在指定条件为真时执行代码块 if(condition){ // 如果条件为真,这里的代码将会执行 } if-else语句:当if语句为假时执行el…

    Java 2023年5月23日
    00
  • 对象终结器的作用是什么?

    对象终结器是一种C#中的机制,它允许在垃圾收集器释放对象之前执行特定的代码。在对象终结器被调用时,程序可以执行资源回收、环境清理、日志记录等操作。 1. 使用对象终结器的步骤 下面是使用对象终结器的基本步骤: 在类中定义对象终结器,在一个类中只能有一个对象终结器。 在对象终结器的方法中定义需要执行的清理代码。 C#运行时会自动调用对象终结器。 一个简单的示例…

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