Mybatis-Genarator 逆向工程使用

个人开发环境

java环境:Jdk1.8.0_60

编译器:IntelliJ IDEA 2017.1.4

mysql驱动:mysql-connector-java-5.1.39.jar (用于你逆向工程使用)

Genarator 版本:mybatis-generator-maven-plugin (1.3.6)

源码连接:待整理

第一步 添加依赖

<!--springBoot相关-->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.9.RELEASE</version>
</parent> <!--约定版本-->
<properties>
<mybatis-spring-boot>1.2.0</mybatis-spring-boot>
<mysql-connector>5.1.39</mysql-connector>
</properties> <dependencies>
<!--springBoot相关-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency> <!--mybatis相关-->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>${mybatis-spring-boot}</version>
</dependency> <!--mysql驱动相关-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysql.version}</version>
</dependency> <!--pojo实用小插件-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<!--依赖不传递-->
<optional>true</optional>
</dependency> </dependencies> <build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<!-- mybatis generator 自动生成代码插件 -->
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.3.6</version>
<configuration> <configurationFile>${basedir}/src/main/resources/generator/generatorConfig.xml</configurationFile>
<overwrite>true</overwrite>
<verbose>true</verbose>
</configuration>
</plugin>
</plugins>
</build>

第二步 配置文件

springboot 配置文件:application.yml(src/main/resources/application.yml)

server:
# 服务端口
port: 8083 spring:
datasource:
url: jdbc:mysql://localhost:3306/springcloud-mybatis
username: root
password: 123456
driver-class-name: com.mysql.jdbc.Driver # Mybatis 配置
mybatis:
typeAliasesPackage: com.fame.entity
mapperLocations: classpath:mapper/*.xml # 打印sql
logging:
level:
# 配置mapper接口的包路径
com.fame.mapper : debug

mybatis逆向工程配置文件:generatorConfig.xml(src/main/resources/generator/generatorConfig.xml)

1)配置数据信息 2)修改相关包名 3)配置相关表属性

<?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>
<!--mysql 连接数据库jar 这里选择自己本地位置-->
<classPathEntry location="D:/mysql-connector-java-5.1.39.jar" />
<context id="testTables" targetRuntime="MyBatis3">
<commentGenerator>
<!-- 是否去除自动生成的注释 true:是 : false:否 -->
<property name="suppressAllComments" value="true" />
</commentGenerator>
<!--数据库连接的信息:驱动类、连接地址、用户名、密码 -->
<jdbcConnection driverClass="com.mysql.jdbc.Driver"
connectionURL="jdbc:mysql://localhost:3306/springcloud-mybatis" userId="root"
password="123456">
</jdbcConnection>
<!-- 默认false,把JDBC DECIMAL 和 NUMERIC 类型解析为 Integer,为 true时把JDBC DECIMAL 和
NUMERIC 类型解析为java.math.BigDecimal -->
<javaTypeResolver>
<property name="forceBigDecimals" value="true" />
</javaTypeResolver> <!-- targetProject:生成PO类的位置 -->
<javaModelGenerator targetPackage="com.fame.entity"
targetProject="src/main/java">
<!-- enableSubPackages:是否让schema作为包的后缀 -->
<property name="enableSubPackages" value="false" />
<!-- 从数据库返回的值被清理前后的空格 -->
<property name="trimStrings" value="true" />
</javaModelGenerator>
<!-- targetProject:mapper映射文件生成的位置
如果maven工程只是单独的一个工程,targetProject="src/main/java"
若果maven工程是分模块的工程,targetProject="所属模块的名称",例如:
targetProject="ecps-manager-mapper",下同-->
<sqlMapGenerator targetPackage="com.fame.mapper"
targetProject="src/main/java">
<!-- enableSubPackages:是否让schema作为包的后缀 -->
<property name="enableSubPackages" value="false" />
</sqlMapGenerator>
<!-- targetPackage:mapper接口生成的位置 -->
<javaClientGenerator type="XMLMAPPER"
targetPackage="com.fame.mapper"
targetProject="src/main/java">
<!-- enableSubPackages:是否让schema作为包的后缀 -->
<property name="enableSubPackages" value="false" />
</javaClientGenerator>
<!-- 指定数据库表 ,设置是否要生成Exemple方法-->
<table tableName="tb_user" schema=""
enableCountByExample="false"
enableDeleteByExample="false"
enableUpdateByExample="false"
enableSelectByExample="false"
selectByExampleQueryId="false">
<!--去除表明前缀tb_,注意严格控制大小写-->
<domainObjectRenamingRule searchString="^Tb" replaceString="" />
<!--去除列字段前缀,注意严格控制大小写-->
<columnRenamingRule searchString="^sys" replaceString=""/>
</table>
</context>
</generatorConfiguration>
<?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>
<!--mysql 连接数据库jar 这里选择自己本地位置-->
<classPathEntry location="D:/mysql-connector-java-5.1.39.jar" />
<context id="testTables" targetRuntime="MyBatis3">
<commentGenerator>
<!-- 是否去除自动生成的注释 true:是 : false:否 -->
<property name="suppressAllComments" value="true" />
</commentGenerator>
<!--数据库连接的信息:驱动类、连接地址、用户名、密码 -->
<jdbcConnection driverClass="com.mysql.jdbc.Driver"
connectionURL="jdbc:mysql://localhost:3306/springcloud-mybatis" userId="root"
password="123456">
</jdbcConnection>
<!-- 默认false,把JDBC DECIMAL 和 NUMERIC 类型解析为 Integer,为 true时把JDBC DECIMAL 和
NUMERIC 类型解析为java.math.BigDecimal -->
<javaTypeResolver>
<property name="forceBigDecimals" value="true" />
</javaTypeResolver> <!-- targetProject:生成PO类的位置 -->
<javaModelGenerator targetPackage="com.fame.entity"
targetProject="src/main/java">
<!-- enableSubPackages:是否让schema作为包的后缀 -->
<property name="enableSubPackages" value="false" />
<!-- 从数据库返回的值被清理前后的空格 -->
<property name="trimStrings" value="true" />
</javaModelGenerator>
<!-- targetProject:mapper映射文件生成的位置
如果maven工程只是单独的一个工程,targetProject="src/main/java"
若果maven工程是分模块的工程,targetProject="所属模块的名称",例如:
targetProject="ecps-manager-mapper",下同-->
<sqlMapGenerator targetPackage="com.fame.mapper"
targetProject="src/main/java">
<!-- enableSubPackages:是否让schema作为包的后缀 -->
<property name="enableSubPackages" value="false" />
</sqlMapGenerator>
<!-- targetPackage:mapper接口生成的位置 -->
<javaClientGenerator type="XMLMAPPER"
targetPackage="com.fame.mapper"
targetProject="src/main/java">
<!-- enableSubPackages:是否让schema作为包的后缀 -->
<property name="enableSubPackages" value="false" />
</javaClientGenerator>
<!-- 指定数据库表 ,设置是否要生成Exemple方法-->
<table tableName="tb_user" schema=""
enableCountByExample="false"
enableDeleteByExample="false"
enableUpdateByExample="false"
enableSelectByExample="false"
selectByExampleQueryId="false">
<!--去除表明前缀tb_,注意严格控制大小写-->
<domainObjectRenamingRule searchString="^Tb" replaceString="" />
<!--去除列字段前缀,注意严格控制大小写-->
<columnRenamingRule searchString="^sys" replaceString=""/>
</table>
</context>
</generatorConfiguration>

第三步 逆向工程

方式一

创建generator配置文件,启动即可

方式二

点击IDEA右侧Maven Project 双击Plugins下的mybatis-generator

其中,方式一配置好的文件,也可以在Run Configurations双击启动

注意:生成的XXXMapper.xml,需要放到(src/main/resource)下.

原因:IDEA不编译src的java目录下的xml文件

第四步 创建Application启动类

如果是直接创建springboot项目可忽略这一步,我是直接创建的一个Maven项目进行整合。

注意:加入注解@MapperScan进行mapper接口扫描

@SpringBootApplication
// mapper 接口类扫描包配置
@MapperScan("com.fame.mapper")
public class MybatisApplication {
public static void main(String[] args) {
SpringApplication.run(MybatisApplication.class, args);
}
}

这样就整合完成,可以创建接口进行单元测试了

第五步 实例简单测试

新增(insert)

/**
* mybatis generator逆向工程 新增测试
*
* @param user 用户信息
*/
@PostMapping("/add")
public void add(@RequestBody User user) { // 直接新增
userMapper.insert(user); // 新增会做非空判断
userMapper.insertSelective(user);
}

修改(update)

/**
* mybatis generator逆向工程 查询测试
*
* @param userId 用户ID
*/
@PutMapping("/update")
public void update(Long userId) {
User user = userMapper.selectByPrimaryKey(userId); // 通过ID 修改
user.setUsername("大白generator 测试修改操作");
// updateByPrimaryKey 全修改
userMapper.updateByPrimaryKey(user);
// updateByPrimaryKeySelective 选择user对象不为null 的修改
userMapper.updateByPrimaryKeySelective(user); // 使用Example Criteria 通过关键字修改
UserExample userEmp = new UserExample();
userEmp.or().andIdEqualTo(userId);
// updateByExample 全修改
userMapper.updateByExample(user, userEmp);
// updateByExampleSelective 选择user对象不为null 的修改
userMapper.updateByExampleSelective(user, userEmp); }

删除(delete)

/**
* mybatis generator逆向工程 查询测试
*
* @param userId 用户ID
*/
@DeleteMapping("/delete")
public void delete(Long userId) { // 通过ID 删除
userMapper.deleteByPrimaryKey(userId); // 使用Example Criteria 通过关键字删除
UserExample userEmp = new UserExample();
userEmp.or().andIdEqualTo(userId);
userMapper.deleteByExample(userEmp);
}

查询(select)

/**
* mybatis generator逆向工程 查询测试
*
* @param userId 用户ID
*/
@GetMapping("/get")
public void get(Long userId) { // 通过主键ID 获取用户信息
User user = userMapper.selectByPrimaryKey(userId);
System.out.println(user); // 通过example Criteria 查询
// where id = ?
UserExample userEmp = new UserExample();
userEmp.or().andIdEqualTo(userId);
List<User> users1 = userMapper.selectByExample(userEmp);
System.out.println(users1.get(0)); userEmp.clear();
// where ( id = ? and username =? ) or ( id = ? and age =? )
userEmp.or().andIdEqualTo(userId).andUsernameEqualTo("大白1");
userEmp.or().andIdEqualTo(userId).andAgeEqualTo(22);
List<User> users2 = userMapper.selectByExample(userEmp);
System.out.println(users2.get(0));
}

合计(count)

/**
* mybatis generator逆向工程 合计测试
*/
@GetMapping("/count")
public void count(){ // 查询全部数据
long countAll = userMapper.countByExample(new UserExample());
System.out.println(countAll); // 查询满足条件的数据
UserExample userEmp = new UserExample();
userEmp.or().andIdEqualTo(1L);
long countByKey = userMapper.countByExample(userEmp);
System.out.println(countByKey);
}

SpringBoot+Mybatis+Generator 逆向工程使用(二)的更多相关文章

  1. Java逆向工程SpringBoot + Mybatis Generator + MySQL

    Java逆向工程SpringBoot+ Mybatis Generator + MySQL Meven pop.xml文件添加引用: <dependency> <groupId> ...

  2. Springboot & Mybatis 构建restful 服务二

    Springboot & Mybatis 构建restful 服务二 1 前置条件 成功执行完Springboot & Mybatis 构建restful 服务一 2 restful ...

  3. Mybatis Generator逆向工程的使用

    一.在 idea 中使用 mybatis generator 逆向工程 1.在IDEA上创建maven工程. 2.在pom.xml中配置MyBatis逆向工程插件 <!--MyBatis自动生成 ...

  4. springboot(十三):springboot结合mybatis generator逆向工程自动生成代码

    错信息generate failed: Exception getting JDBC Driver: com.mysql.jdbc.Driver 上网查了一下,发现原来是generator这个插件在运 ...

  5. 在IDEA中使用MyBatis Generator逆向工程生成代码

    本文介绍一下用Maven工具如何生成Mybatis的代码及映射的文件. 一.配置Maven pom.xml 文件 在pom.xml增加以下插件: <build> <finalName ...

  6. Springboot+Mybatis的逆向工程

    Mybatis逆向工程,自动生成 entity类和常用的增删改查方法. 1.pom.xml引入类 <!-- 通用mapper 用于mabatis封装的基础增删改查的功能--><dep ...

  7. javaweb各种框架组合案例(五):springboot+mybatis+generator

    一.介绍 1.springboot是spring项目的总结+整合 当我们搭smm,ssh,ssjdbc等组合框架时,各种配置不胜其烦,不仅是配置问题,在添加各种依赖时也是让人头疼,关键有些jar包之间 ...

  8. mybatis学习系列四--mybatis generator逆向工程

    采用命令行方式执行逆向工程 1.配置文件generatorConfig.xml 保存在目录:D:\E\workspace\eclipse\mybatis_generator <?xmlversi ...

  9. MyBatis -- generator 逆向工程

    一.引言 官网文档:http://www.mybatis.org/generator/index.html 通过使用官方提供的mapper自动生成工具,mybatis-generator-core-1 ...

随机推荐

  1. 批处理系列(18) - 基于BitLocker的开锁上锁

    首先要配置好BitLocker. 上锁 lock.bat @echo off rem 上锁前要结束一些程序,浏览器要注意:有恢复上次关闭项功能,按需设置取消该操作 taskkill /f /t /im ...

  2. Struts2乱码问题的解决办法

    乱码问题的起因在于数据在web系统的各个层中间传递的时候编码不同,比如页面使用GB18030而中间层使用UTF-8.由于struts2默认使用的就是UTF-8编码,所以在页面如果使用的是其他的编码格式 ...

  3. 如何利用Python绘制一个爱心

    刚学习Python几周,闲来无事,突然想尝试画一个爱心,步骤如下: 打开界面 打开Python shell界面,具体是Python语言的IDLE软件脚本. 2.建立脚本 单击左上角’File’,再单击 ...

  4. Android - "已安装了存在签名冲突的同名数据包",解决方法!

    错误提示:已安装了存在签名冲突的同名数据包. 解决方法:打开Android Studio,打开logcat,用usb线连接你出错的手机,识别出手机之后,在你的项目后面,点击“run”按钮,随后AS会提 ...

  5. Redux其实很简单(原理篇)

    在这一篇文章中,笔者将带大家编写一个完整的Redux,深度剖析Redux的方方面面,读完本篇文章后,大家对Redux会有一个深刻的认识. 核心API 这套代码是笔者阅读完Redux源码,理解其设计思路 ...

  6. uiautomator2

    uiautomator2    该项目正在火热的开发中 uiautomator2 是一个可以使用Python对Android设备进行UI自动化的库.其底层基于Google uiautomator,Go ...

  7. MySQL(慢日志记录)

    day63 参考:https://www.cnblogs.com/wupeiqi/articles/5716963.html

  8. Spring+Mybatis整合时 Failed to read candidate component class,Caused by:IllegalArgumentException

    Spring+Mybatis整合时Caused by: java.lang.IllegalArgumentException错误 org.springframework.beans.factory.B ...

  9. Python小白学习之路(六)—— 【元祖】【元祖相关功能】

    元祖 tu = (111,'alex',(11,['aa','xhg',(78,43)],'aaa'),789,) 通过这个例子,我们看到元祖的特征: 是通过括号()括起来的 一般写元祖的时候,推荐子 ...

  10. css style 标签可编辑

    一次偶然在鑫大技术博客上发现  style  标签配合contenteditable 可编辑属性 实现动态编辑css 这里我就回顾了下  contenteditable  可编辑属性 (这个属性并无浏 ...