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

用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='城市代码表';

完。

 

你可能感兴趣的:(generator)