官网地址: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. Nginx学习之HTTP/2.0配置

    哎呀,一不小心自己的博客也是HTTP/2.0了,前段时间对网站进行了https迁移并上了CDN,最终的结果是这酱紫的(重点小绿锁,安全标示以及HTTP/2.0请求). 科普 随着互联网的快速发展,HT ...

  2. Mvc分页组件MvcSimplePager代码重构及使用

    1 Mvc分页组件MvcSimplePager代码重构 1.1 Intro 1.2 MvcSimplePager 代码优化 1.3 MvcSimplePager 使用 1.4 End Mvc分页组件M ...

  3. Docker 集群环境实现方式

    Docker 集群环境实现的新方式 近几年来,Docker 作为一个开源的应用容器引擎,深受广大开发者的欢迎.随着 Docker 生态圈的不断建设,应用领域越来越广.云计算,大数据,移动技术的快速发展 ...

  4. chrome开发工具指南(七)

    检查动画 使用 Chrome DevTools 动画检查器检查和修改动画. 通过打开动画检查器捕捉动画.检查器会自动检测动画并将它们分类为多个组. 通过慢速播放.重播或查看动画源代码来检查动画. 通过 ...

  5. react 入门

    一:virtual DOM  虚拟DOM树 在React中,render执行的结果得到的并不是真正的DOM节点,结果仅仅是轻量级的JavaScript对象,我们称之为virtual DOM. 虚拟DO ...

  6. 为什么会需要消息队列(MQ)?

    为什么会需要消息队列(MQ)? #################################################################################### ...

  7. 必应app测试

    一.app评测 1.个人使用体验 第一次使用必应app看到是微软这么一个大公司做的英语词典,应该会很有名但是我居然没有听说过.当我打开这个软件使用的时候看到界面的视频感觉还不错.但是总感觉这样的app ...

  8. 【Alpha】第一次Daily Scrum Meeting

    一.今日站立式会议照片 二.会议内容 1.调研市场现有礼物挑选软件,分析优势,亮点,劣势 2.确立开发环境和安装调试 三.燃尽图 四.遇到的困难 在准备开发环境和安装调试时遇到系统和开发环境不要兼容, ...

  9. 201521123069 《Java程序设计》 第13周学习总结

    1. 本周学习总结 以你喜欢的方式(思维导图.OneNote或其他)归纳总结多网络相关内容. 2. 书面作业 Q1. 网络基础 1.1 比较ping www.baidu.com与ping cec.jm ...

  10. 201521123009 《Java程序设计》第11周学习总结

    1. 本周学习总结 2. 书面作业 本次PTA作业题集多线程 Q1:互斥访问与同步访问 完成题集4-4(互斥访问)与4-5(同步访问) 1.1 除了使用synchronized修饰方法实现互斥同步访问 ...