原贴 https://blog.csdn.net/timo1160139211/article/details/78011079
如何用MyBatis自动生成实体类、DAO接口和Mapping映射文件
引言:
什么是 MyBatis ?
MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。
描述来自官网:http://www.mybatis.org/mybatis-3/zh/getting-started.html
如果你了解JPA、Hibernate等持久层框架(规范),那么你就大概知道MyBatis在开发中处于哪一环节了。
那么MyBatis是不是也可以像JPA、Hibernate那样映射生成数据库、实体类呢?答案是肯定的。
官方早已打包好了jar包来支持我们提高开发效率了:
MyBatis Generator - a code generator for MyBatis and iBatis.
下面介绍如何用MyBatis-generator自动映射生成实体类:
准备:
case: ( Postgresql )
1. 下载mybatis-generator.jar包:http://mvnrepository.com/artifact/org.mybatis.generator/mybatis-generator-core/1.3.5
2. JDBC-Driver:mysql-connector-java-5.1.34.jar,这里使用的是mysql,换成其他数据库,链接方式换稍有差异
3. 创建编辑generator.xml文件(稍后介绍) [*3]
4. Database ready.[*4]
5. 一个基于MyBatis的项目.
[*3]
generator.xml内容如下:
<!DOCTYPE generatorConfiguration
PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
"http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
<generatorConfiguration>
<!-- 数据库驱动 -->
<!-- location也可写成 C:\workspace3\mybatis-generator\mybatis-generator-core-1.3.5.jar-->
<classPathEntry location="mysql-connector-java-5.1.34.jar" />
<context id="DB2Tables" targetRuntime="MyBatis3">
<commentGenerator>
<!-- 是否去除自动生成的注释 true:是 : false:否 -->
<property name="suppressDate" value="true" />
<!-- 是否去除自动生成的注释 true:是 : false:否 -->
<property name="suppressAllComments" value="true" />
</commentGenerator>
<!--数据库链接URL,用户名、密码 -->
<jdbcConnection driverClass="com.mysql.jdbc.Driver"
connectionURL="jdbc:mysql://localhost:3306/hellossmdb"
userId="root" password="root">
</jdbcConnection>
<!-- 默认false,把JDBC DECIMAL 和 NUMERIC 类型解析为 Integer true,把JDBC DECIMAL 和 NUMERIC 类型解析为java.math.BigDecimal -->
<javaTypeResolver>
<property name="forceBigDecimals" value="false" />
</javaTypeResolver>
<!-- 生成模型的包名和位置 -->
<!-- targetProject:自动生成代码的位置 也可写物理地址 C:\workspace3\mybatis-generator\src-->
<javaModelGenerator targetPackage="com.zk.test.model" targetProject="src">
<!-- enableSubPackages:是否让schema作为包的后缀 -->
<property name="enableSubPackages" value="true" />
<!-- 从数据库返回的值被清理前后的空格 -->
<property name="trimStrings" value="true" />
</javaModelGenerator>
<!-- 生成映射文件的包名和位置 -->
<sqlMapGenerator targetPackage="com.zk.test.mapping"
targetProject="src">
<property name="enableSubPackages" value="true" />
</sqlMapGenerator>
<!-- 生成DAO的包名和位置 -->
<javaClientGenerator type="XMLMAPPER" targetPackage="com.zk.test.dao"
targetProject="src">
<property name="enableSubPackages" value="true" />
</javaClientGenerator>
<!-- tableName:用于自动生成代码的数据库表;domainObjectName:对应于数据库表的javaBean类名 -->
<table tableName="t_user" domainObjectName="user"
enableCountByExample="fasle" enableUpdateByExample="false"
enableDeleteByExample="false" enableSelectByExample="false"
selectByExampleQueryId="false" >
</table>
</context>
</generatorConfiguration>
- 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
Change to your Configurations :
1:
<!--数据库链接URL,用户名、密码 -->
2:
<!-- 数据库驱动 -->
3:
<!-- 生成XXX的包名和位置 --> *3
<targetPackage="site.gaoyisheng.XX" targetProject="src/main/java/">
4:
<!-- 要生成的表 tableName是数据库中的表名或视图名 domainObjectName是实体类名 -->
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
[*4]
目标数据库和表
![](https://i-blog.csdnimg.cn/blog_migrate/815beecc89d78a07e64542e78cb928ba.png)
[*5]
根目录机构(之前,划线为需要的) :
Generate:
控制台进入项目根目录,输入指令
java -jar mybatis-generator-core-1.3.5.jar -configfile generator.xml -overwrite
Finished Directory Structure :
结构变化
这样一个数据库的映射文件(包括实体,dao,mapper)就完成了,只需要写service和controller层就可以了。之后就是稍微修改路径,放入对应项目即可。
自动化创建成功,给自己点赞