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

一、添加所需依赖,当前完整的pom文件如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
  <modelVersion> 4.0 . 0 </modelVersion>
  <parent>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-parent</artifactId>
   <version> 1.5 . 6 .RELEASE</version>
  </parent>
  <groupId>org.rcddup</groupId>
  <artifactId>rcddup-custom</artifactId>
  <version> 1.0 . 0 </version>
  <properties>
   <java.version> 1.8 </java.version>
   <mybatis.version> 1.3 . 1 </mybatis.version>
   <mapper.version> 3.4 . 3 </mapper.version>
   <mybatis-generator.version> 1.3 . 3 </mybatis-generator.version>
   <mybatis-tk.version> 1.1 . 4 </mybatis-tk.version>
   <pagehelper.version> 1.2 . 1 </pagehelper.version>
  </properties>
  <dependencies>
   <!-- SpringBoot - Web -->
   <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
   </dependency>
   <!-- SpringBoot - MyBatis -->
   <dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
    <version>${mybatis.version}</version>
   </dependency>
   <!-- SpringBoot - MyBatis 逆向工程 -->
   <dependency>
    <groupId>org.mybatis.generator</groupId>
    <artifactId>mybatis-generator-core</artifactId>
    <version>${mybatis-generator.version}</version>
   </dependency>
   <!-- MyBatis 通用 Mapper -->
   <dependency>
    <groupId>tk.mybatis</groupId>
    <artifactId>mapper-spring-boot-starter</artifactId>
    <version>${mybatis-tk.version}</version>
   </dependency>
   <!-- Mysql -->
   <dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
   </dependency>
  </dependencies>
  <build>
   <plugins>
    <!-- MyBatis 逆向工程 插件 -->
    <plugin>
     <groupId>org.mybatis.generator</groupId>
     <artifactId>mybatis-generator-maven-plugin</artifactId>
     <version>${mybatis.generator.version}</version>
     <dependencies>
      <dependency>
       <groupId>mysql</groupId>
       <artifactId>mysql-connector-java</artifactId>
       <version>${mysql.version}</version>
      </dependency>
      <dependency>
       <groupId>tk.mybatis</groupId>
       <artifactId>mapper</artifactId>
       <version>${mapper.version}</version>
      </dependency>
     </dependencies>
     <configuration>
      <!-- 允许移动生成的文件 -->
      <verbose> true </verbose>
      <!-- 是否覆盖 -->
      <overwrite> true </overwrite>
      <!-- 配置文件 -->
      <configurationFile>
       ${basedir}/src/main/resources/generator/generatorConfig.xml
      </configurationFile>
     </configuration>
    </plugin>
   </plugins>
  </build>
</project>

  MyBtais 结合通用 Mapper 非常好使,接下来看逆向工程的配置。

  有关通用Mapper的信息,请查看:https://github.com/abel533/Mapper

二、generatorConfig.xml

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
<?xml version= "1.0" encoding= "UTF-8" ?>
<!DOCTYPE generatorConfiguration
   PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
<generatorConfiguration>
  <!-- 引入 application.properties -->
  <properties resource= "application.properties" />
  <!-- MyBatis3Simple:不生成 Example相关类及方法 -->
  <context id= "Mysql" targetRuntime= "MyBatis3Simple" defaultModelType= "flat" >
   <property name= "beginningDelimiter" value= "`" />
   <property name= "endingDelimiter" value= "`" />
   <!-- 指定生成 Mapper 的继承模板 -->
   <plugin type= "tk.mybatis.mapper.generator.MapperPlugin" >
    <property name= "mappers" value= "${generator.mappers}" />
   </plugin>
   <!-- 生成 JavaBean 对象重写 toString方法 -->
   <plugin type= "org.mybatis.generator.plugins.ToStringPlugin" />
   <!-- 生成 JavaBean 对象继承 Serializable 类 -->
   <plugin type= "org.mybatis.generator.plugins.SerializablePlugin" />
   <!-- 生成 JavaBean 对象重写 equals 和 hashCode 方法 -->
   <!-- <plugin type= "org.mybatis.generator.plugins.EqualsHashCodePlugin" /> -->
   <!-- jdbc 连接配置 -->
   <jdbcConnection driverClass= "${spring.datasource.driver-class-name}"
    connectionURL= "${spring.datasource.url}"
    userId= "${spring.datasource.username}"
    password= "${spring.datasource.password}" >
   </jdbcConnection>
   <javaModelGenerator targetPackage= "${generator.javaModel-targetPackage}"
    targetProject= "${generator.targetProject}" />
   <sqlMapGenerator targetPackage= "${generator.sqlMap-targetPackage}"
    targetProject= "${generator.targetProject}" />
   <javaClientGenerator targetPackage= "${generator.javaClient-targetPackage}"
    targetProject= "${generator.targetProject}" type= "XMLMAPPER" />
   <!-- Mysql 配置 -->
   <!-- <generatedKey column= "id" sqlStatement= "Mysql" identity= "true" /> -->
   <!-- Oracle 配置 -->
   <!-- <generatedKey column= "id" sqlStatement= "select SEQ_{1}.nextval from dual" identity= "false" type= "pre" /> -->
   <!-- tableName:数据库表名,domainObjectName:生成文件名 ,schema:数据源-->
   <table tableName= "user" >
    <generatedKey column= "id" sqlStatement= "Mysql" identity= "true" />
   </table>
  </context>
</generatorConfiguration>

  我们将对应的信息都在 application.properties 中定义好,在这直接使用,application.properties如下:

?
1
2
3
4
5
6
# Generator
generator.targetProject=src/main/java
generator.mappers=org.rcddup.app.common.base.IBaseMapper
generator.javaModel-targetPackage=org.rcddup.app.domain
generator.sqlMap-targetPackage=org.rcddup.app.dao
generator.javaClient-targetPackage=org.rcddup.app.dao

三、编写生成Mapper的集成接口IBaseMapper

?
1
2
3
4
5
package org.rcddup.app.common.base;
import tk.mybatis.mapper.common.Mapper;
import tk.mybatis.mapper.common.MySqlMapper;
public interface IBaseMapper<T> extends Mapper<T>, MySqlMapper<T> {
}

  集成的 Mapper 以及 MySqlMapper 几乎包含了你所有的 CRUD方法。

四、使用逆向工程生成我们的第一个文件

  右键项目 --> Maven --> Maven build --> Goals: mybtais-generator:generate,点击 run.....

  我们的UserMapper以及UserMapper.xml就生成了。

  (1)UserMapper.java

?
1
2
3
4
5
package org.rcddup.app.dao;
import org.rcddup.app.common.base.IBaseMapper;
import org.rcddup.app.domain.User;
public interface UserMapper extends IBaseMapper<User> {
}

  (2)UserMapper.xml

?
1
2
3
4
5
6
7
8
9
10
11
12
13
<?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= "org.rcddup.app.dao.UserMapper" >
  <resultMap id= "BaseResultMap" type= "org.rcddup.app.domain.User" >
  <!--
   WARNING - @mbg .generated
  -->
  <id column= "id" jdbcType= "BIGINT" property= "id" />
  <result column= "name" jdbcType= "VARCHAR" property= "name" />
  <result column= "age" jdbcType= "TINYINT" property= "age" />
  <result column= "status" jdbcType= "TINYINT" property= "status" />
  </resultMap>
</mapper>

  是不是发现xml中都没有配置任何CRUD方法。

五、重新编写 UserService.java

  我们原先编写的 UserService 现在我们用新生成的 UserMapper 来重新编写。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
package org.rcddup.app.service.impl;
import java.util.List;
import org.rcddup.app.dao.UserMapper;
import org.rcddup.app.domain.User;
import org.rcddup.app.service.IUserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import tk.mybatis.mapper.entity.Example;
@Service
public class UserService implements IUserService{
  @Autowired
  private UserMapper userMapper;
  @Override
  public List<User> listUser() {
   return userMapper.selectAll();
  }
  @Override
  public User getUserById(Long id) {
   // 方法一:适用于任何字段的查询
//  Example example = new Example(User.class);
//  example.createCriteria().andEqualTo("id", id);
//  List<User> list = userMapper.selectByExample(example);
//  if (list != null && list.size() > 0) {
//   return list.get(0);
//  } else {
//   return null;
//  }
   // 方法二:只适用于主键字段
   return userMapper.selectByPrimaryKey(id);
  }
}

六、启动 App.java

  输入:localhost:8080/user/get?id=1

  输入:localhost:8080/user/list

  好了,到这我们整合了Mybatis逆向工程以及通用Mapper。

    • 0
      点赞
    • 0
      收藏
      觉得还不错? 一键收藏
    • 0
      评论
    评论
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

    当前余额3.43前往充值 >
    需支付:10.00
    成就一亿技术人!
    领取后你会自动成为博主和红包主的粉丝 规则
    hope_wisdom
    发出的红包
    实付
    使用余额支付
    点击重新获取
    扫码支付
    钱包余额 0

    抵扣说明:

    1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
    2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

    余额充值