java_model_dao_自动生成_generator-mybatis-ge

系统 2182 0

用mybatis原因很简单,易用,性能。是介于jdbc和hibernate之间的一个完美方案。

很简单:

1:配置pom 

      
        <
      
      
        project 
      
      
        xmlns
      
      
        ="http://maven.apache.org/POM/4.0.0"
      
      
         xmlns:xsi
      
      
        ="http://www.w3.org/2001/XMLSchema-instance"
      
      
        

    xsi:schemaLocation
      
      
        ="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
      
      
        >
      
      
        <
      
      
        modelVersion
      
      
        >
      
      4.0.0
      
        </
      
      
        modelVersion
      
      
        >
      
      
        <
      
      
        groupId
      
      
        >
      
      com.test.database
      
        </
      
      
        groupId
      
      
        >
      
      
        <
      
      
        artifactId
      
      
        >
      
      dao-core
      
        </
      
      
        artifactId
      
      
        >
      
      
        <
      
      
        version
      
      
        >
      
      0.0.1-SNAPSHOT
      
        </
      
      
        version
      
      
        >
      
      
        <
      
      
        dependencies
      
      
        >
      
      
        <
      
      
        dependency
      
      
        >
      
      
        <
      
      
        groupId
      
      
        >
      
      org.mybatis
      
        </
      
      
        groupId
      
      
        >
      
      
        <
      
      
        artifactId
      
      
        >
      
      mybatis
      
        </
      
      
        artifactId
      
      
        >
      
      
        <
      
      
        version
      
      
        >
      
      3.1.1
      
        </
      
      
        version
      
      
        >
      
      
        </
      
      
        dependency
      
      
        >
      
      
        <
      
      
        dependency
      
      
        >
      
      
        <
      
      
        groupId
      
      
        >
      
      mysql
      
        </
      
      
        groupId
      
      
        >
      
      
        <
      
      
        artifactId
      
      
        >
      
      mysql-connector-java
      
        </
      
      
        artifactId
      
      
        >
      
      
        <
      
      
        version
      
      
        >
      
      5.1.30
      
        </
      
      
        version
      
      
        >
      
      
        </
      
      
        dependency
      
      
        >
      
      
        <
      
      
        dependency
      
      
        >
      
      
        <
      
      
        groupId
      
      
        >
      
      junit
      
        </
      
      
        groupId
      
      
        >
      
      
        <
      
      
        artifactId
      
      
        >
      
      junit
      
        </
      
      
        artifactId
      
      
        >
      
      
        <
      
      
        version
      
      
        >
      
      4.7
      
        </
      
      
        version
      
      
        >
      
      
        <
      
      
        type
      
      
        >
      
      jar
      
        </
      
      
        type
      
      
        >
      
      
        <
      
      
        scope
      
      
        >
      
      test
      
        </
      
      
        scope
      
      
        >
      
      
        </
      
      
        dependency
      
      
        >
      
      
        </
      
      
        dependencies
      
      
        >
      
      
        <
      
      
        build
      
      
        >
      
      
        <
      
      
        plugins
      
      
        >
      
      
        <!--
      
      
         mybits dao层 自动生成代码 插件 
      
      
        -->
      
      
        <
      
      
        plugin
      
      
        >
      
      
        <
      
      
        groupId
      
      
        >
      
      org.mybatis.generator
      
        </
      
      
        groupId
      
      
        >
      
      
        <
      
      
        artifactId
      
      
        >
      
      mybatis-generator-maven-plugin
      
        </
      
      
        artifactId
      
      
        >
      
      
        <
      
      
        version
      
      
        >
      
      1.3.2
      
        </
      
      
        version
      
      
        >
      
      
        <
      
      
        configuration
      
      
        >
      
      
        <
      
      
        verbose
      
      
        >
      
      true
      
        </
      
      
        verbose
      
      
        >
      
      
        <
      
      
        overwrite
      
      
        >
      
      true
      
        </
      
      
        overwrite
      
      
        >
      
      
        </
      
      
        configuration
      
      
        >
      
      
        </
      
      
        plugin
      
      
        >
      
      
        </
      
      
        plugins
      
      
        >
      
      
        </
      
      
        build
      
      
        >
      
      
        </
      
      
        project
      
      
        >
      
    

2: src/main/resources 下新建 generatorConfig.xml

      
        <?
      
      
        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:数据库的JDBC驱动 
      
      
        -->
      
      
        <
      
      
        classPathEntry

        
      
      
        location
      
      
        ="D:\soft_源程序\DB\mysql\mysql-connector-java-5.1.19-bin.jar"
      
      
        />
      
      
        <
      
      
        context 
      
      
        id
      
      
        ="MysqlTables"
      
      
         targetRuntime
      
      
        ="MyBatis3"
      
      
        >
      
      
        <!--
      
      
         注意这里面的顺序确定的,不能随变更改 
      
      
        -->
      
      
        <!--
      
      
         自定义的分页插件 <plugin type="com.deppon.foss.module.helloworld.shared.PaginationPlugin"/> 
      
      
        -->
      
      
        <!--
      
      
         可选的(0 or 1) 
      
      
        -->
      
      
        <!--
      
      
         注释生成器 
      
      
        -->
      
      
        <
      
      
        commentGenerator
      
      
        >
      
      
        <!--
      
      
         是否去除自动生成的注释 true:是 : false:否 
      
      
        -->
      
      
        <
      
      
        property 
      
      
        name
      
      
        ="suppressAllComments"
      
      
         value
      
      
        ="true"
      
      
        />
      
      
        </
      
      
        commentGenerator
      
      
        >
      
      
        <!--
      
      
         必须的(1 required) 
      
      
        -->
      
      
        <!--
      
      
        数据库连接的信息:驱动类、连接地址、用户名、密码 
      
      
        -->
      
      
        <
      
      
        jdbcConnection 
      
      
        driverClass
      
      
        ="com.mysql.jdbc.Driver"
      
      
        

            connectionURL
      
      
        ="jdbc:mysql://localhost:3306/data?useUnicode=true&amp;characterEncoding=UTF-8"
      
      
        

            userId
      
      
        ="root"
      
      
         password
      
      
        ="123654"
      
      
        >
      
      
        </
      
      
        jdbcConnection
      
      
        >
      
      
        <!--
      
      
         可选的(0 or 1) 
      
      
        -->
      
      
        <!--
      
      
         类型转换器或者加类型解析器 
      
      
        -->
      
      
        <!--
      
      
         默认false,把JDBC DECIMAL 和 NUMERIC 类型解析为 Integer true,把JDBC DECIMAL 和 

            NUMERIC 类型解析为java.math.BigDecimal 
      
      
        -->
      
      
        <
      
      
        javaTypeResolver
      
      
        >
      
      
        <
      
      
        property 
      
      
        name
      
      
        ="forceBigDecimals"
      
      
         value
      
      
        ="false"
      
      
        />
      
      
        </
      
      
        javaTypeResolver
      
      
        >
      
      
        <!--
      
      
         必须的(1 required) 
      
      
        -->
      
      
        <!--
      
      
         java模型生成器 
      
      
        -->
      
      
        <!--
      
      
         targetProject:自动生成代码的位置 
      
      
        -->
      
      
        <
      
      
        javaModelGenerator 
      
      
        targetPackage
      
      
        ="com.test.model"
      
      
        

            targetProject
      
      
        ="F:\Workspaces\workspace_eclipse\dao-core\src\main\java"
      
      
        >
      
      
        <!--
      
      
         TODO enableSubPackages:是否让schema作为包的后缀 
      
      
        -->
      
      
        <
      
      
        property 
      
      
        name
      
      
        ="enableSubPackages"
      
      
         value
      
      
        ="true"
      
      
        />
      
      
        <!--
      
      
         从数据库返回的值被清理前后的空格 
      
      
        -->
      
      
        <
      
      
        property 
      
      
        name
      
      
        ="trimStrings"
      
      
         value
      
      
        ="true"
      
      
        />
      
      
        </
      
      
        javaModelGenerator
      
      
        >
      
      
        <!--
      
      
         必须的(1 required) 
      
      
        -->
      
      
        <!--
      
      
         map xml 生成器 
      
      
        -->
      
      
        <
      
      
        sqlMapGenerator 
      
      
        targetPackage
      
      
        ="com.test.persistence"
      
      
        

            targetProject
      
      
        ="F:\Workspaces\workspace_eclipse\dao-core\src\main\resources"
      
      
        >
      
      
        <
      
      
        property 
      
      
        name
      
      
        ="enableSubPackages"
      
      
         value
      
      
        ="true"
      
      
        />
      
      
        </
      
      
        sqlMapGenerator
      
      
        >
      
      
        <!--
      
      
         可选的(0 or 1) 
      
      
        -->
      
      
        <!--
      
      
         mapper 或者就是dao接口生成器 
      
      
        -->
      
      
        <
      
      
        javaClientGenerator 
      
      
        targetPackage
      
      
        ="com.test.dao"
      
      
        

            targetProject
      
      
        ="F:\Workspaces\workspace_eclipse\dao-core\src\main\java"
      
      
        

            type
      
      
        ="XMLMAPPER"
      
      
        >
      
      
        <
      
      
        property 
      
      
        name
      
      
        ="enableSubPackages"
      
      
         value
      
      
        ="true"
      
      
        />
      
      
        </
      
      
        javaClientGenerator
      
      
        >
      
      
        <!--
      
      
         必须的(1...N) 
      
      
        -->
      
      
        <!--
      
      
         pojo 实体生成器 
      
      
        -->
      
      
        <!--
      
      
         tableName:用于自动生成代码的数据库表;domainObjectName:对应于数据库表的javaBean类名 
      
      
        -->
      
      
        <!--
      
      
         schema即为数据库名 可不写 
      
      
        -->
      
      
        <
      
      
        table 
      
      
        schema
      
      
        ="data"
      
      
         tableName
      
      
        ="tab_city"
      
      
         domainObjectName
      
      
        ="CityModel"
      
      
        

            enableInsert
      
      
        ="true"
      
      
        >
      
      
        <!--
      
      
         忽略字段 可选的(0 or 1) 
      
      
        -->
      
      
        <!--
      
      
         <ignoreColumn column="is_use" /> 
      
      
        -->
      
      
        <!--
      
      
        //无论字段是什么类型,生成的类属性都是varchar。 可选的(0 or 1) 测试无效 
      
      
        -->
      
      
        <!--
      
      
         <columnOverride column="city_code" jdbcType="VARCHAR" /> 
      
      
        -->
      
      
        </
      
      
        table
      
      
        >
      
      
        </
      
      
        context
      
      
        >
      
      
        </
      
      
        generatorConfiguration
      
      
        >
      
    

 

      
         
      
    

3: 点击pom,run as maven bulid  :   mybatis-generator:generate     红色字最好自己手敲或者copy. 

构建完后:

java_model_dao_自动生成_generator-mybatis-generator-1.3.2 基于maven插件

4:项目中使用的话,需要建立 mybatis-config.xml 在 src/main/resources 下

      
        <?
      
      
        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://localhost:3306/data"
      
      
        />
      
      
        <
      
      
        property 
      
      
        name
      
      
        ="username"
      
      
         value
      
      
        ="root"
      
      
        />
      
      
        <
      
      
        property 
      
      
        name
      
      
        ="password"
      
      
         value
      
      
        ="123654"
      
      
        />
      
      
        </
      
      
        dataSource
      
      
        >
      
      
        </
      
      
        environment
      
      
        >
      
      
        </
      
      
        environments
      
      
        >
      
      
        <
      
      
        mappers
      
      
        >
      
      
        <
      
      
        mapper 
      
      
        resource
      
      
        ="com/test/persistence/CityModelMapper.xml"
      
      
        />
      
      
        </
      
      
        mappers
      
      
        >
      
      
        <!--
      
      
         <typeAliases> <typeAlias type="com.hoo.entity.Account" alias="account"/> 

        </typeAliases> 
      
      
        -->
      
      
        </
      
      
        configuration
      
      
        >
      
    

5: 建立测试

5.1 java传统测试

TestDao.java

      
        package
      
      
         com.test.dao;




      
      
        import
      
      
         java.io.IOException;


      
      
        import
      
      
         java.io.Reader;




      
      
        import
      
      
         org.apache.ibatis.io.Resources;


      
      
        import
      
      
         org.apache.ibatis.session.SqlSession;


      
      
        import
      
      
         org.apache.ibatis.session.SqlSessionFactory;


      
      
        import
      
      
         org.apache.ibatis.session.SqlSessionFactoryBuilder;




      
      
        import
      
      
         com.test.model.CityModel;




      
      
        public
      
      
        class
      
      
         TestDao {

    
      
      
        public
      
      
        static
      
      
        void
      
      
         main(String[] args) {

        SqlSession session 
      
      = 
      
        null
      
      
        ;

        String resource 
      
      = "mybatis-config.xml"
      
        ;

        Reader reader 
      
      = 
      
        null
      
      
        ;

        
      
      
        try
      
      
         {

            reader 
      
      =
      
         Resources.getResourceAsReader(resource);

            SqlSessionFactory sessionFactory 
      
      = 
      
        new
      
      
         SqlSessionFactoryBuilder()

                    .build(reader);

            session 
      
      =
      
         sessionFactory.openSession();



            CityModelMapper cityModelMapper 
      
      =
      
         session

                    .getMapper(CityModelMapper.
      
      
        class
      
      
        );



            
      
      
        //
      
      
         CityModel cityModel = new CityModel();

            
      
      
        //
      
      
         cityModel.setId(7);

            
      
      
        //
      
      
         cityModel.setCityName("test7");

            
      
      
        //
      
      
         cityModel.setCityCode(2);

            
      
      
        //
      
      
         cityModelMapper.insert(cityModel);

            
      
      
        //
      
      
         session.commit();

            
      
      
        //
      
      
         System.out.println("插入一个city name" + cityModel.getCityName());
      
      

            CityModel cityModel = cityModelMapper.selectByPrimaryKey(4
      
        );

            session.commit();

            System.out.println(cityModel.getCityName());

            cityModel.setCityName(
      
      "testchange"
      
        );

            ;

            cityModelMapper.updateByPrimaryKey(cityModel);

            session.commit();

            System.out.println(
      
      "update"
      
        );



        } 
      
      
        catch
      
      
         (IOException e) {

            e.printStackTrace();

        } 
      
      
        finally
      
      
         {

            
      
      
        if
      
       (
      
        null
      
       !=
      
         session)

                session.close();

        }

    }

}
      
    

5.2 单元测试:

CityModelMapperTest.java

      
        package
      
      
         com.test.dao;




      
      
        import
      
      
        static
      
      
         org.junit.Assert.fail;




      
      
        import
      
      
         java.io.Reader;


      
      
        import
      
      
         java.util.List;




      
      
        import
      
      
         junit.framework.Assert;




      
      
        import
      
      
         org.apache.ibatis.io.Resources;


      
      
        import
      
      
         org.apache.ibatis.session.SqlSession;


      
      
        import
      
      
         org.apache.ibatis.session.SqlSessionFactory;


      
      
        import
      
      
         org.apache.ibatis.session.SqlSessionFactoryBuilder;


      
      
        import
      
      
         org.junit.After;


      
      
        import
      
      
         org.junit.Before;


      
      
        import
      
      
         org.junit.Test;




      
      
        import
      
      
         com.test.model.CityModel;


      
      
        import
      
      
         com.test.model.CityModelExample;




      
      
        public
      
      
        class
      
      
         CityModelMapperTest {

    SqlSession session 
      
      = 
      
        null
      
      
        ;

    CityModelMapper cityModelMapper 
      
      = 
      
        null
      
      
        ;



    @Before

    
      
      
        public
      
      
        void
      
       setUp() 
      
        throws
      
      
         Exception {

        String resource 
      
      = "mybatis-config.xml"
      
        ;

        Reader reader 
      
      = 
      
        null
      
      
        ;

        reader 
      
      =
      
         Resources.getResourceAsReader(resource);

        SqlSessionFactory sessionFactory 
      
      = 
      
        new
      
      
         SqlSessionFactoryBuilder()

                .build(reader);

        session 
      
      =
      
         sessionFactory.openSession();

        cityModelMapper 
      
      = session.getMapper(CityModelMapper.
      
        class
      
      
        );

    }



    @Test

    
      
      
        public
      
      
        void
      
      
         testCountByExample() {

        fail(
      
      "Not yet implemented"
      
        );

    }



    @Test

    
      
      
        public
      
      
        void
      
      
         testDeleteByExample() {

        fail(
      
      "Not yet implemented"
      
        );

    }



    @Test

    
      
      
        public
      
      
        void
      
      
         testDeleteByPrimaryKey() {



        
      
      
        int
      
       flag = cityModelMapper.deleteByPrimaryKey(10
      
        );

        session.commit();

        System.out.println(
      
      "返回值:" +
      
         flag);

        System.out.println(
      
      "删除一个city id " + 10
      
        );

        Assert.assertTrue(flag 
      
      > 0
      
        );

    }



    @Test

    
      
      
        public
      
      
        void
      
      
         testInsert() {

        CityModel cityModel 
      
      = 
      
        new
      
      
         CityModel();

        
      
      
        int
      
       i = 10
      
        ;

        cityModel.setId(i);

        cityModel.setCityName(
      
      "test" +
      
         i);

        cityModel.setCityCode(i);

        cityModelMapper.insert(cityModel);

        session.commit();

        System.out.println(
      
      "插入一个city name" +
      
         cityModel.getCityName());

    }



    @Test

    
      
      
        public
      
      
        void
      
      
         testInsertSelective() {

        fail(
      
      "Not yet implemented"
      
        );

    }



    @Test

    
      
      
        public
      
      
        void
      
      
         testSelectByExample() {

        CityModelExample example 
      
      = 
      
        new
      
      
         CityModelExample();

        example.setDistinct(
      
      
        false
      
      
        );

        example.setOrderByClause(
      
      "id"
      
        );

        example.createCriteria().andIdBetween(
      
      1, 3
      
        );

        List
      
      <CityModel> cityList =
      
         cityModelMapper.selectByExample(example);

        
      
      
        for
      
      
         (CityModel cityModel : cityList) {

            System.out.println(
      
      "id:" + cityModel.getId() + "\n" + "name:"

                    + cityModel.getCityName() + "\n"
      
        );

        }

        fail(
      
      "Not yet implemented"
      
        );

    }



    @Test

    
      
      
        public
      
      
        void
      
      
         testSelectByPrimaryKey() {

        CityModel cityModel 
      
      = cityModelMapper.selectByPrimaryKey(8
      
        );

        System.out.println(
      
      "查询到一个city" +
      
         cityModel.getCityName());

        Assert.assertTrue(
      
      
        null
      
       !=
      
         cityModel);

    }



    @Test

    
      
      
        public
      
      
        void
      
      
         testUpdateByExampleSelective() {

        fail(
      
      "Not yet implemented"
      
        );

    }



    @Test

    
      
      
        public
      
      
        void
      
      
         testUpdateByExample() {

        fail(
      
      "Not yet implemented"
      
        );

    }



    @Test

    
      
      
        public
      
      
        void
      
      
         testUpdateByPrimaryKeySelective() {

        fail(
      
      "Not yet implemented"
      
        );

    }



    @Test

    
      
      
        public
      
      
        void
      
      
         testUpdateByPrimaryKey() {

        CityModel cityModel 
      
      = 
      
        new
      
      
         CityModel();

        
      
      
        int
      
       i = 8
      
        ;

        cityModel.setId(i);

        cityModel.setCityName(
      
      "updaet" +
      
         i);

        cityModel.setCityCode(i);

        
      
      
        int
      
       flag =
      
         cityModelMapper.updateByPrimaryKey(cityModel);

        session.commit();

        System.out.println(
      
      "返回值:" +
      
         flag);

        System.out.println(
      
      "update一个city id " +
      
         i);

        Assert.assertTrue(flag 
      
      > 0
      
        );

    }



    @After

    
      
      
        public
      
      
        void
      
       tearDown() 
      
        throws
      
      
         Exception {

    }



}
      
    

6: 用到的sql

      DROP TABLE IF EXISTS `tab_city`;

CREATE TABLE `tab_city` (

  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'ID',

  `city_name` varchar(255) DEFAULT NULL COMMENT '城市名称',

  `city_code` int(11) NOT NULL COMMENT '用三位数字表示 例如 001 代表朝阳',

  `is_use` int(11) DEFAULT NULL COMMENT '是否有效',

  PRIMARY KEY (`id`)

) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8 COMMENT='城市代码表';


    

完。

 

java_model_dao_自动生成_generator-mybatis-generator-1.3.2 基于maven插件


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论