官网地址: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

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

如下:

  1. 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生成

  1. List<String> warnings = new ArrayList<String>();
  2. boolean overwrite = true;//是否覆盖原来的文件
  3. File configFile = new File("generatorConfig.xml");
  4. ConfigurationParser cp = new ConfigurationParser(warnings);
  5. Configuration config = cp.parseConfiguration(configFile);
  6. DefaultShellCallback callback = new DefaultShellCallback(overwrite);
  7. MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config, callback, warnings);
  8. myBatisGenerator.generate(null);

3、ant

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

    applicationContext.xml <?xml version="1.0" encoding="UTF-8"?> <beans xm ...

  2. 排序算法——选择排序(js语言实现)

    选择排序:顾名思义选择,选择排序属于O(N^2)的排序算法,意思就是选择数组中的最小的拿出来放在第一位,然后再剩下的数里面,选择最小的,排在第二位,以此类推. 例如:8  3  4  5  6  2  ...

  3. Linux Command Line learning

    https://www.codecademy.com/en/courses/learn-the-command-line Background The command line is a text i ...

  4. jenkins 配置qq邮箱

  5. caffe cifar10试跑问题总结

    p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px "Helvetica Neue"; color: #454545 } p. ...

  6. 初学者入门web前端 C#基础知识:数组与集合

    对于初学者,想要入门web前端,要有足够的信念和坚持,不然只会越走越远,我现在就深深的体会到. 我本是一个很拒绝代码的人,以前想过UI设计,但是在这段学习时间里,发现其实只要认真,代码并不是很难 所以 ...

  7. 【转】Java虚拟机的JVM垃圾回收机制

    详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcytp43       1.JVM内存空间     JVM堆(Heap)= 新生代 ...

  8. web项目的发布

    1.我们将web项目布署到IIS上之前需要将我们的源码发布,然后再将发布后的代码布署到II上 2.首先在VS上打开我们的应用程序,在WEB层上右键->发布,会弹出一个"发布web&qu ...

  9. Mac系统实现git命令自动补全

    当我第一次使用mac电脑的时候,由于我是从事软件开发的程序员,所以必须经常要使用到git,然而发现在mac系统下,git不能实现命令的自动补全,然后网上查找资料,找到了解决办法,终于可以实现了git命 ...

  10. [转载]Python实现浏览器自动化操作

    原文地址:Python实现浏览器自动化操作作者:rayment   最近在研究网站自动登录的问题,涉及到需要实现浏览器自动化操作,网上有不少介绍,例如使用pamie,但是只是支持IE,而且项目也较久没 ...