本文将简要介绍怎样利用Mybatis Generator自动生成Mybatis的相关代码:
一、构建一个环境:
1. 首先创建一个表:
-
CREATETABLEpet(nameVARCHAR(20),ownerVARCHAR(20),speciesVARCHAR(20),sexCHAR(1),birthDATE,deathDATE);
2. 然后注入数据
-
insertintopetvalues('Fluffy','Harold','cat','f','1993-02-04',null);
-
insertintopetvalues('Claws','Gwen','cat','m','1994-03-17',null);
-
insertintopetvalues('Buffy','Harold','dog','f','1989-05-13',null);
-
insertintopetvalues('Fang','Benny','dog','m','1990-08-27',null);
-
insertintopetvalues('Bowser','Diane','dog','m','1979-08-31','1995-07-29');
-
insertintopetvalues('Chirpy','Gwen','bird','f','1998-09-11',null);
-
insertintopetvalues('Whistler','Gwen','bird',null,'1997-12-09',null);
-
insertintopetvalues('Slim','Benny','snake','m','1996-04-29',null);
注:这里的sql例子来自 http://dev.mysql.com/doc/refman/5.5/en/creating-tables.html
3. 在 Mybatis 主页 http://code.google.com/p/mybatis/ 上下载 Mybatis mybatis-generator-core [本文使用的是 1.3.0 版本]。当然运行 mybatis-generator 生成的代码还需要下载 mybatis 的 jar 包[本例使用的是 3.0.2 版本],和相关数据库的 jdbc [本文中使用的是MySql的jdbc] 。
二、运行 mybatis-generator
1. 要运行 generator ,需要给 generator 提供一个配置文件,指定其生成的数据库的相关信息。
以下是一个示例:
-
<?xmlversion="1.0"encoding="UTF-8"?>
-
<!DOCTYPEgeneratorConfiguration
-
PUBLIC"-//mybatis.org//DTDMyBatisGeneratorConfiguration1.0//EN"
-
"http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
-
-
<generatorConfiguration>
-
<classPathEntrylocation="mysql-connector-java-5.1.6-bin.jar"/>
-
-
<contextid="DB2Tables"targetRuntime="MyBatis3">
-
-
<commentGenerator>
-
<propertyname="suppressDate"value="true"/>
-
</commentGenerator>
-
-
<jdbcConnectiondriverClass="com.mysql.jdbc.Driver"
-
connectionURL="jdbc:mysql://localhost/test"userId="qgd"password="123456">
-
</jdbcConnection>
-
-
<javaTypeResolver>
-
<propertyname="forceBigDecimals"value="false"/>
-
</javaTypeResolver>
-
-
<javaModelGeneratortargetPackage="test.model"
-
targetProject="../src/main/java">
-
<propertyname="enableSubPackages"value="true"/>
-
<propertyname="trimStrings"value="true"/>
-
</javaModelGenerator>
-
-
<sqlMapGeneratortargetPackage="test.dao"
-
targetProject="../src/main/java">
-
<propertyname="enableSubPackages"value="true"/>
-
</sqlMapGenerator>
-
-
<javaClientGeneratortype="XMLMAPPER"
-
targetPackage="test.dao"targetProject="../src/main/java">
-
<propertyname="enableSubPackages"value="true"/>
-
</javaClientGenerator>
-
-
<tabletableName="pet"domainObjectName="Pet">
-
</table>
-
-
</context>
-
</generatorConfiguration>
这个配置文件提供了 mybatis-generator所需要的参数信息:
* 其中classPathEntry 是引用的jdbc的类路径,这里将jdbc jar和generator的jar包放在一起了;
* commentGenerator 是用来除去时间信息的,这在配合类似subversion的代码管理工具时使用很有效,因为可以减少没有必要的注释迁入;
* jdbcConnection是指定的jdbc的连接信息;
* javaTypeResolver式类型转换的信息,这里并没有用到;
* javaModelGenerator是模型的生成信息,这里将指定这些Java model类的生成路径;
* sqlMapGenerator是mybatis 的sqlMapper XML文件的生成信息,包括生成路径等;
* javaClientGenerator是应用接口的生成信息;
* table是用户指定的被生成相关信息的表,它必须在指定的jdbc连接中已经被建立。
2. mybatis-generator 有多种运行方式,最简单的就是命令行的方式,只需要指定相应的配置文件的路径即可:
-
java-jarmybatis-generator-core-1.3.0.jar-configfile../src/main/resource/config.xml-overwrite
运行后生成的代码包括模型类 test.model.Pet 和 test.model.PetExample , test.dao.PetMapper 接口以及其相对应的 xml 映射文件,在这里就不在赘述了。
三、使用 mybatis-generator 生成的代码
1. 现在我们要利用这些生成的代码,首先我们需要一个关于所有映射的配置文件。需要我们手写如下:【不知道为什么generator没有选择自动生成这个文件,毕竟这些信息generator都可以得到】
-
<?xmlversion="1.0"encoding="UTF-8"?>
-
<!DOCTYPEconfiguration
-
PUBLIC"-//mybatis.org//DTDConfig3.0//EN"
-
"http://mybatis.org/dtd/mybatis-3-config.dtd">
-
<configuration>
-
<environmentsdefault="development">
-
<environmentid="development">
-
<transactionManagertype="JDBC"/>
-
<dataSourcetype="POOLED">
-
<propertyname="driver"value="com.mysql.jdbc.Driver"/>
-
<propertyname="url"value="jdbc:mysql://localhost/test"/>
-
<propertyname="username"value="qgd"/>
-
<propertyname="password"value="123456"/>
-
</dataSource>
-
</environment>
-
</environments>
-
<mappers>
-
<mapperresource="test/dao/PetMapper.xml"/>
-
</mappers>
-
</configuration>
2. 另外还要使用然后我们还需要一个Main示例方法来调用这些已生成的代码:
-
packagetest;
-
-
importjava.io.Reader;
-
importjava.util.List;
-
-
importorg.apache.ibatis.io.Resources;
-
importorg.apache.ibatis.session.SqlSession;
-
importorg.apache.ibatis.session.SqlSessionFactory;
-
importorg.apache.ibatis.session.SqlSessionFactoryBuilder;
-
-
importtest.dao.PetMapper;
-
importtest.model.Pet;
-
importtest.model.PetExample;
-
-
publicclassTest{
-
-
publicstaticvoidmain(String[]args)throwsException{
-
Stringresource="MapperConfig.xml";
-
Readerreader=Resources.getResourceAsReader(resource);
-
SqlSessionFactorysqlMapper=newSqlSessionFactoryBuilder().build(reader);
-
SqlSessionsqlSession=sqlMapper.openSession();
-
-
PetExamplepet=newPetExample();
-
pet.or().andDeathIsNotNull();
-
try{
-
PetMappermapper=sqlSession.getMapper(PetMapper.class);
-
List<Pet>allRecords=mapper.selectByExample(pet);
-
for(Pets:allRecords)
-
System.out.println(s);
-
}finally{
-
sqlSession.close();
-
}
-
}
-
}
这样就可以打印出相应的查询结果信息了。
四、小结
该示例的完整的Eclipse工程见附件mybatis-generator-usage.zip,其中已经包含了示例需要使用的jar包。
本文中只是用到了mybatis-generator 的一部分功能,mybatis-generator 生成代码的方式还包括ant或Maven脚本,或者直接使用java API生成;另外通过修改配置文件,generator还可以指定表的生成细节,并可以添加插件。其功能文档在generator的分发包的doc文件夹下有更详细的介绍。
这里使用的表示没有主键的表,针对有一个主键或多个主键的表,mybatis-generator的生成的内容也有所不同,感兴趣的读者可以自行试验一下。
分享到:
相关推荐
使用 MyBatis Generator 自动生成 MyBatis 代码 MyBatis Generator 是一个流行的开源工具,用于根据数据库表结构自动生成 MyBatis 的映射文件、实体类、DAO 层和 Service 层等代码。下面是使用 MyBatis Generator ...
标题 "mybatis-generator自动生成代码[增加Service的生成]" 指的是MyBatis Generator(MBG)这一工具,它能够根据数据库表结构自动产生Java持久层代码,大大减轻了开发人员的手动编码工作。在描述中提到"增加Service...
基于 OpenCV 的魔兽世界钓鱼机器人
供应链管理中信息共享问题的研究
青春文学中的爱情观呈现
1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。
XLSReadWriteII6.02.01.7z
图解系统-小林coding-v1.0
1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。
漫画作品与乌托邦理想追求
江苏建筑消防设施维护保养规程.rar
内容概要:论文介绍了一款名为DODRIO的交互式可视化工具,帮助自然语言处理(NLP)研究人员和从业者解析基于转换器架构的语言模型内部工作机理。DODRIO整合了概述图与详尽视图,支持用户比较注意力权重与其输入文本的句法结构和语义特征。具体而言,它包含了依赖关系视图(Dependency View)、语义关注图(Semantic Attention Graph)以及注意力头概览(Attention Head Overview),并利用不同的图形展示方法使复杂的多层多头转换器模型中的注意力模式更容易理解和研究。 适用人群:适用于从事深度学习、自然语言处理的研究人员和技术从业者;尤其适合对基于变换器架构的大规模预训练语言模型感兴趣的开发者们。 使用场景及目标:DODRIO用于探索转换器模型各层级之间的联系、验证已有研究成果,同时激发新假设形成。具体使用时可以选择特定数据集中的句子作为样本输入,观察不同注意力机制如何响应文本内容的变化。此外,还可以用来对比精简版本DistilBERT的表现,评估其相对全量模型BERT的优势与不足。 其他说明:DODRIO为开源项目,提供web端实施方式,使得
该代码使用scikit-learn的乳腺癌数据集,完成分类模型训练与评估全流程。主要功能包括:数据标准化、三类模型(逻辑回归、随机森林、SVM)的训练、模型性能评估(分类报告、混淆矩阵、ROC曲线)、随机森林特征重要性分析及学习曲线可视化。通过`train_test_split`划分数据集,`StandardScaler`标准化特征,循环遍历模型进行统一训练和评估。关键实现细节包含:利用`classification_report`输出精确度/召回率等指标,绘制混淆矩阵和ROC曲线量化模型效果,随机森林的特征重要性通过柱状图展示,学习曲线分析模型随训练样本变化的拟合趋势。最终将原始数据和预测结果保存为CSV文件,便于后续分析,并通过matplotlib进行多维度可视化比较。代码结构清晰,实现了数据处理、模型训练、评估与可视化的整合,适用于乳腺癌分类任务的多模型对比分析。
在智慧城市建设的大潮中,智慧园区作为其中的璀璨明珠,正以其独特的魅力引领着产业园区的新一轮变革。想象一下,一个集绿色、高端、智能、创新于一体的未来园区,它不仅融合了科技研发、商业居住、办公文创等多种功能,更通过深度应用信息技术,实现了从传统到智慧的华丽转身。 智慧园区通过“四化”建设——即园区运营精细化、园区体验智能化、园区服务专业化和园区设施信息化,彻底颠覆了传统园区的管理模式。在这里,基础设施的数据收集与分析让管理变得更加主动和高效,从温湿度监控到烟雾报警,从消防水箱液位监测到消防栓防盗水装置,每一处细节都彰显着智能的力量。而远程抄表、空调和变配电的智能化管控,更是在节能降耗的同时,极大地提升了园区的运维效率。更令人兴奋的是,通过智慧监控、人流统计和自动访客系统等高科技手段,园区的安全防范能力得到了质的飞跃,让每一位入驻企业和个人都能享受到“拎包入住”般的便捷与安心。 更令人瞩目的是,智慧园区还构建了集信息服务、企业服务、物业服务于一体的综合服务体系。无论是通过园区门户进行信息查询、投诉反馈,还是享受便捷的电商服务、法律咨询和融资支持,亦或是利用云ERP和云OA系统提升企业的管理水平和运营效率,智慧园区都以其全面、专业、高效的服务,为企业的发展插上了腾飞的翅膀。而这一切的背后,是大数据、云计算、人工智能等前沿技术的深度融合与应用,它们如同智慧的大脑,让园区的管理和服务变得更加聪明、更加贴心。走进智慧园区,就像踏入了一个充满无限可能的未来世界,这里不仅有科技的魅力,更有生活的温度,让人不禁对未来充满了无限的憧憬与期待。
内容概要:本文档介绍了基于MATLAB实现的贝叶斯优化(BO)、Transformer和GRU相结合的多特征分类预测项目实例,涵盖了详细的程序设计思路和具体代码实现。项目旨在应对数据的多样性与复杂性,提供一种更高效的多特征数据分类解决方案。文档主要内容包括:项目背景与意义,技术难点与解决方案,具体的实施流程如数据处理、模型构建与优化、超参数调优、性能评估以及精美的GUI设计;详细说明了Transformer和GRU在多特征数据分类中的应用及其与贝叶斯优化的有效结合,强调了其理论与实际应用中的价值。 适合人群:具备一定机器学习和MATLAB编程基础的研发人员,特别是从事多维数据处理与预测工作的专业人士和技术爱好者。 使用场景及目标:① 适用于金融、医疗、交通等行业,进行复杂的多维数据处理和预测任务;② 提升现有分类任务中复杂数据处理的准确度和效率,为各行业提供智能预测工具,如金融市场预测、患者病情发展跟踪、交通流量管理等。 其他说明:本文档包含了丰富的实战案例和技术细节,不仅限于模型设计本身,还涉及到数据清洗、模型优化等方面的知识,帮助使用者深入理解每一步骤背后的原理与实现方法。通过完整的代码样例和GUI界面设计指导,读者可以从头到尾跟随文档搭建起一套成熟的分类预测系统。
大数据的sql练习题,初级中级高级
内容概要:论文介绍了名为Transformer的新网络架构,它完全基于自注意力机制,在不使用递归或卷积神经网络的情况下建模输入与输出之间的全局依赖关系,尤其适用于长文本处理。通过多头自注意力层和平行化的全连接前馈网络,使得在机器翻译任务上的表现优于当时最佳模型。具体地,作者用此方法实现了对英语-德语和英语-法语翻译、句法解析等任务的高度并行化计算,并取得显著效果。在实验方面,Transformer在较短训练时间内获得了高质量的翻译结果以及新的单一模型基准。除此之外,研究人员还探索了模型变体的效果及其对于不同参数变化时性能的变化。 适用人群:从事自然语言处理领域的研究者、工程师、学生,熟悉深度学习概念尤其是编码器-解码器模型以及关注模型创新的人士。 使用场景及目标:主要适用于序列到序列(seq2seq)转换任务如机器翻译、语法分析、阅读理解和总结等任务的研究和技术开发;目标在于提高计算效率、缩短训练时间的同时确保模型性能达到或超过现有技术。 其他说明:本文不仅提出了一个新的模型思路,更重要的是展示了自注意力机制相较于传统LSTM或其他方式所拥有的优势,例如更好地捕捉远距离上下文关系的能力
1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。
1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。