电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

MyBatis逆向工程生成dao層增刪改查的操作

瀏覽:47日期:2023-10-26 12:00:16
目錄MyBatis逆向工程生成dao層增刪改查如下:Mybatis反向工程的使用首先,用eclipse 建一個maven 項目這時我們的項目結構是這個樣子的現在要寫一下代碼了例如,我們在新的xml文件中這樣寫MyBatis逆向工程生成dao層增刪改查如下:

int countByExample(BUserExample example); //根據條件查詢數量 /** * 示例 * public int countByExample() { * BUserExample userExample = new BUserExample(); * BUserExample.Criteria criteria = userExample.createCriteria(); * criteria.andUsernameEqualTo('fan'); * int count = userMapper.countByExample(userExample); * return count; * } * 相當于:select count(*) from user where username = ’fan’ */ int deleteByExample(BUserExample example); //根據條件刪除數據(一條或多條) /** * 示例 * public int deleteByExample() { * BUserExample userExample = new BUserExample(); * BUserExample.Criteria criteria = userExample.createCriteria(); * criteria.andUsernameEqualTo('fan'); * int count = userMapper.deleteByExample(userExample); * return count; * } * 相當于:delete from user where username = ’fan’ */ int deleteByPrimaryKey(Integer id); //根據主鍵刪除數據 int insert(BUser record); //插入數據(插入一條數據) int insertSelective(BUser record); //插入數據(插入一條數據,只插入不為null的字段,不會影響有默認值的字段) List<BUser> selectByExample(BUserExample example); //根據條件查詢數據 /** * 示例: * public List<BUser> getList() { * BUserExample userExample = new BUserExample(); * BUserExample.Criteria criteria = userExample.createCriteria(); * criteria.andUsernameEqualTo('fan'); * userExample.setOrderByClause('username desc'); * List<BUser> users = userMapper.selectByExample(userExample); * return users; * } * 相當于:select * from user where username = ’fan’ order by username desc */ BUser selectByPrimaryKey(Integer id); //根據主鍵查詢 int updateByExampleSelective(@Param('record') BUser record, @Param('example') BUserExample example); //按條件更新值不為null的字段 /** * 示例: * public int updateByParam(String username) { * BUserExample userExample = new BUserExample(); * BUserExample.Criteria criteria = userExample.createCriteria(); * criteria.andUsernameEqualTo(username); * BUser user = new BUser(); * user.setNickname('jdk'); * int update = userMapper.updateByExampleSelective(user, userExample); * return update; * } * 相當于:update user set nickname = ’jdk’ where username = #{username} */ int updateByExample(@Param('record') BUser record, @Param('example') BUserExample example); //按條件更新 int updateByPrimaryKeySelective(BUser record); //根據主鍵與條件更新 /** * 示例: * public int updateByIdAndParam(String username) { * BUser user = new BUser(); * user.setId(101); * user.setUsername(username); * int update = userMapper.updateByPrimaryKeySelective(user); * return update; * } * 相當于:update user set username = #{username} where id = 101 */ int updateByPrimaryKey(BUser record); //根據主鍵更新Mybatis反向工程的使用

為什么要使用反向工程,因為,快啊。運行一下就可以自動生成,實現,一堆表的增刪查改,等于多了個人幫忙工作,為什么不呢 ?

但與別的工具一樣,自動生成的東西總是有方便的地方,也會有麻煩的地方。所以,使用前要留點心眼。要不工具變負累,對個人還好 對團隊就變禍害了。

因此,下面的教程除了說如何使用,還會說 一個比較重要的技巧和心得,如果有更好的方法,或我說的有什么不對,請直接指出。謝謝

如有問題可以在下面留言,但我不一定有時間回復。

首先,用eclipse 建一個maven 項目

MyBatis逆向工程生成dao層增刪改查的操作

建一個maven 項目

MyBatis逆向工程生成dao層增刪改查的操作

打好勾點next

MyBatis逆向工程生成dao層增刪改查的操作

填好點finish

MyBatis逆向工程生成dao層增刪改查的操作

這時我們的項目結構是這個樣子的

打開pom.xml 文件

把如下內容復制進去:

<project xmlns='http://maven.apache.org/POM/4.0.0' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:schemaLocation='http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd'> <modelVersion>4.0.0</modelVersion> <groupId>cc.com</groupId> <artifactId>autoMybatis</artifactId> <version>0.0.1-SNAPSHOT</version> <dependencies> <!-- mybatis依賴 --> <dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.2.5</version></dependency><!-- 反向工程支持包 --> <dependency> <groupId>org.mybatis.generator</groupId> <artifactId>mybatis-generator-core</artifactId> <version>1.3.2</version> </dependency> <!-- mysql 驅動 --><dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.38</version> </dependency> </dependencies></project>

然后新建如下包:

MyBatis逆向工程生成dao層增刪改查的操作

mybatis.dao (用于放mapper 的java 接口)

mybatis.entity (用于放實體對象)

在src/main/resources 下新建目錄mybatis及它的子目錄mapper

新建baseInfoGeneratorConfig.xml文件

新建jdbc.properties文件

MyBatis逆向工程生成dao層增刪改查的操作

拷貝如下內容進jdbc.properties 要改為正確地址,用戶名, 密碼

jdbc.driver=com.mysql.jdbc.Driverjdbc.url=jdbc:mysql://localhost:3306/base_info?useSSL=falsejdbc.username=rootjdbc.password=自已改密碼

拷如下內容進入baseInfoGeneratorConfig.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' /> <context targetRuntime='MyBatis3'> <!-- 生成的pojo,將implements Serializable--> <plugin type='org.mybatis.generator.plugins.SerializablePlugin'></plugin> <commentGenerator><!-- 是否去除自動生成的注釋 true:是 : false:否 --><property name='suppressAllComments' value='true' /> </commentGenerator><!-- 數據庫鏈接URL、用戶名、密碼 --> <jdbcConnection driverClass='${jdbc.driver}' connectionURL='${jdbc.url}' userId='${jdbc.username}' password='${jdbc.password}'> </jdbcConnection><!-- 默認false,把JDBC DECIMAL 和 NUMERIC 類型解析為 Integertrue,把JDBC DECIMAL 和 NUMERIC 類型解析為java.math.BigDecimal --> <javaTypeResolver><property name='forceBigDecimals' value='false' /> </javaTypeResolver><!-- 生成model模型,對應的包路徑,以及文件存放路徑(targetProject),targetProject可以指定具體的路徑,如./src/main/java, 也可以使用“MAVEN”來自動生成,這樣生成的代碼會在target/generatord-source目錄下 --> <!--<javaModelGenerator targetPackage='com.joey.mybaties.test.pojo' targetProject='MAVEN'>--> <javaModelGenerator targetPackage='mybatis.entity' targetProject='./src/main/java'><property name='enableSubPackages' value='true'/><!-- 從數據庫返回的值被清理前后的空格 --><property name='trimStrings' value='true' /> </javaModelGenerator><!--對應的mapper.xml文件 --> <sqlMapGenerator targetPackage='mybatis.mapper' targetProject='./src/main/resources'><property name='enableSubPackages' value='true'/></sqlMapGenerator><!-- 對應的Mapper接口類文件 --> <javaClientGenerator type='XMLMAPPER' targetPackage='mybatis.dao' targetProject='./src/main/java'> <property name='enableSubPackages' value='true'/> </javaClientGenerator> <!-- 你可以改成一張數據庫中真正存在的表 schema 指的是schema,在mysql 中我發現填錯也能跑。tableName 是表名 ObjectName 是對象名--><table schema='base_info' tableName='user_info' domainObjectName='userInfo' enableCountByExample='false' enableUpdateByExample='false' enableDeleteByExample='false' enableSelectByExample='false' selectByExampleQueryId='false' ><property name='useActualColumnNames' value='false'/> </table></context> </generatorConfiguration>

上面的都搞好

現在要寫一下代碼了

在根目錄下建一個 GeneratorSqlmap.java 的JAVA 類

MyBatis逆向工程生成dao層增刪改查的操作

然后把以下內容覆蓋 GeneratorSqlmap.java 文件

import java.io.File;import java.util.ArrayList;import java.util.List; import org.mybatis.generator.api.MyBatisGenerator;import org.mybatis.generator.config.Configuration;import org.mybatis.generator.config.xml.ConfigurationParser;import org.mybatis.generator.internal.DefaultShellCallback; public class GeneratorSqlmap {public void generator(String generatorConfigFilePath) throws Exception{List<String> warnings = new ArrayList<String>();boolean overwrite = true;Class.forName('com.mysql.jdbc.Driver');//指定 逆向工程配置文件File configFile = new File(generatorConfigFilePath); 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); }​public static void main(String[] args) throws Exception {try {GeneratorSqlmap generatorSqlmap = new GeneratorSqlmap();//這里要填對配置文件路徑generatorSqlmap.generator('src/main/resources/baseInfoGeneratorConfig.xml');} catch (Exception e) {e.printStackTrace();}System.exit(0);} }

最后運行,GeneratorSqlmap.java ,然后刷新一下項目,就可以得到非常漂亮的,表的entity,mapper interface,mapper xml

MyBatis逆向工程生成dao層增刪改查的操作

以上的代碼可以在下面的github鏈接中找到

現在我們分享一個,能讓自動生成和手工修改和平共存的方法。

為什么要和平共存,因為,在數據庫表中要加或減一個字段,重復自動生成有可能覆蓋掉原來的。

這里有個經過實驗的方案,首先在我們生成完第一次沒有問題后,把baseInfoGeneratorConfig.xml 中的生成pojo(entity 你愛叫什么叫什么)

<!-- 生成model模型,對應的包路徑,以及文件存放路徑(targetProject),targetProject可以指定具體的路徑,如./src/main/java, 也可以使用“MAVEN”來自動生成,這樣生成的代碼會在target/generatord-source目錄下 --> <!--<javaModelGenerator targetPackage='com.joey.mybaties.test.pojo' targetProject='MAVEN'>--> <javaModelGenerator targetPackage='mybatis.entity' targetProject='./src/main/java'><property name='enableSubPackages' value='true'/><!-- 從數據庫返回的值被清理前后的空格 --><property name='trimStrings' value='true' /> </javaModelGenerator>

還有生成接口的

<!-- 對應的Mapper接口類文件 --> <javaClientGenerator type='XMLMAPPER' targetPackage='mybatis.dao' targetProject='./src/main/java'> <property name='enableSubPackages' value='true'/> </javaClientGenerator>

的注掉

然后,不要修改系統自動生成的 mapper.xml

MyBatis逆向工程生成dao層增刪改查的操作

(可以為配置文件中改個特別一點的名字(例如帶上sys),跟團隊的成員說一下就可以了。

然后,別外寫一個XML mapper 用于開發

MyBatis逆向工程生成dao層增刪改查的操作

只要namespace 是相同的,還是會在對應的接口中生成

例如,我們在新的xml文件中這樣寫

MyBatis逆向工程生成dao層增刪改查的操作

只需要在系統生成的JAVA接口中增加:

MyBatis逆向工程生成dao層增刪改查的操作

這樣一來,如果數據庫需要增加字段。只需簡單的三步就可以。

一,把系統生成的配置文件刪了。 二,運行自動生成。 三,把新加的字段在對應的pojo(或叫entity 中增加)

就可以,很好的把自動生成和手工修改做出分離。同時也會減少很多不應該出現的錯誤。

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持好吧啦網。

標簽: Mybatis 數據庫
相關文章:
主站蜘蛛池模板: 短信群发平台_群发短信软件_短信营销-讯鸽科技 | 执业药师报名时间,报考条件,考试时间-首页入口 | LCD3D打印机|教育|桌面|光固化|FDM3D打印机|3D打印设备-广州造维科技有限公司 | 中视电广_短视频拍摄_短视频推广_短视频代运营_宣传片拍摄_影视广告制作_中视电广 | 地图标注-手机导航电子地图如何标注-房地产商场地图标记【DiTuBiaoZhu.net】 | 屏蔽泵厂家,化工屏蔽泵_维修-淄博泵业 | 博医通医疗器械互联网供应链服务平台_博医通 | 武汉天安盾电子设备有限公司 - 安盾安检,武汉安检门,武汉安检机,武汉金属探测器,武汉测温安检门,武汉X光行李安检机,武汉防爆罐,武汉车底安全检查,武汉液体探测仪,武汉安检防爆设备 | 变色龙云 - 打包app_原生app_在线制作平台_短链接_ip查询 | 济南拼接屏_山东液晶拼接屏_济南LED显示屏—维康国际官网 | 间甲酚,间甲酚厂家-山东祥东新材料 | 工业制氮机_psa制氮机厂家-宏骁智能装备科技江苏有限公司 | 旗帜网络笔记-免费领取《旗帜网络笔记》电子书 | 聚合氯化铝厂家-聚合氯化铝铁价格-河南洁康环保科技 | 刮板输送机,粉尘加湿搅拌机,螺旋输送机,布袋除尘器 | 电缆故障测试仪_电缆故障定位仪_探测仪_检测仪器_陕西意联电气厂家 | 气动调节阀,电动调节阀,自力式压力调节阀,切断阀「厂家」-浙江利沃夫自控阀门 | 上海公众号开发-公众号代运营公司-做公众号的公司企业服务商-咏熠软件 | 热处理炉-退火炉-回火炉设备厂家-丹阳市电炉厂有限公司 | 不锈钢钢格栅板_热浸锌钢格板_镀锌钢格栅板_钢格栅盖板-格美瑞 | 旋转气浴恒温振荡器-往复式水浴恒温振荡器-金怡百科 | 众能联合-提供高空车_升降机_吊车_挖机等一站工程设备租赁 | 安徽合肥格力空调专卖店_格力中央空调_格力空调总经销公司代理-皖格制冷设备 | 缝纫客| 缝纫客| 电磁铁_推拉电磁铁_机械手电磁吸盘电磁铁厂家-广州思德隆电子公司 | 铝箔-铝板-花纹铝板-铝型材-铝棒管-上海百亚金属材料有限公司 | 气力输送设备_料封泵_仓泵_散装机_气化板_压力释放阀-河南锐驰机械设备有限公司 | 锂辉石检测仪器,水泥成分快速分析仪-湘潭宇科分析仪器有限公司 | Safety light curtain|Belt Sway Switches|Pull Rope Switch|ultrasonic flaw detector-Shandong Zhuoxin Machinery Co., Ltd | 热回收盐水机组-反应釜冷水机组-高低温冷水机组-北京蓝海神骏科技有限公司 | 塑料熔指仪-塑料熔融指数仪-熔体流动速率试验机-广东宏拓仪器科技有限公司 | 佛山商标注册_商标注册代理|专利注册申请_商标注册公司_鸿邦知识产权 | 深圳公司注册-工商注册公司-千百顺代理记账公司 | 锂电混合机-新能源混合机-正极材料混料机-高镍,三元材料混料机-负极,包覆混合机-贝尔专业混合混料搅拌机械系统设备厂家 | 智能门锁电机_智能门锁离合器_智能门锁电机厂家-温州劲力智能科技有限公司 | 外贮压-柜式-悬挂式-七氟丙烷-灭火器-灭火系统-药剂-价格-厂家-IG541-混合气体-贮压-非贮压-超细干粉-自动-灭火装置-气体灭火设备-探火管灭火厂家-东莞汇建消防科技有限公司 | 多物理场仿真软件_电磁仿真软件_EDA多物理场仿真软件 - 裕兴木兰 | 德国EA可编程直流电源_电子负载,中国台湾固纬直流电源_交流电源-苏州展文电子科技有限公司 | 长春网站建设,五合一网站设计制作,免费优化推广-长春网站建设 | 联系我们老街华纳娱乐公司官网19989979996(客服) |