zoukankan      html  css  js  c++  java
  • Mybatis上路_06-使用Java自动生成[转]

    Mybatis上路_06-使用Java自动生成

    11人收藏此文章, 我要收藏发表于1个月前(2013-04-24 23:05) , 已有151次阅读 ,共0个评论

    1.编写Generator执行配置文件:

                generatorConfigation.xml。注意配置数据库驱动包的绝对路径。

     

    01 <?xml version="1.0" encoding="UTF-8"?>
    02 <!DOCTYPE generatorConfiguration
    03   PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
    04   "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
    05  
    06 <generatorConfiguration>
    07     <!-- 数据库驱动包,使用绝对路径 -->
    08     <classPathEntry location="c:/mysql-connector-java-5.1.22-bin.jar" />
    09   
    10     <!-- 环境配置 **************************************************
    11         id="自定义的配置名称"
    12         targetRuntime="MyBatis版本" -->
    13     <context id="MySqlTables" targetRuntime="MyBatis3" >
    14     
    15         <!-- 数据库  ===============================================
    16             driverClass="驱动"
    17             connectionURL="数据库url"
    18             userId="用户"
    19             password="密码" -->
    20         <jdbcConnection
    21             driverClass="com.mysql.jdbc.Driver"
    22             connectionURL="jdbc:mysql://127.0.0.1:3306/db_mybatis" 
    23             userId="root"
    24             password="root">  
    25         </jdbcConnection>
    26  
    27         <!-- Java数据类型分离器,数据类型转换 =====================
    28             property 属性
    29                 name="强迫双精度"
    30                 value="不" -->
    31         <javaTypeResolver>
    32             <property name="forceBigDecimals" value="false" />
    33         </javaTypeResolver>
    34   
    35         <!-- Java模型生成器 =======================================
    36             targetPackage="生成文件的目标路径"
    37             targetProject="已存在的项目包"
    38                 enableSubPackages-可以省略对应约束名,true-是的,可以省略tb_generator
    39                 trimString-验证字符串,true-是的 -->
    40         <javaModelGenerator
    41                 targetPackage="cn.cvu.test.model"
    42                 targetProject="src">
    43             <property name="enableSubPackages" value="false" />
    44             <property name="trimStrings" value="true" />
    45         </javaModelGenerator>
    46   
    47         <!-- sql映射文件生成器 =======================================
    48             targetPackage="生成文件的目标路径"
    49             targetProject="已存在的项目包"
    50                 enableSubPackages-可以省略对应约束名,true-是的,可以省略tb_generator -->
    51         <sqlMapGenerator
    52                 targetPackage="cn.cvu.test.xml"
    53                 targetProject="src">
    54             <property name="enableSubPackages" value="false" />
    55         </sqlMapGenerator>
    56   
    57         <!-- java委托对象DAO生成器,接口 =============================
    58             type=""
    59             targetPackage="生成文件的目标路径"
    60             targetProject="已存在的项目包"
    61                 enableSubPackages-可以省略对应约束名,true-是的,可以省略tb_generator -->
    62         <javaClientGenerator
    63                 type="XMLMAPPER"
    64                 targetPackage="cn.cvu.test.dao"
    65                 targetProject="src">
    66             <property name="enableSubPackages" value="false" />
    67         </javaClientGenerator>
    68         
    69         <!-- 表单,已存在,根据此表生成其它文件 =======================
    70             tableName="已有的表单名称"
    71             domainObjetctName="对应生成的文件名前缀" -->
    72         <table tableName="tb_generator" domainObjectName="Eminem">
    73             <!-- useActualColumnNames-使用真实列名 ,
    74                  true-嗯。如果false,则由columnOverride节点控制  -->
    75             <property name="useActualColumnNames" value="true" />
    76             
    77             <!-- 标识列
    78                 column="列名" sqlStatement="某种数据库语言" identity="作为主键" -->
    79             <generatedKey column="id" sqlStatement="MySql" identity="true" />
    80             
    81             <!-- 覆盖项,当property name="useActualColumnNames" value="true"时。
    82                 column="被覆盖值的列名" property="用来覆盖的对应的java类的属性" -->
    83             <columnOverride column="name" property="generName" />
    84   
    85         </table>
    86         
    87     </context>
    88  
    89 </generatorConfiguration>

     

    2.在MyEclipse中建空web项目:

                将配置文件放到src里。加入generatorjar文件。

                

    3.编写并执行Java程序:

                

     

    01 package cn.cvu.test.build;
    02   
    03 import java.io.File;
    04 import java.util.ArrayList;
    05 import java.util.List;
    06 import org.junit.Test;
    07 import org.mybatis.generator.api.MyBatisGenerator;
    08 import org.mybatis.generator.config.Configuration;
    09 import org.mybatis.generator.config.xml.ConfigurationParser;
    10 import org.mybatis.generator.internal.DefaultShellCallback;
    11   
    12 public class TestGenerateWithJava {
    13   
    14     @Test
    15     public void testBuild() throws Exception {
    16                 // 信息缓存
    17                 List<String> warnings = new ArrayList<String>();
    18                 // 覆盖已有的重名文件
    19                 boolean overwrite = true;
    20                 // 准备 配置文件
    21                 File configFile = new File("F:/myeclipse_workspace/generator/src/generatorConfigation.xml");
    22                 // 1.创建 配置解析器
    23                 ConfigurationParser parser = new ConfigurationParser(warnings);
    24                 // 2.获取 配置信息
    25                 Configuration config = parser.parseConfiguration(configFile);
    26                 // 3.创建 默认命令解释调回器
    27                 DefaultShellCallback callback = new DefaultShellCallback(overwrite);
    28                 // 4.创建 mybatis的生成器
    29                 MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config, callback, warnings);
    30                 // 5.执行,关闭生成器
    31         myBatisGenerator.generate(null);
    32     }
    33 }

     

    4.查看并修改生成的文件:

                选中src,按F5刷新,可以看到新文件已经创建:

                

                修改报错的EmineMapper.java文件,去除注解:

                

     



    5.测试,使用生成的文件查询:

    1)导入MyBatisjar包:

                    mybatis-3.2.2.jar 
                    mybatis-generator-core-1.3.2.jar 
                    mysql-connector-java-5.1.22-bin.jar 

    2)创建MyBatisxml配置文件:

                    上面我们注释掉了自动生成的注解代码,在src新建一个xml配置文件,mybatisConfigation.xml

     

    01 <?xml version="1.0" encoding="UTF-8" ?>
    02 <!DOCTYPE configuration
    03    PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
    04     "http://mybatis.org/dtd/mybatis-3-config.dtd">
    05  
    06 <configuration>
    07     <environments default="development">
    08         <environment id="development">
    09             <transactionManager type="JDBC" />
    10             <dataSource type="POOLED">
    11                 <property name="driver" value="com.mysql.jdbc.Driver" />
    12                 <property name="url" value="jdbc:mysql://127.0.0.1:3306/db_mybatis" />
    13                 <property name="username" value="root" />
    14                 <property name="password" value="root" />
    15             </dataSource>
    16         </environment>
    17     </environments>
    18  
    19     <mappers>
    20         <!-- 引入MBG生成器创建的映射文件 -->
    21         <mapper resource="cn/cvu/test/xml/EminemMapper.xml" />
    22     </mappers>
    23 </configuration>

     

    3Java测试代码:

                    创建测试类cn.cvu.test.dotest.TestDoGeneratorWithJava 

                    

     

     

    01 package cn.cvu.test.dotest;
    02  
    03 import java.io.Reader;
    04 import java.util.List;
    05 import org.apache.ibatis.io.Resources;
    06 import org.apache.ibatis.session.SqlSession;
    07 import org.apache.ibatis.session.SqlSessionFactoryBuilder;
    08 import org.junit.Test;
    09 import cn.cvu.test.dao.EminemMapper;
    10 import cn.cvu.test.model.Eminem;
    11 import cn.cvu.test.model.EminemExample;
    12 import cn.cvu.test.model.EminemExample.Criteria;
    13  
    14 public class TestDoGeneratorWithJava {
    15  
    16     @Test
    17     public void testQuery() throws Exception {
    18  
    19         // 创建SQL会话:
    20         Reader reader = Resources.getResourceAsReader("mybatisConfigation.xml");
    21         SqlSession session = new SqlSessionFactoryBuilder().build(reader).openSession();
    22  
    23         // 创建查询实例:
    24         EminemExample eminemExample = new EminemExample();
    25  
    26         // 获取映射实体:
    27         EminemMapper mapper = session.getMapper(EminemMapper.class);
    28  
    29         // 利用实体通过实例查询全部条目
    30         List<Eminem> eminems = mapper.selectByExample(eminemExample);
    31         System.out.println("ID name notes ");
    32         for (Eminem eminem : eminems) {
    33                 System.out.println(eminem.getId()+
    34                                 " "+eminem.getGenerName()+
    35                                 " "+eminem.getNotes());
    36         }
    37         session.close();
    38     }
    39 }
     

    - end 
  • 相关阅读:
    JavaScript 闭包究竟是什么
    Javascript闭包简单理解
    使用border做三角形
    负边距在布局中的使用
    direction和unicode
    CSS 实现打字效果
    你可能没注意的CSS单位
    前端模块化
    JavaScript面向对象
    阿里前端两年随想
  • 原文地址:https://www.cnblogs.com/fx2008/p/3139810.html
Copyright © 2011-2022 走看看