日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

MyBatis逆向工程自动生成代码(附数据库表结构)

發(fā)布時間:2024/9/30 数据库 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MyBatis逆向工程自动生成代码(附数据库表结构) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

一、逆向工程介紹

逆向工程是一個專門為 MyBatis 框架使用者設(shè)計的代碼生成器,可以根據(jù)數(shù)據(jù)庫中的表字段名,自動生成 POJO 類,mapper 接口與 SQL 映射文件。支持基本的增刪改查功能,以及自定義條件的查詢。但是不支持復(fù)雜 SQL 與存儲過程。

二、環(huán)境準備:

數(shù)據(jù)庫結(jié)構(gòu)文件 (拷貝直接執(zhí)行即可):

t_employee表結(jié)構(gòu):

DROP TABLE IF EXISTS `t_employee`; CREATE TABLE `t_employee` (`id` int(11) unsigned zerofill NOT NULL AUTO_INCREMENT,`username` varchar(30) DEFAULT NULL,`gender` char(1) DEFAULT NULL,`email` varchar(20) DEFAULT NULL,`d_id` int(11) DEFAULT NULL,PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=19 DEFAULT CHARSET=utf8;

t_dept表結(jié)構(gòu):

DROP TABLE IF EXISTS `t_dept`; CREATE TABLE `t_dept` (`id` int(11) NOT NULL AUTO_INCREMENT,`dept_name` varchar(20) DEFAULT NULL,PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;

在pom.xml中添加對應(yīng)的依賴 (如果不是 Maven 項目,可以點擊上面的 GitHub 地址下載 jar 包):

<dependency><groupId>org.mybatis.generator</groupId><artifactId>mybatis-generator</artifactId><version>1.3.6</version></dependency>

創(chuàng)建目錄,用于指定代碼生成的位置:

三、代碼生成過程

逆向工程配置文件mybatis-generator.xml:

<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE generatorConfigurationPUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN""http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd"><generatorConfiguration><!-- context 元素用于指定生成一組對象的環(huán)境。targetRuntime:MyBatis3Simple 只生成提供簡單增刪改查的代碼--><context id="testTables" targetRuntime="MyBatis3Simple"><commentGenerator><!-- 是否去除自動生成的注釋 true:是 : false:否 --><property name="suppressAllComments" value="true" /></commentGenerator><!-- 數(shù)據(jù)庫連接的信息:驅(qū)動類、連接地址、用戶名、密碼 --><jdbcConnection driverClass="com.mysql.jdbc.Driver" connectionURL="jdbc:mysql://localhost/mybatis-study" userId="root"password="1234"></jdbcConnection><!-- 默認 false,把 JDBC DECIMAL 和 NUMERIC 類型解析為 Integer,為 true 時把 JDBC DECIMAL 和 NUMERIC 類型解析為 java.math.BigDecimal --><javaTypeResolver><property name="forceBigDecimals" value="false" /></javaTypeResolver><!-- targetPackage:指定 POJO 類生成后所在的包的位置targetProject:指定生成 POJO 類的位置 --><javaModelGenerator targetPackage="com.jas.mybatis.bean"targetProject=".\src\main\java"><!-- enableSubPackages:是否讓 schema 作為包的后綴 --><property name="enableSubPackages" value="false" /><!-- 從數(shù)據(jù)庫返回的值被清理前后的空格 --><property name="trimStrings" value="false" /></javaModelGenerator><!-- targetPackage:指定生成的 SQL 映射文件所在的位置--><sqlMapGenerator targetPackage="mapper-config"targetProject=".\src\main\resources/"><!-- enableSubPackages:是否讓 schema 作為包的后綴 --><property name="enableSubPackages" value="false" /></sqlMapGenerator><!-- targetPackage:指定 mapper 接口生成包的位置 --><javaClientGenerator type="XMLMAPPER"targetPackage="com.jas.mybatis.mapper"targetProject=".\src\main\java"><!-- enableSubPackages:是否讓 schema 作為包的后綴 --><property name="enableSubPackages" value="false" /></javaClientGenerator><!-- 指定數(shù)據(jù)庫表tableName:指定表名domainObjectName:指定生成的 POJO 的類名--><table tableName="t_employee" domainObjectName="Employee"/><table tableName="t_dept" domainObjectName="Department"/></context> </generatorConfiguration>

將配置文件放在工程下:

執(zhí)行生成代碼的方式有很多,比如使用 Maven 插件,XML 配置文件等,這里我們通過代碼的方式一鍵執(zhí)行。

@Testpublic void testMBG() throws Exception{List<String> warnings = new ArrayList<String>();boolean overwrite = true;// 指定代碼生成配置文件的位置File configFile = new File("mybatis-generator.xml");ConfigurationParser cp = new ConfigurationParser(warnings);Configuration config = cp.parseConfiguration(configFile);DefaultShellCallback callback = new DefaultShellCallback(overwrite);MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config, callback, warnings);myBatisGenerator.generate(null);}

執(zhí)行結(jié)果:

下面是 mapper 接口中自動生成的方法,只生成了五個基本的增改查方法。這幾個方法能不能使用呢?下面就來測試一下。

測試:

private SqlSessionFactory getSqlSessionFactory() throws IOException {String resource = "mybatis-config.xml";InputStream is = Resources.getResourceAsStream(resource);return new SqlSessionFactoryBuilder().build(is);}@Testpublic void testMyBatis3Simple() throws IOException {SqlSessionFactory sqlSessionFactory = getSqlSessionFactory();SqlSession sqlSession = sqlSessionFactory.openSession();// 向數(shù)據(jù)中查詢 id 為 1 的用戶信息EmployeeMapper employeeMapper = sqlSession.getMapper(EmployeeMapper.class);Employee employee = employeeMapper.selectByPrimaryKey(1);System.out.println(employee.getUsername());}

測試結(jié)果:

四、總結(jié)

這篇博客主要介紹了 MyBatis 中關(guān)于逆向工程的使用,逆向工程的使用可以簡化我們的開發(fā)過程,提高開發(fā)效率。MyBatis 還支持其他幾種生成代碼的方式,只需要在<context>標簽中設(shè)置targetRuntime屬性即可。

上面我們設(shè)置的值是 MyBatis3Simple,這種方式在生成代碼的時候只會生成最基本的增刪代碼;還可以設(shè)置為MyBatis3,這種方式生成的代碼支持多條件查詢語句,還有其他的值可以設(shè)置,這里就不再多解釋了。

一般情況下我們只用來生成最基本的代碼,復(fù)雜的 SQL 語句還是由開發(fā)人員自己定義比較好。最后希望這篇博文能夠為你提供幫助。

總結(jié)

以上是生活随笔為你收集整理的MyBatis逆向工程自动生成代码(附数据库表结构)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。