zoukankan      html  css  js  c++  java
  • maven插件mybatis-generator生成代码配置

    鸣谢:http://my.oschina.net/u/1763011/blog/324106?fromerr=nJakGh4P (也可参看此博客进行配置)

    http://www.cnblogs.com/zcy_soft/p/3358132.html(补充1)

    http://blog.csdn.net/sunny243788557/article/details/45166397 (补充2)

    http://www.cnblogs.com/yjmyzz/p/4210554.html (补充3)

    http://www.myexception.cn/software-architecture-design/621662.html (补充4)

    http://mbg.cndocs.tk (MyBatis Generator介绍)

    http://blog.csdn.net/isea533/article/details/42102297 (MyBatis Generator详解)

    http://www.cnblogs.com/daxin/p/3545040.html (Mybatis MapperScannerConfigurer 自动扫描 将Mapper接口生成代理注入到Spring

    ---------------------------------------------------------------------------------------------------------------------------

    测试项目:Test

    1.新建maven项目

    2.pom.xml文件中添加插件,如:

    <build>
            <finalName>org.zsl.hnust</finalName>
            <plugins>
              <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>

    3.在项目的/src/main/resources(默认目录)的文件目录下加入generateConfig.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
                location="D:
    epomysql-connector-java-5.1.26.jar" />
        <context id="context1" targetRuntime="MyBatis3">
            <commentGenerator> 
                <!-- 是否去除自动生成的注释 true:是 : false:否 --> 
                <property name="suppressAllComments" value="true" /> 
            </commentGenerator> 
            
            <jdbcConnection driverClass="com.mysql.jdbc.Driver"
                            connectionURL="jdbc:mysql://localhost:3306/test"
                            userId="root" password="" />
            <javaModelGenerator targetPackage="com.cn.hnust.pojo"
                                targetProject="D:Eclipse_WorkspaceHNUSTorg.zsl.hnust Maven Webappsrcmainjava" />
                                
            <sqlMapGenerator targetPackage="com.cn.hnust.mapping"
                             targetProject="D:Eclipse_WorkspaceHNUSTorg.zsl.hnust Maven Webappsrcmainjava" />
                             
            <javaClientGenerator type="XMLMAPPER" targetPackage="com.cn.hnust.dao"
                              targetProject="D:Eclipse_WorkspaceHNUSTorg.zsl.hnust Maven Webappsrcmainjava">
            </javaClientGenerator>
    
            <table tableName="t_student" domainObjectName="Address" 
                enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false"
                enableSelectByExample="false" selectByExampleQueryId="false" >
                <property name="useActualColumnNames" value="true"/>
            </table>
        </context>
    </generatorConfiguration>

    注:

    javaModelGenerator :指定生成pojo的包和此包在项目中的地址;

    sqlMapGenerator :指定生成pojo的映射xml文件的所在包和此包在项目中的地址;

    javaClientGenerator :指定生成访问映射xml文件的接口所在包和此包在项目中的地址;

    table属性: 
    enableCountByExample="false" 
    enableUpdateByExample="false" 
    enableDeleteByExample="false" 
    enableSelectByExample="false" 
    selectByExampleQueryId="false" 
    schema为数据库名, tableName为对应的数据库表, domainObjectName是要生成的实体类, 
    如果想要mapper配置文件加入sql的where条件查询, 可以将enableCountByExample等设为true, 
    这样就会生成一个对应domainObjectName的Example类, enableCountByExample等设为false时, 
    就不会生成对应的Example类了. 

    如果table里边不配置property,默认字段都生成为类属性。 
    <ignoreColumn column="FRED" />//忽略字段 
    <columnOverride column="LONG_VARCHAR_FIELD" jdbcType="VARCHAR" />//无论字段是什么类型,生成的类属性都是varchar。

    4.项目 右键--》run as --》 maven bulid --》弹出对话框 --》在goals中输入mybatis-generator:generate (或者 点击select --》选择你的mybatis插件 --》apply --》run)

    5:选择项目 按 F5 刷新项目 出现生成的代码。

    说明:上面示例的generateConfig.xml 可简化成以下写法:即把targetProject的决定路径改为项目中的相对路径。以后要用可直接复制下面的。

    <?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="D:
    epomysql-connector-java-5.1.26.jar" />
        <context id="context1" targetRuntime="MyBatis3">
            <commentGenerator> 
                <!-- 是否去除自动生成的注释 true:是 : false:否 --> 
                <property name="suppressAllComments" value="true" /> 
            </commentGenerator> 
            
            <jdbcConnection driverClass="com.mysql.jdbc.Driver"
                            connectionURL="jdbc:mysql://localhost:3306/test"
                            userId="root" password="" />
            <javaModelGenerator targetPackage="com.cn.hnust.pojo"
                                targetProject="src/main/java" />
                                
            <sqlMapGenerator targetPackage="sqlMap"
                             targetProject="src/main/resources" />
                             
            <javaClientGenerator type="XMLMAPPER" targetPackage="com.cn.hnust.dao" 
                              targetProject="src/main/java">
            </javaClientGenerator>
    
            <table tableName="t_student" domainObjectName="Student" 
                enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false"
                enableSelectByExample="false" selectByExampleQueryId="false" >
                <property name="useActualColumnNames" value="true"/>
            </table>
        </context>
    </generatorConfiguration>

    值得注意的是pojo映射文件的存放地址在项目中要记得配对哦,如:

    spring-mybatis.xml中下面的配置:这里sql映射文件存放在src/main/resources目录

    <!-- spring和MyBatis完美整合,不需要mybatis的配置映射文件 -->
        <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
            <property name="dataSource" ref="dataSource" />
            <!-- 自动扫描mapping.xml文件 原:value="classpath:com/cn/hnust/mapping/*.xml"-->
            <property name="mapperLocations" value="classpath:sqlMap/*.xml"/>
        </bean>

    sql映射文件存放地址:

    实践:

    1.建表 t_student

    2.项目 右键--》run as --》 maven bulid 生成代码(按上面简化的generateConfig.xml)

    3.查看生成的代码

    a.Student.java  略

    b.StudentMapper   注意:1.访问pojo的映射文件可直接通过此接口访问,不需要建立实现类。2.在spring-mybatis.xml中MapperScannerConfigurer会把sqlSessionFactory注入此类,所以也不需要注入sqlSessionFactory、SqlSessionTemplate 。具体参见:http://www.cnblogs.com/daxin/p/3545040.html

    package com.cn.hnust.dao;
    
    import com.cn.hnust.pojo.Student;
    
    public interface StudentMapper {
        int deleteByPrimaryKey(Integer sid);
    
        int insert(Student record);
    
        int insertSelective(Student record);
    
        Student selectByPrimaryKey(Integer sid);
    
        int updateByPrimaryKeySelective(Student record);
    
        int updateByPrimaryKey(Student record);
    }

    c.StudentMapper.xml

    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
    <mapper namespace="com.cn.hnust.dao.StudentMapper" >
      <resultMap id="BaseResultMap" type="com.cn.hnust.pojo.Student" >
        <id column="sid" property="sid" jdbcType="INTEGER" />
        <result column="sname" property="sname" jdbcType="VARCHAR" />
        <result column="sex" property="sex" jdbcType="CHAR" />
      </resultMap>
      <sql id="Base_Column_List" >
        sid, sname, sex
      </sql>
      <select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.Integer" >
        select 
        <include refid="Base_Column_List" />
        from t_student
        where sid = #{sid,jdbcType=INTEGER}
      </select>
      <delete id="deleteByPrimaryKey" parameterType="java.lang.Integer" >
        delete from t_student
        where sid = #{sid,jdbcType=INTEGER}
      </delete>
      <insert id="insert" parameterType="com.cn.hnust.pojo.Student" >
        insert into t_student (sid, sname, sex)
        values (#{sid,jdbcType=INTEGER}, #{sname,jdbcType=VARCHAR}, #{sex,jdbcType=CHAR})
      </insert>
      <insert id="insertSelective" parameterType="com.cn.hnust.pojo.Student" >
        insert into t_student
        <trim prefix="(" suffix=")" suffixOverrides="," >
          <if test="sid != null" >
            sid,
          </if>
          <if test="sname != null" >
            sname,
          </if>
          <if test="sex != null" >
            sex,
          </if>
        </trim>
        <trim prefix="values (" suffix=")" suffixOverrides="," >
          <if test="sid != null" >
            #{sid,jdbcType=INTEGER},
          </if>
          <if test="sname != null" >
            #{sname,jdbcType=VARCHAR},
          </if>
          <if test="sex != null" >
            #{sex,jdbcType=CHAR},
          </if>
        </trim>
      </insert>
      <update id="updateByPrimaryKeySelective" parameterType="com.cn.hnust.pojo.Student" >
        update t_student
        <set >
          <if test="sname != null" >
            sname = #{sname,jdbcType=VARCHAR},
          </if>
          <if test="sex != null" >
            sex = #{sex,jdbcType=CHAR},
          </if>
        </set>
        where sid = #{sid,jdbcType=INTEGER}
      </update>
      <update id="updateByPrimaryKey" parameterType="com.cn.hnust.pojo.Student" >
        update t_student
        set sname = #{sname,jdbcType=VARCHAR},
          sex = #{sex,jdbcType=CHAR}
        where sid = #{sid,jdbcType=INTEGER}
      </update>
    </mapper>

    4.测试

    package org.zsl.testmybatis;
    
    import javax.annotation.Resource;
    
    import org.junit.Test;
    import org.junit.runner.RunWith;
    import org.springframework.test.context.ContextConfiguration;
    import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
    
    import com.cn.hnust.dao.StudentMapper;
    import com.cn.hnust.pojo.Address;
    import com.cn.hnust.pojo.Student;
    
    @RunWith(SpringJUnit4ClassRunner.class)        //表示继承了SpringJUnit4ClassRunner类
    @ContextConfiguration(locations = {"classpath:spring-mybatis.xml"})
    public class StudentTest {
        @Resource
        private StudentMapper studentMapper;
        
        @Test
        public void insert(){
            Student s = new Student();
            s.setSex("女");
            s.setSname("李浩");
            studentMapper.insert(s);
        }
        
        @Test
        public void deleteByPrimaryKey(){
            studentMapper.deleteByPrimaryKey(1);
        }
        
        @Test
        public void insertSelective(){
            Student s = new Student();
            s.setSname("李浩");
            studentMapper.insertSelective(s);
        }
        
        @Test
        public void selectByPrimaryKey(){
            Student s = studentMapper.selectByPrimaryKey(2);
            System.out.println(s);
        }
        
        @Test
        public void updateByPrimaryKeySelective(){
            Student s = studentMapper.selectByPrimaryKey(2);
            s.setSname("张三");
            studentMapper.updateByPrimaryKeySelective(s);
        }
        
        @Test
        public void updateByPrimaryKey(){
            Student s = studentMapper.selectByPrimaryKey(2);
            s.setSname("王五");
            s.setSex("男");
            studentMapper.updateByPrimaryKeySelective(s);
        }
    
    }

    附:

    spring-mybatis.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
        xmlns:context="http://www.springframework.org/schema/context"
        xmlns:mvc="http://www.springframework.org/schema/mvc"
        xsi:schemaLocation="http://www.springframework.org/schema/beans  
                            http://www.springframework.org/schema/beans/spring-beans-3.1.xsd  
                            http://www.springframework.org/schema/context  
                            http://www.springframework.org/schema/context/spring-context-3.1.xsd  
                            http://www.springframework.org/schema/mvc  
                            http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd">
        <!-- 自动扫描 -->
        <context:component-scan base-package="com.cn.hnust" />
        <!-- 引入配置文件 -->
        <bean id="propertyConfigurer"
            class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
            <property name="location" value="classpath:jdbc.properties" />
        </bean>
    
        <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
            destroy-method="close">
            <property name="driverClassName" value="${driver}" />
            <property name="url" value="${url}" />
            <property name="username" value="${username}" />
            <property name="password" value="${password}" />
            <!-- 初始化连接大小 -->
            <property name="initialSize" value="${initialSize}"></property>
            <!-- 连接池最大数量 -->
            <property name="maxActive" value="${maxActive}"></property>
            <!-- 连接池最大空闲 -->
            <property name="maxIdle" value="${maxIdle}"></property>
            <!-- 连接池最小空闲 -->
            <property name="minIdle" value="${minIdle}"></property>
            <!-- 获取连接最大等待时间 -->
            <property name="maxWait" value="${maxWait}"></property>
        </bean>
    
        <!-- spring和MyBatis完美整合,不需要mybatis的配置映射文件 -->
        <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
            <property name="dataSource" ref="dataSource" />
            <!-- 自动扫描mapping.xml文件 原:value="classpath:com/cn/hnust/mapping/*.xml"-->
            <property name="mapperLocations" value="classpath:sqlMap/*.xml"/>
        </bean>
    
        <!-- DAO接口所在包名,Spring会自动查找其下的类 -->
        <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
            <property name="basePackage" value="com.cn.hnust.dao" />
            <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property>
        </bean>
    
        <!-- (事务管理)transaction manager, use JtaTransactionManager for global tx -->
        <bean id="transactionManager"
            class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
            <property name="dataSource" ref="dataSource" />
        </bean>
    
    </beans>

    项目结构:

  • 相关阅读:
    [置顶] java得到前一个月的年月日时分秒
    Windows 8.1 Preview的新功能和新API
    oracle保证读一致性原理
    10161
    Qt国际化
    使用Maven管理依赖JAR文件,自定义项目布局,利用ANT生成不同的发布包
    Haxe2.10到Haxe3,NME到OpenFL的迁移备忘
    设置RichEdit相关颜色说明
    使用MFC CImage类绘制PNG图片时遇到的问题
    把网球计分招式重构到状态模式
  • 原文地址:https://www.cnblogs.com/wql025/p/5037860.html
Copyright © 2011-2022 走看看