MyBatis的逆向工程详解
作者:source 发布时间:2022-12-03 11:06:10
标签:MyBatis,逆向工程
一:什么是逆行工程。
MyBatis是一款优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。
当数据库表比较多的时候,重复的创建pojo对象和简单的数据库表的(CRUD)操作的mapper,效率低,官方给出了使用mybatis Generator用来根据数据库表逆向生成pojo和mapper文件,极大的方便开发。
二:简单教程
maven的pom.xml中添加插件
<packaging>jar</packaging>
<dependencies>
<!-- 添加对mybatis的依赖 -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
</dependency>
<dependency>
<groupId>com.github.miemiedev</groupId>
<artifactId>mybatis-paginator</artifactId>
</dependency>
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
</dependency>
<!-- MySql -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<!-- 连接池 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
</dependency>
<dependency>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-core</artifactId>
<version>1.3.6</version>
</dependency>
</dependencies>
<build>
<plugins>
<!-- mybatis逆向工程 -->
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.3.7</version>
<configuration>
<!--配置文件的位置-->
<configurationFile>src/main/resources/generatorConfig.xml</configurationFile>
<verbose>true</verbose>
<overwrite>true</overwrite>
</configuration>
</plugin>
</plugins>
</build>
创建配置文件 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>
<!--引入数据库配置文件方便修改-->
<properties resource="jdbc.properties"/>
<!--数据库驱动文件 需要修改 TODO-->
<classPathEntry
location="/Volumes/Tool/JAVA_Tool/maven/Maven_Repository/mysql/mysql-connector-java/5.1.32/mysql-connector-java-5.1.32.jar"/>
<context id="context" targetRuntime="MyBatis3Simple">
<commentGenerator>
<!-- 是否去除自动生成的注释,true:是;false:否 -->
<property name="suppressAllComments" value="true"/>
<property name="suppressDate" value="false"/>
</commentGenerator>
<!--数据库连接的信息:驱动类、连接地址、用户名、密码 -->
<jdbcConnection driverClass="${jdbc.driverClassName}"
connectionURL="${jdbc.url}"
userId="${jdbc.username}"
password="${jdbc.password}"/>
<!--默认false,把JDBC DECIMAL 和 NUMERIC 类型解析为 Integer,-->
<!--为 true时把JDBC DECIMAL 和 NUMERIC 类型解析为java.math.BigDecimal -->
<!-- 非必需,类型处理器,在数据库类型和java类型之间的转换控制-->
<javaTypeResolver>
<property name="forceBigDecimals" value="false"/>
</javaTypeResolver>
<!--生成PO类的位置 配置生成的实体包-->
<!--targetPackage:生成的实体包位置,默认存放在src目录下-->
<!--targetProject:相对路径 路径拼接结果 src/main/java/one/domain -->
<javaModelGenerator targetPackage="one.domain" targetProject="src/main/java">
<!-- enableSubPackages:是否让schema作为包的后缀 -->
<property name="enableSubPackages" value="false"/>
<!-- 从数据库返回的值被清理前后的空格 -->
<property name="trimStrings" value="true"/>
</javaModelGenerator>
<!-- 实体包对应映射文件位置及名称,默认存放在src目录下 同上 -->
<sqlMapGenerator targetPackage="MapperXml" targetProject="src/main/resources">
<!-- enableSubPackages:是否让schema作为包的后缀 -->
<property name="enableSubPackages" value="false"/>
</sqlMapGenerator>
<!--targetPackage:mapper接口生成的位置-->
<javaClientGenerator targetPackage="one.mapper" type="XMLMAPPER" targetProject="src/main/java">
<!-- enableSubPackages:是否让schema作为包的后缀 -->
<property name="enableSubPackages" value="false"/>
</javaClientGenerator>
<!--配置表-->
<!--schema:不用填写-->
<!--tableName: 表名 TODO-->
<!--enableCountByExample、enableSelectByExample、enableDeleteByExample、enableUpdateByExample、selectByExampleQueryId:-->
<!--去除自动生成的注释例子-->
<table tableName="tb_user" enableCountByExample="false" enableDeleteByExample="false"
enableSelectByExample="false" enableUpdateByExample="false"/>
</context>
</generatorConfiguration>
运行Generator类即可生成
我已经做好项目了 下载即可运行
来源:https://segmentfault.com/a/1190000015853535


猜你喜欢
- 1.前言开发过程中,讲一个对象的属性和值赋值到另一个对象上,大量使用了get、set方法,看着很臃肿,思考下肯定不只有我有这种想法,所以技术
- Struts2的核心在于它复杂的 * ,几乎70%的工作都是由 * 完成的。比如我们之前用于将上传的文件对应于action实例中的三个属性的
- Java数字格式类以下两个类可用于格式化和解析数字:java.text.NumberFormatjava.text.DecimalForma
- 其实嵌套滚动已经算一个比较常见的特效了,下面这个动图就是嵌套滚动的一个例子:看到这个动效,大家可能都知道可以用CoordinatorLayo
- 为了实现毛玻璃效果,我们需要一组compute kernels(.rs文件中编写),及一组用于控制renderScript相关的Javaap
- 1.RSA加密算法是一种非对称加密算法。在公开密钥加密和电子商业中RSA被广泛使用。RSA公开密钥密码体制。所谓的公开密钥密码体制就是使用不
- 本文实例为大家分享了Java实现五子棋游戏的具体代码,供大家参考,具体内容如下一、功能分析五子棋的实现还是较为简单的,通过下期的流程我们可以
- 目录效果展示实现原理实现步骤完整代码展示效果展示实现原理首先需要生成绘制小花的坐标点,坐标点的横坐标是根据控件的宽度随机生成的,而纵坐标则设
- 前言:Zygote 是 Android 的核心,每打开一个 app,Zygote 就会 fork 一个虚拟机实例来运行 app,基于Xpos
- 关闭时可使用如下代码public static void waitUntilTerminate(final ExecutorService
- 本文为大家分享了AForge实现C#摄像头视频录制功能的具体方法,供大家参考,具体内容如下1. 概述最近由于兴趣学习了下在C#上使用AFor
- 假设我们有一个类:Productpublic class Product{ public string
- 单例模式大概是所有设计模式中最简单的一种,如果在面试时被问及熟悉哪些设计模式,你可能第一个答的就是单例模式。单例模式的实现分为两种:饿汉式和
- 添加POM依赖:<!-- spring-boot-监控--><dependency> <group
- 首先,确保 IDEA 软件正确安装完成,Java 开发工具包 JDK 安装完成。IDEA 的 Java 项目 (Project) 则相当于
- 首先让我们创建一个普通的Maven工程,添加相应的依赖<dependencies><dependency> &nbs
- Java9 集合类扩展of方法package com.jd.collections;import org.junit.Test;import
- 再看文章之前,希望大家先打开自己的微信点到朋友圈中去,仔细观察是不是发现朋友圈里的有个“九宫格”的图片区域,点击图片又会跳到图片的详细查看页
- 一、什么是HTTP协议HTTP是hypertext transfer protocol(超文本传输协议)的简写,它是TCP/IP协议的一个应
- 今天在研究dubbo时,发现一个新的知识点,可以使用javassist包进行动态编程,hibernate也使用该包进行编程。晚上百度了很多资