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

1.編寫Generator執行配置文件:

            generatorConfigation.xml。注意配置數據庫驅動包的絕對路徑。 java

<?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>
    <!-- 數據庫驅動包,使用絕對路徑 -->
    <classPathEntry location="c:/mysql-connector-java-5.1.22-bin.jar" />
 
    <!-- 環境配置 **************************************************
        id="自定義的配置名稱"
        targetRuntime="MyBatis版本" -->
    <context id="MySqlTables" targetRuntime="MyBatis3" >
   
        <!-- 數據庫  ===============================================
            driverClass="驅動"
            connectionURL="數據庫url"
            userId="用戶"
            password="密碼" -->
        <jdbcConnection
            driverClass="com.mysql.jdbc.Driver"
            connectionURL="jdbc:mysql://127.0.0.1:3306/db_mybatis"  
            userId="root"
            password="root">   
        </jdbcConnection>

        <!-- Java數據類型分離器,數據類型轉換 =====================
            property 屬性
                name="強迫雙精度"
                value="不" -->
        <javaTypeResolver>
            <property name="forceBigDecimals" value="false" />
        </javaTypeResolver>
 
        <!-- Java模型生成器 =======================================
            targetPackage="生成文件的目標路徑"
            targetProject="已存在的項目包"
                enableSubPackages-能夠省略對應約束名,true-是的,能夠省略tb_generator
                trimString-驗證字符串,true-是的 -->
        <javaModelGenerator
                targetPackage="cn.cvu.test.model"
                targetProject="src">
            <property name="enableSubPackages" value="false" />
            <property name="trimStrings" value="true" />
        </javaModelGenerator>
 
        <!-- sql映射文件生成器 =======================================
            targetPackage="生成文件的目標路徑"
            targetProject="已存在的項目包"
                enableSubPackages-能夠省略對應約束名,true-是的,能夠省略tb_generator -->
        <sqlMapGenerator
                targetPackage="cn.cvu.test.xml"
                targetProject="src">
            <property name="enableSubPackages" value="false" />
        </sqlMapGenerator>
 
        <!-- java委託對象DAO生成器,接口 =============================
            type=""
            targetPackage="生成文件的目標路徑"
            targetProject="已存在的項目包"
                enableSubPackages-能夠省略對應約束名,true-是的,能夠省略tb_generator -->
        <javaClientGenerator
                type="XMLMAPPER"
                targetPackage="cn.cvu.test.dao"
                targetProject="src">
            <property name="enableSubPackages" value="false" />
        </javaClientGenerator>
       
        <!-- 表單,已存在,根據此表生成其它文件 =======================
            tableName="已有的表單名稱"
            domainObjetctName="對應生成的文件名前綴" -->
        <table tableName="tb_generator" domainObjectName="Eminem">
            <!-- useActualColumnNames-使用真實列名 ,
                 true-嗯。若是false,則由columnOverride節點控制  -->
            <property name="useActualColumnNames" value="true" />
           
            <!-- 標識列
                column="列名" sqlStatement="某種數據庫語言" identity="做爲主鍵" -->
            <generatedKey column="id" sqlStatement="MySql" identity="true" />
           
            <!-- 覆蓋項,當property name="useActualColumnNames" value="true"時。 
                column="被覆蓋值的列名" property="用來覆蓋的對應的java類的屬性" -->
            <columnOverride column="name" property="generName" />
 
        </table>
       
    </context>

</generatorConfiguration>

2.在MyEclipse中建空web項目:

            將配置文件放到src裏。加入generatorjar文件。 mysql

            

3.編寫並執行Java程序:

            

package cn.cvu.test.build;
 
import java.io.File;
import java.util.ArrayList;
import java.util.List;
import org.junit.Test;
import org.mybatis.generator.api.MyBatisGenerator;
import org.mybatis.generator.config.Configuration;
import org.mybatis.generator.config.xml.ConfigurationParser;
import org.mybatis.generator.internal.DefaultShellCallback;
 
public class TestGenerateWithJava {
 
    @Test
    public void testBuild() throws Exception {
                // 信息緩存
                List<String> warnings = new ArrayList<String>();
                // 覆蓋已有的重名文件
                boolean overwrite = true;
                // 準備 配置文件
                File configFile = new File("F:/myeclipse_workspace/generator/src/generatorConfigation.xml");
                // 1.建立 配置解析器
                ConfigurationParser parser = new ConfigurationParser(warnings);
                // 2.獲取 配置信息
                Configuration config = parser.parseConfiguration(configFile);
                // 3.建立 默認命令解釋調回器
                DefaultShellCallback callback = new DefaultShellCallback(overwrite);
                // 4.建立 mybatis的生成器
                MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config, callback, warnings);
                // 5.執行,關閉生成器
        myBatisGenerator.generate(null);
    }
}

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

            選中src,按F5刷新,能夠看到新文件已經建立: web

            

            修改報錯的EmineMapper.java文件,去除註解: sql

            



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.xmlapache

<?xml version="1.0" encoding="UTF-8" ?> 
<!DOCTYPE configuration 
   PUBLIC "-//mybatis.org//DTD Config 3.0//EN" 
    "http://mybatis.org/dtd/mybatis-3-config.dtd">

<configuration>
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC" />
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver" />
                <property name="url" value="jdbc:mysql://127.0.0.1:3306/db_mybatis" />
                <property name="username" value="root" />
                <property name="password" value="root" />
            </dataSource>
        </environment>
    </environments>

    <mappers>
        <!-- 引入MBG生成器建立的映射文件 -->
        <mapper resource="cn/cvu/test/xml/EminemMapper.xml" />
    </mappers>
</configuration>

3Java測試代碼:

                建立測試類cn.cvu.test.dotest.TestDoGeneratorWithJava api

                

package cn.cvu.test.dotest;

import java.io.Reader;
import java.util.List;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Test;
import cn.cvu.test.dao.EminemMapper;
import cn.cvu.test.model.Eminem;
import cn.cvu.test.model.EminemExample;
import cn.cvu.test.model.EminemExample.Criteria;

public class TestDoGeneratorWithJava {

    @Test
    public void testQuery() throws Exception {

        // 建立SQL會話:
        Reader reader = Resources.getResourceAsReader("mybatisConfigation.xml");
        SqlSession session = new SqlSessionFactoryBuilder().build(reader).openSession();

        // 建立查詢實例:
        EminemExample eminemExample = new EminemExample();

        // 獲取映射實體:
        EminemMapper mapper = session.getMapper(EminemMapper.class);

        // 利用實體經過實例查詢所有條目
        List<Eminem> eminems = mapper.selectByExample(eminemExample);
        System.out.println("ID \t\t name \t\t notes \n");
        for (Eminem eminem : eminems) {
                System.out.println(eminem.getId()+
                                "\t\t"+eminem.getGenerName()+
                                "\t\t"+eminem.getNotes());
        }
        session.close();
    }
}
- end
相關文章
相關標籤/搜索