利用MyBatis Generator自动创建代码

如果你使用过hibernate的eclipse插件自动创建DAO文件,那么就容易理解下面介绍的内容;如果你还没有用过hibernate也无妨。下面介绍使用mybatis 3的eclipse插件自动生成相关文件以及如何使用这些文件。
eclipse插件安装地址:http://mybatis.googlecode.com/svn/sub-projects/generator/trunk/eclipse/UpdateSite/
附件有link安装包,link安装方式参考http://maimode.iteye.com/admin/blogs/1164524
MyBatis Generator详细介绍参见:http://code.google.com/p/mybatis/wiki/Generator
安装插件的过程就不说了,安装完后,eclipse中File-》new-》other中会发现多了mybatis选项说明插件安装成功。
如何使用插件
在任意项目中利用上图中的向导创建generatorConfig.xml文件(名称可修改)然后修改文件内容,主要是设置连接数据的相关参数:
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 >  
<context id="context1" >  
<jdbcConnection driverClass="oracle.jdbc.driver.OracleDriver" connectionURL="jdbc:oracle:thin:@192.168.2.21:1521:ORCL" userId="atfm" password="atfm" />  
<javaModelGenerator targetPackage="com.topsci.atfm.persistence.mybatis.model" targetProject="ATFM" />  
<sqlMapGenerator targetPackage="com.topsci.atfm.persistence.mybatis.mapper" targetProject="ATFM" ></sqlMapGenerator>  
<javaClientGenerator targetPackage="com.topsci.atfm.persistence.mybatis.client" targetProject="ATFM" type="XMLMAPPER" />  
<table schema="" tableName="ATFM_ROUTE_CTRL" ></table>  
<table tableName="SYN_TRACK_EST" domainObjectName="AtfmTrack"></table>  
</context>  
</generatorConfiguration>  
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 >  
<context id="context1" >  
<jdbcConnection driverClass="oracle.jdbc.driver.OracleDriver" connectionURL="jdbc:oracle:thin:@192.168.2.21:1521:ORCL" userId="atfm" password="atfm" />  
<javaModelGenerator targetPackage="com.topsci.atfm.persistence.mybatis.model" targetProject="ATFM" />  
<sqlMapGenerator targetPackage="com.topsci.atfm.persistence.mybatis.mapper" targetProject="ATFM" ></sqlMapGenerator>  
<javaClientGenerator targetPackage="com.topsci.atfm.persistence.mybatis.client" targetProject="ATFM" type="XMLMAPPER" />  
<table schema="" tableName="ATFM_ROUTE_CTRL" ></table>  
<table tableName="SYN_TRACK_EST" domainObjectName="AtfmTrack"></table>  
</context>  
</generatorConfiguration>  
根据名称应该能才出来大致的意思。
配置好连接数据库及表的信息后就可以利用插件自动生成代码了。
点击上图中的选项,如果配置正确,便自动创建相关文件了。
文件主要有三类:
client包,mapper 接口文件
model包,实体bean文件
mapper包,mapper xml文件
如何使用这些自动生成的文件
首先需要将mapper包下的xml文件添加到mybatis的sqlmapper文件中
然后程序中这样使用:
Java代码  
public List<TrackBean> selectTrackOnRoute(String routeName) {  
List<TrackBean> rt = null;  
SqlSession session = null;  
try {  
session = sqlSessionFactory.openSession();  
AtfmTrackMapper mapper = session.getMapper(AtfmTrackMapper.class);  
// 构造查询条件  
AtfmTrackExample example = new AtfmTrackExample();  
example.createCriteria()  
.andRouteIs(routeName);  
// 查询  
List<AtfmTrack> list = mapper.selectByExample(example);  
// 包装成TrackBean  
rt = this.toTrackBean(list);  
} catch (Exception e) {  
e.printStackTrace();  
logger.error(e.getMessage());  
} finally {  
if (session != null)  
session.close();  
}  
return rt;  
}  
Java代码  
public List<TrackBean> selectTrackOnRoute(String routeName) {  
List<TrackBean> rt = null;  
SqlSession session = null;  
try {  
session = sqlSessionFactory.openSession();  
AtfmTrackMapper mapper = session.getMapper(AtfmTrackMapper.class);  
// 构造查询条件  
AtfmTrackExample example = new AtfmTrackExample();  
example.createCriteria()  
.andRouteIs(routeName);  
// 查询  
List<AtfmTrack> list = mapper.selectByExample(example);  
// 包装成TrackBean  
rt = this.toTrackBean(list);  
} catch (Exception e) {  
e.printStackTrace();  
logger.error(e.getMessage());  
} finally {  
if (session != null)  
session.close();  
}  
return rt;  
}  
如果where条件比较复杂,还可以自定义查询条件,如上例中andRouteIs(routeName)就是自定义的查询条件。可以在
具体的Example的内部类Criteria中自定义查询条件:
Java代码  
public Criteria andRouteIs(String routeName){  
StringBuffer sb = new StringBuffer("point_name in " +  
"(select p.point from route_point p where p.route = '" + routeName + "') " +  
"AND FLIGHT_NO IN " +  
"(select D.FLIGHT_NO from syn_aftn_dynamic_recent d " +  
"where d.route like '%" + routeName + "%')");  
addCriterion(sb.toString());  
return this;  
}  
Java代码  
public Criteria andRouteIs(String routeName){  
StringBuffer sb = new StringBuffer("point_name in " +  
"(select p.point from route_point p where p.route = '" + routeName + "') " +  
"AND FLIGHT_NO IN " +  
"(select D.FLIGHT_NO from syn_aftn_dynamic_recent d " +  
"where d.route like '%" + routeName + "%')");  
addCriterion(sb.toString());  
return this;  
}  
我们可能会担心一旦重新执行generate的时候,我们自己编写的代码会不会丢失,不会的,插件不会修改或丢弃我们自己编写的代码。
一旦掌握了插件如何使用,重要的工作就是如何使用XXXExample类了。这种方式,完全不用编写繁琐的mapper xml文件。
MyBatis_Generator_1.3.1.zip (2.2 MB)
下载次数: 1098

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/293765.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Navicat Premium 怎么安装比较快

Navicat Premium是一套数据库管理工具&#xff0c;结合其它Navicat成员&#xff0c;支持单一程序同时连接到MySQL、MariaDB、SQL Server、SQLite、Oracle和PostgreSQL数据库。将此工具连接数据库&#xff0c;你可以从中看到各种数据库的详细信息.包括报错&#xff0c;等等.当然…

.netCHARTING图表控件详细介绍及下载

.netCHARTING是一款功能强大的图表控件&#xff0c;利用.NET framework和GDI为工作于ASP.NET和Winform的C#和VB.NET开发人员提供可托管的图表解决方案&#xff0c;提供了多种2D和3D图表类型以及组合图、仪表&#xff0c;完全支持iPhone, iOS, Andoid, WP7 & Tablet &#x…

《SAS编程与数据挖掘商业案例》学习笔记之三

五&#xff1a;set语句 1.keep和drop指定变量进入或者不进入pdv eg&#xff1a; Data d1(keepname) data d2 (keepname sex); set sashelp.class(keepname sex rename(namename_new sexsex_new) where(sexM) firstobs3 obs5); Run; 注&#xff1a; 黄色部分标示只有name …

你距离哈佛学霸到底有多远?实力证明,真正的学霸精神不是智商,而是。。。

▲ 点击查看科学家曾在基于脑科学和认知科学后得出一个“学习的金字塔”理论。就是下面这张图&#xff1a;顶端的就是我们所谓的“知识”&#xff0c;但为了可以达到这个顶端&#xff0c;下面有一系列的支撑能力。而引申出来的核心概念&#xff0c;就叫“玩中学”。不要想当然地…

Android之IPC通信中的UID和PID识别

PCThreadState对象维护了2个变量 pid_t mCallingPid; uid_t mCallingUid; 从变量名称来看&#xff0c;这2个变量保存了进程的PID和UID&#xff0c;并且由于这两个变量由IPCThreadState对象维护&#xff0c;可见它们是与IPC相关的。具体它们保存的是…

通过system调用Am命令执行动作

在底层代码中看到这样一条语句&#xff1a; system("/system/bin/sh -c \"am broadcast -a android.intent.action.AT_AIRPLANE_MODE --ez state true\""); system 这是干什么的啊&#xff1f;&#xff1f; 经google原来system是系统调用&#xff0c;执行一…

在 ASP.NET Core 中使用托管服务实现后台任务

在 ASP.NET Core 中&#xff0c;后台任务作为托管服务实现。托管服务是一个类&#xff0c;具有实现 IHostedService 接口的后台任务逻辑。ASP.NET Core 辅助角色服务模板可作为编写长期服务应用的起点。通过辅助角色服务模板创建的应用将在其项目文件中指定 Worker SDK&#xf…

Framer – 将视觉搞转换为更真实的动态原型

Framer 是一个 JavaScript 框架&#xff0c;简化了创建现实原型&#xff0c;实现完整的3D效果。以一种简单&#xff0c;可读的和强大的方式定义交互和创建动画。 另外还有 Framer Generator 是一个桌面应用程序&#xff0c;从 Photoshop 文件导入资源和和文件夹层次结构。你的…

《SAS编程与数据挖掘商业案例》学习笔记之四

5.双set语句的应用(2个指针&#xff0c;一个pdv) libname chapt3 f:\data_model\book_data\chapt3; data percent; if _n_ 1 then set chapt3.summary(keep cargosum); set chapt3.empcount; pctemps numemps / cargosum; run; 解读&#xff1a;编译后&#xff0c;内存中会出…

现在相亲还要体检报告了?

1 伤害性极大&#xff08;素材来源网络&#xff0c;侵删&#xff09;▼2 相亲还要看体检报告&#xff1f;&#xff08;素材来源网络&#xff0c;侵删&#xff09;▼3 难以启齿的地名&#xff08;素材来源网络&#xff0c;侵删&#xff09;▼4 当知道你不回家之后&#xff08…

.NET 6新特性试用 | System.Text.Json序列化代码自动生成

前言几乎所有.NET序列化程序的实现基础都是反射。下列代码是Newtonsoft.Json的实现&#xff1a;protected virtual JsonProperty CreateProperty(MemberInfo member, MemberSerialization memberSerialization) {JsonProperty property new JsonProperty();property.PropertyT…

js去除左右空格

function yanzheng(val) {return val.replace(/(^\s*)|(\s*$)/g, "");}function Inputchecking() {var account document.getElementById("txt_ACCOUNT");if (yanzheng(account.value) "") {alert(请输入账号);account.focus();return false;}…

UVa 264 - Count on Cantor

《算法竞赛入门经典》5.4.1的题目&#xff0c;大意是&#xff0c;给出一个数表&#xff0c;如下&#xff1a; 第一项是1/1&#xff0c; 第二项是1/2&#xff0c; 第三项是2/1&#xff0c; 第四项是3/1&#xff0c; 第五项是2/2.....给一个正整数n&#xff0c;求第n项。 设第n个…

《SAS编程与数据挖掘商业案例》学习笔记之五

六&#xff1a;merge语句的使用(一个指针&#xff0c;一个pdv) merge语句是横向合并数据集&#xff0c;合并前必须两个数据集都要按照合并变量进行排序&#xff1b; proc sort datachapt3.merge_a;by x;run; proc sort datachapt3.merge_b;by bx;run; data ed; merge chapt3.me…

他解决了物理学千年争端,成就肩比牛顿、爱因斯坦,但却鲜有人知......

全世界只有3.14 % 的人关注了爆炸吧知识电磁学是经典物理学的一部分&#xff0c;提到电磁学就不得不提经典电动力学创始人-麦克斯韦。麦克斯韦的名气好像并不如牛顿、爱因斯坦那样家喻户晓&#xff0c;毕竟当提到牛顿的时候&#xff0c;这个公式就如同条件反射似得浮现出来&…

Windows 11 全新 4K 壁纸发布

微软近日发布 Windows 11 全新主题包 「Pantone Color of the Year 2022」&#xff0c;包含 4 张经重塑的壁纸。微软表示&#xff1a;通过这四张使用 Pantone Color of the Year 2022,&#xff0c;PANTONE 17-3938 Very Peri 颜色&#xff0c;重新定制的 Windows 11 Bloom 壁纸…

android之在view中内嵌浏览器的方法

我要做的一个东西是在一个页面的中间嵌入浏览器&#xff0c;一开始不知道从哪里开始&#xff0c;因为以前用的都是Textveiw或者editVeiw之类的控件&#xff0c;而它们并不能用来显示网页的内容&#xff0c;怎么办呢&#xff1f; 首先想到的是&#xff1a;是不是有一个用来显示网…

CCNA综合实验(一):实验拓扑与要求

一、实验拓扑 屏幕剪辑的捕获时间: 2013/5/5 星期日 16:49 IP地址分配 IP地址为192.168.1.0/24 ,&#xff0c;根据本地网络的需求制定子网划分方案。要求如下&#xff1a; R2&#xff08;带有WIC-2T模块&#xff09;上开启环回接口loopback 0 地址为 192.168.X.20&#xff1b;R…

《SAS编程与数据挖掘商业案例》学习笔记之六

八&#xff1a;modify语句&#xff08;(一个指针&#xff0c;两个pdv)&#xff09; merge语句和update语句对数据集横向合并的主要功能还只能体现在匹配访问上&#xff0c;如通过by语句&#xff0c;对每个by组中的匹配数据集进行修改或更新&#xff0c;对于非常庞大的数据集需要…