Mybatis如何自动生成数据库表的实体类
更新时间:2021年06月21日 10:29:49 作者:老男人的青春
这篇文章主要介绍了Mybatis自动生成数据库表的实体类的操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
第一步引入jar
第二步,配置文本文件
# 数据库驱动jar 路径 本地创库的包 drive.class.path=C:/Users/Administrator/.m2/repository/mysql/mysql-connector-java/5.1.30/mysql-connector-java-5.1.30.jar # 数据库连接参数 jdbc.driver=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql://192.168.1.188:3306/sxhy_user?useUnicode=true&characterEncoding=utf-8 jdbc.username=root jdbc.password=rhzh # 包路径配置 model.package=com.fishing.personal.common.entity xml.mapper.package=com.fishing.personal.common.dao.mapper target.project=src/main/java
第三步配置文件
<?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"> <!-- 配置Run As Maven build : Goals 参数 : mybatis-generator:generate -Dmybatis.generator.overwrite=true --> <!-- 配置 tableName,使用 Run As Maven build 生成 dao model 层 --> <!-- maven执行命令:mybatis-generator:generate --> <generatorConfiguration> <!-- 配置文件路径 --> <properties url="${mybatis.generator.generatorConfig.properties}"/> <!--数据库驱动包路径 --> <classPathEntry location="${drive.class.path}"/> <!-- 上下文配置、核心配置 属性介绍 defaultModelType: conditional:*这是默认值*,这个模型和下面的hierarchical类似,除了如果那个单独的类将只包含一个字段,将不会生成一个单独的类。 因此,如果一个表的主键只有一个字段,那么不会为该字段生成单独的实体类,会将该字段合并到基本实体类中。 flat:该模型为每一张表只生成一个实体类。这个实体类包含表中的所有字段。**这种模型最简单,推荐使用。** hierarchical:如果表有主键,那么该模型会产生一个单独的主键实体类,如果表还有BLOB字段, 则会为表生成一个包含所有BLOB字段的单独的实体类, 然后为所有其他的字段生成一个单独的实体类。 MBG会在所有生成的实体类之间维护一个继承关系。 --> <context id="DB2Tables" targetRuntime="MyBatis3" defaultModelType="flat"> <!-- 自动为表名加上前后缀,防止表名中出现空格发生异常(mysql=`) --> <property name="beginningDelimiter" value="`"/> <property name="endingDelimiter" value="`"/> <!--关闭注释 --> <commentGenerator> <!-- 阻止生成注释 --> <property name="suppressAllComments" value="false"/> <!-- 阻止生成注释包含时间戳 --> <property name="suppressDate" value="true"/> </commentGenerator> <!-- 自定义注释生成类,为以上节点添加type属性 --> <!-- <commentGenerator type="com.package.abel533.mybatis.generator.MyCommentGenerator"/> --> <!--数据库连接信息 --> <jdbcConnection driverClass="${jdbc.driver}" connectionURL="${jdbc.url}" userId="${jdbc.username}" password="${jdbc.password}"> </jdbcConnection> <!--生成的model 包路径 --> <javaModelGenerator targetPackage="${model.package}" targetProject="${target.project}"> <!-- 是否根据catalog和schema来生成子包 --> <property name="enableSubPackages" value="ture"/> <!-- 是否使用构造方法入参 --> <property name="trimStrings" value="true"/> <!-- 是否对字符串进行trim操作 --> <property name="trimStrings" value="false" /> </javaModelGenerator> <!--生成xml mapper文件 路径 --> <sqlMapGenerator targetPackage="${xml.mapper.package}" targetProject="${target.project}"> <!-- 是否根据catalog和schema来生成子包 --> <property name="enableSubPackages" value="ture"/> </sqlMapGenerator> <!-- 生成的Dao接口 的包路径 --> <!-- type属性介绍:(仅用于mybatis3) ANNOTATEDMAPPER:基于注解的Mapper接口,不会有对应的XML映射文件 MIXEDMAPPER:XML和注解的混合形式,(上面这种情况中的)SqlProvider注解方法会被XML替代。 XMLMAPPER:所有的方法都在XML中,接口调用依赖XML文件。 --> <!-- <javaClientGenerator type="XMLMAPPER" targetPackage="${dao.package}" targetProject="${target.project}"> 是否根据catalog和schema来生成子包 <property name="enableSubPackages" value="ture"/> </javaClientGenerator> --> <!-- 对应数据库表名 --> <table tableName="user_client" modelType="flat"> <!-- 配置所有到方法的根接口 --> <property name="rootInterface" value="com.rhzh.client.core.generic.GenericDao<Object, Integer>" /> <!-- 配置主键 --> <generatedKey column="id" sqlStatement="Mysql" identity="true"/> </table> <!-- 手动配置table --> <!-- <table tableName="数据库表名" domainObjectName="自动生成的实体类名" ....更多见参考文档> 配置表的主键以及所使用的sql语法 <generatedKey column="id" sqlStatement="Mysql"/> ....更多见参考文档 </table> --> </context> </generatorConfiguration>
第四步配置MAVEN
第五步配置MAVEN的插件
第六步,启动
Mybatis自动生成xml的配置
idea通过数据库直接生成mybatis的xml和实体文件,很简单,一共分三步
1.配置generatorConfig.xml
2.配置pom
3.配置命令 mybatis-generator:generate -e
1.配置generatorConfig.xml
以下会自动生成entity,mapper,和xml文件
mapper上是没有@Mapper注解的呦
<!--<?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> <!--classPathEntry:数据库的JDBC驱动,换成你自己的驱动位置 可选 --> <classPathEntry location="F:\aaaRepository\java\repository\mysql\mysql-connector-java\8.0.17\mysql-connector-java-8.0.17.jar"/> <context id="mysql"> <commentGenerator> <property name="suppressDate" value="true" /> <property name="suppressAllComments" value="true" /> </commentGenerator> <jdbcConnection connectionURL="jdbc:mysql://localhost:3306/aaa?serverTimezone=GMT%2B8" driverClass="com.mysql.cj.jdbc.Driver" password="root" userId="root" /> <javaTypeResolver> <property name="forceBigDecimals" value="false" /> </javaTypeResolver> <javaModelGenerator targetPackage="com.aaa.bbb.entity" targetProject="src/main/java" > <property name="constructorBased" value="false"/> </javaModelGenerator> <sqlMapGenerator targetPackage="mapper" targetProject="src/main/resources"/> <javaClientGenerator targetPackage="com.aaa.bbb.mapper" targetProject="src/main/java" type="XMLMAPPER" > </javaClientGenerator> <table tableName="ccc" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false"> </table> </context> </generatorConfiguration>
“context” 的内容必须匹配按照下面的顺序配置 ?号的可以没有
(connectionFactory|jdbcConnection), javaTypeResolver?, javaModelGenerator, sqlMapGenerator?, javaClientGenerator?, table+
2.配置pom
<build> <plugins> <plugin> <groupId>org.mybatis.generator</groupId> <artifactId>mybatis-generator-maven-plugin</artifactId> <configuration> <verbose>true</verbose> <overwrite>true</overwrite> </configuration> </plugin> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build>
3.命令 mybatis-generator:generate -e
运行上边的命令就行了,实体是驼峰形式的,也可以修改配置和数据库一样
public class Ccc{ private Integer id; private String identifyCode; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getIdentifyCode() { return identifyCode; } public void setIdentifyCode(String identifyCode) { this.identifyCode = identifyCode; } }
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
java List.of()与Arrays.asList()方法对比分析
这篇文章主要为大家介绍了java List.of()与Arrays.asList()方法对比分析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪2023-11-11spring boot国际化之MessageSource的使用方法
这篇文章主要给大家介绍了spring boot国际化之MessageSource使用的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2020-11-11Spring注解@Configuration与@Bean注册组件的使用详解
这篇文章主要介绍了SpringBoot中的注解@Configuration与@Bean注册组件的使用,具有很好的参考价值,希望对大家有所帮助2022-06-06
最新评论