官网地址:http://code.google.com/p/mybatis/

版本:mybatis 3.2.3

生成工具:mybatis-generator-core-1.3.2-bundle.zip

mysql jar包 : mysql-connector-java-5.1.6-bin.jar

------------

生成工具的使用:

MBG有一个配置文件generatorConfig.xml。在里面设置连接数据库配置、javaModel、sqlMap、javaClient,table

<strong><?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>
<!-- 引入配置文件,可以通过${sqljdbcPath}取值 -->
<properties url="file:///D:/workspaces/mybatisGen/bin/generatorConfig.properties"/>
<!-- classPathEntry用于设置数据库的JDBC驱动的jar包地址,location可以等于只包含了数据库驱动的jar或zip路经,也可以是一个包含驱动的目录 -->
<classPathEntry location="c:/ojdbc14.jar" />
<!-- targetRuntime:代码生成目标,默认是MyBatis3,可以是Ibatis2Java2或者Ibatis2Java5。生成对象兼容MyBatis版本3.0和更高版本,和JSE 5.0和更高版本 -->
<!-- defaultModelType:用来定义生成模型类型策略。1.conditional 默认策略,为每个表生成一个Model class;2.flat:将所有的表中生成一个Model class,即这个类将保存所有表中字段;3.hierarchical :如果表有一个主键,该模型将生成一个主键类,另一个类,用于容纳任何BLOB列在表中,和另一个类,用于容纳其余的字段。这个是一个适当的继承类之间的关系 -->
<context id="DB2Tables" targetRuntime="MyBatis3" defaultModelType="conditional">
<commentGenerator>
<!-- 是否去除自动生成的注释,默认false,true:去除;false:不去除 -->
<property name="suppressAllComments" value="true" />
<!-- 指定在生成的注释是否将包括时间戳,默认是false -->
<property name="suppressDate" value="true" />
</commentGenerator>
<!-- 数据库连接的信息:驱动类、连接地址、用户名、密码 -->
<jdbcConnection
driverClass="oracle.jdbc.driver.OracleDriver"
connectionURL="jdbc:oracle:thin:@127.0.0.1:1521:ZFGJJ"
userId="hr"
password="hr">
</jdbcConnection>
<!-- 解决数字转换问题 -->
<javaTypeResolver>
<!-- 只有一个属于forceBigDecimals,默认false。如果字段精确超过0,生成BigDecimal 如果字段精确是0,总长度10-18生成Long; 如果字段精确是0,总长5-9生成Integer; 如果字段精确是0,总长小于5生成Short; 如果forceBigDecimals为true,统一生成BigDecimal -->
<property name="forceBigDecimals" value="false" />
</javaTypeResolver>
<!-- Model生成配置 targetPackage:生成包路径,自动生成目录。targetProject:项目路经,可以绝对路径或者相对路径。 -->
<javaModelGenerator targetPackage="test.model" targetProject="D:\Workspace\mylearn\mybatis\">
<!-- enableSubPackages:是否让schema作为包的后缀 -->
<property name="enableSubPackages" value="true" />
<!-- 从数据库返回的值被清理前后的空格 -->
<property name="trimStrings" value="true" />
</javaModelGenerator>
<!-- sqlMap配置 -->
<sqlMapGenerator targetPackage="test.sqlmap" targetProject="D:\Workspace\mylearn\mybatis\">
<property name="enableSubPackages" value="true" />
</sqlMapGenerator>
<!-- DAO接口的生成 -->
<javaClientGenerator type="XMLMAPPER" targetPackage="test.dao" targetProject="D:\Workspace\mylearn\mybatis\">
<property name="enableSubPackages" value="true" />
</javaClientGenerator>
<!-- tableName:用于自动生成代码的数据库表;domainObjectName:对应于数据库表的javaBean类名,如果未指定自动基于表名生成 -->
<!-- table其他属性:enableCountByExample="false";enableUpdateByExample="false";enableDeleteByExample="false";enableSelectByExample="false";selectByExampleQueryId="false";schema即为数据库名, tableName为对应的数据库表, domainObjectName是要生成的实体类 -->
<table schema="hr" tableName="countries" domainObjectName="Customer">
<!-- 忽略字段 -->
<ignoreColumn column="columnName" /> <!-- 无论字段是什么类型,生成的类属性都是varchar -->
<columnOverride column="columnName" jdbcType="VARCHAR" />
<!-- 修改数据库列名映射的javabean属性名 -->
<columnOverride column="oldColumnName" property="propertyName" /> <!-- 主键生成 如果用了这个 generatedKey ,MBG将在sqlmpper.xml里生成一个 selectKey元素在用在<insert>元素里 。 -->
<generatedKey column="columnName" sqlStatement="JDBC" identity="true" />
<generatedKey column="ID" sqlStatement="MySql" identity="true" /> <!-- javabean继承的父类 -->
<property name="rootClass" value="com.xxx.commons.entity.IdEntity"/> <property name="useActualColumnNames" value="true"/>
</table>
</context>
</generatorConfiguration></strong>

<javaModelGenerator>元素用于定义Java模型生成的属性
支持的属性:
constructorBased:默认值是false

此属性用于选择是否MyBatis生成器将生成一个类的构造函数,它接受一个值类中的每个字段。同时,SQL结果地图将建成投入使用构造函数而不是“setter”为每个字段。这个属性是只适用于MyBatis3和将被忽略了iBATIS2。这个属性可以被相应的属性在< table >元素。

immutable:默认为false

不可变,此属性用于选择是否MyBatis生成器将产生不可变模型类——这意味着类不会有“setter”方法和构造函数会接受类中每个字段的值。

trimStrings:默认值是false。 
此属性用于选择是否MyBatis生成器添加代码来修剪的白色空间从字符字段从数据库返回的。这可以是很有用的,如果您的数据库将数据存储在字符字段而不是VARCHAR字段。当真正的,MyBatis生成器将插入代码来削减字符字段。

<javaClientGenerator>元素是用来定义Java客户机代码生成器的属性 Java客户机生成器用来建立Java接口和类,以便可以方便地使用生成的Java模型和XML映射文件。 对于iBATIS2目标环境,这些生成的对象采用的形式DAO接口和实现类。 对于MyBatis,生成的对象采用的形式mapper接口。 type属性: 如果targetRuntime为MyBatis3 XMLMAPPER:生成的对象将Java接口MyBatis 3。xmapper基础设施接口将会依赖生成的XML映射器文件。一般都是使用这个XMLMAPPER

<table>元素用于选择数据库中的一个表。选择的表将导致生成以下对象为每个表

tableName:必须配置 ,指定表的名称 domainObjectName:生成javabean对象的基本名称。如果未指定,MBG将自动基于表名生成。这个名字(无论是在这里指定,或自动生成)将被用来作为域类名和DAO类的名字。

enableInsert:是否生成插入语句。默认是true enableSelectByPrimaryKey:是否通过主键生成选择语句。不管是否有这种设置,如果该表没有一个主键将不会生成。 enableUpdateByPrimaryKey:是否通过主键生成更新语句。如果该表没有主键,不管是否设置该属性,语句将不会生成。 enableDeleteByPrimaryKey:是否通过主键生成删除语句。如果该表没有主键,不管这种设置该属性,语句将不会生成。 enableDeleteByExample:是否通过example对象生成删除语句。这个声明使得许多不同的动态删除在运行时生成。 enableCountByExample:是否通过example对象生成计算行数语句。该语句将返回一个表中的行数相匹配的example。 enableUpdateByExample:是否通过example对象生成更新语句。该语句将更新一个表中相匹配的记录。

selectByPrimaryKeyQueryId:这个值将被添加到选择列表中选择通过主键的声明在本表格:“' <值>作为QUERYID”。这可以用于识别查询在DBA在运行时跟踪工具。如果你使用这样的价值,你应该指定一个唯一的id为每个不同的查询生成MBG。 selectByExampleQueryId:这个值将被添加到选择列表中选择通过例子的声明在本表格:“' <值>作为QUERYID”。这可以用于识别查询在DBA在运行时跟踪工具。如果你使用这样的价值,你应该指定一个唯一的id为每个不同的查询生成MBG。 enableSelectByExample:是否应该生成通过example的选择语句。这个声明使得许多不同的动态查询是在运行时生成。

MBG工具有5种方式运行,1、命令行方式,2、ant方式,3、Maven方式,4、基于xml配置的java方式,5、基于java配置的java方式。

1、运行cmd->java - jar jar包的文件路径  -configfile  generator.xml的文件路径  -overwrite 命令。

如下:

java -jar E:\Websoft\mybaits\mybatis-generator-core-1.3.2\lib\mybatis-generator-core-1.3.2.jar -configfile E:\WebWorkSpace\workspace_js\downAttachdemo\src\com\mochasoft\down\generator.xml -overwrite  

成功时输出:MyBatis Generator finished successfully.

2、 Java生成

  List<String> warnings = new ArrayList<String>();
boolean overwrite = true;//是否覆盖原来的文件
File configFile = new File("generatorConfig.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);

3、ant

1.<?xml version="1.0"?>
2.
3.<project default="genfiles" basedir=".">
4. <path id="build">
5. <fileset dir="${basedir}\web\WEB-INF\lib">
6. <include name="*.jar" />
7. </fileset>
8. </path>
9.
10. <property name="generated.source.dir" value="${basedir}" />
11.
12. <target name="genfiles" description="Generate the files">
13. <taskdef name="mbgenerator" classname="org.mybatis.generator.ant.GeneratorAntTask">
14. <classpath refid="build" />
15. </taskdef>
16. <!--configfile:填你MBG文件名 -->
17. <mbgenerator overwrite="true" configfile="generatorConfig.xml" verbose="false">
18. <propertyset>
19. <propertyref name="generated.source.dir" />
20. </propertyset>
21. </mbgenerator>
22. </target>
23.</project>

ibatis例子入门:

http://www.cnblogs.com/ycxyyzw/archive/2012/10/13/2722567.html

mybatis 架构的更多相关文章

  1. Mybatis架构学习

    Mybatis架构学习 MyBatis 是支持定制化 SQL.存储过程以及高级映射的持久层框架.MyBatis 封装了几乎所有的 JDBC 代码和手动设置参数以及获取结果集.可以对配置和原生Map使用 ...

  2. 《深入了解mybatis原则》 MyBatis架构设计和案例研究

    MyBatis这是现在很流行ORM框架,这是非常强大.事实上现却比較简单.优雅. 本文主要讲述MyBatis的架构设计思路,而且讨论MyBatis的几个核心部件.然后结合一个select查询实例.深入 ...

  3. SpringMVC,Spring,Hibernate,Mybatis架构开发搭建之SpringMVC部分

    SpringMVC,Spring,Hibernate,Mybatis架构开发搭建之SpringMVC部分 辞职待业青年就是有很多时间来写博客,以前在传统行业技术强度相对不大,不处理大数据,也不弄高并发 ...

  4. Mybatis架构简介

    一.Mybatis与ORM 对象关系映射(即Object Relational Mapping,简称ORM),主要用于关系型数据库和实体之间的映射,主要为了解决对象与关系数据库存在的互不匹配的现象,O ...

  5. (转)MyBatis框架的学习(二)——MyBatis架构与入门

    http://blog.csdn.net/yerenyuan_pku/article/details/71699515 MyBatis框架的架构 MyBatis框架的架构如下图: 下面作简要概述: S ...

  6. (五)myBatis架构以及SQlSessionFactory,SqlSession,通过代理执行crud源码分析---待更

    MyBatis架构 首先MyBatis大致上可以分为四层: 1.接口层:这个比较容易理解,就是指MyBatis暴露给我们的各种方法,配置,可以理解为你import进来的各种类.,告诉用户你可以干什么 ...

  7. 二 Mybatis架构&MybatisDao的两种开发方式(原始Dao,接口动态代理)

    MyBatis架构图 三个对象: SqlSessionFactoryBuilder.SqlSessionFactory.SqlSession SqlSessionFactoryBuilder:主要用来 ...

  8. MyBatis(十一):MyBatis架构流程浅析

    架构分层 我们将MyBatis架构分为三层,分别为接口层.数据处理层和框架支撑层 接口层:提供外部接口调用的API,使用端通过这些API来操作数据库,接口层收到请求后会调用数据处理层完成具体的数据处理 ...

  9. Mybatis架构原理(二)-二级缓存源码剖析

    Mybatis架构原理(二)-二级缓存源码剖析 二级缓存构建在一级缓存之上,在收到查询请求时,Mybatis首先会查询二级缓存,若二级缓存没有命中,再去查询一级缓存,一级缓存没有,在查询数据库; 二级 ...

  10. MyBatis架构(转)

    本文来自http://www.bubuko.com/infodetail-549184.html 如果不太熟悉MyBatis使用的请先参见MyBatis官方文档,这对理解其架构设计和源码分析有很大好处 ...

随机推荐

  1. Django 后台支持中文方法

    今天遇到的一个问题,mark一下: django后台可以支持中文界面,一开始一直纠结于settings.py 中 LANGUAGE_CODE = 'en-us'中的'en-us'该更改成什么.zh-c ...

  2. jdbc hibernate myBatis比较

    jdbc hibernate myBatis比较 jdbc 优点:性能高,易掌握 缺点:代码繁琐 hibernate 优点:不用写sql,代码简洁 缺点:性能不好 自动生成的sql效率低下(复杂业务) ...

  3. 几个常用EL表达式的用法

    转载至  http://yqsshr.blog.51cto.com/469059/131824 1,用来获取表单数据  param 和 paramValues 1.jsp 的有如下表单 <for ...

  4. vue中数据双向绑定的实现原理

    vue中最常见的属v-model这个数据双向绑定了,很好奇它是如何实现的呢?尝试着用原生的JS去实现一下. 首先大致学习了解下Object.defineProperty()这个东东吧! * Objec ...

  5. 入门-什么是webshell?

    webshell是什么? 顾名思义,"web" - 显然需要服务器开放web服务,"shell" - 取得对服务器某种程度上操作权限. webshell常常被称 ...

  6. 201521123001《Java程序设计》第5周学习总结

    1. 本周学习总结 1.1 尝试使用思维导图总结有关多态与接口的知识点. 1.2 可选:使用常规方法总结其他上课内容. 答:关于接口: 1.接口是一种抽象,抽取出了共同行为: 2.能够更加清晰地把系统 ...

  7. 201521123085 《Java程序设计》第5周学习总结

    1. 本周学习总结 1.1 尝试使用思维导图总结有关多态与接口的知识点. 2. 书面作业 1. 代码阅读:Child压缩包内源代码 1.1 com.parent包中Child.java文件能否编译通过 ...

  8. 201521123109《java程序设计》第二周学习总结

    1. 本周学习总结 (1)学习了字符串String的类型,使用Arrays对数组的处理及其相关的应用 (2)学会使用码云 (3)了解了对象与封装 (4)学会查询Java API文件 2. 书面作业 ( ...

  9. 201521123011《Java程序设计》第10周学习总结

    1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结异常与多线程相关内容. 2. 书面作业 本次PTA作业题集异常.多线程 1.finally 题目4-2 1.1 截图你的提交结果(出 ...

  10. Java课程设计-计算器 郑子杰(201521123021)

    1.团队课程设计博客链接 http://www.cnblogs.com/I-love-java/p/7058752.html 2.个人负责模块或任务说明 ①图形界面的初始化 ②图形界面的排版设计 ③主 ...