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:\repo\mysql-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_Workspace\HNUST\org.zsl.hnust Maven Webapp\src\main\java" />

        <sqlMapGenerator targetPackage="com.cn.hnust.mapping"
                         targetProject="D:\Eclipse_Workspace\HNUST\org.zsl.hnust Maven Webapp\src\main\java" />

        <javaClientGenerator type="XMLMAPPER" targetPackage="com.cn.hnust.dao"
                          targetProject="D:\Eclipse_Workspace\HNUST\org.zsl.hnust Maven Webapp\src\main\java">
        </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:\repo\mysql-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>

项目结构:

时间: 2024-10-13 16:20:05

maven插件mybatis-generator生成代码配置的相关文章

maven插件--MyBatis自动生成代码

1.pom.xml:加入插件配置 Xml代码 <plugin> <groupId>org.mybatis.generator</groupId> <artifactId>mybatis-generator-maven-plugin</artifactId> <version>1.3.2</version> <configuration> <verbose>true</verbose> &

maven插件mybatis-generator自动生成代码

在开发中ssm框架用的十分广泛.mybatis最为持久层框架,根据xml.或者注解映射数据.自己可以控制sql,灵活简单操作数据库.但是,所有的sql文件都是有自己编写,不仅繁琐,而且很耗时,在开发中,速度.效率很重要.所以很多基础sql是有规律可循,可以根据数据库字段自动生成的.下面就进入今天的主题,通过maven插件mybatis-generator自动生成代码. 1.环境配置,创建maven项目,在pom.xml添加插件配置. <build> <finalName>zsxt&

mybatis generator生成代码工具的使用

mybatis generator生成代码工具的使用, 附demo 使用Hibernate时, 可以很方便的生成model,dao,和映射配置文件.在mybatis里, 也有生成器, 即mybatis generator, 简称MBG. 下面为大家介绍一下MBG的使用. 下载mybatis-generator-core-1.3.1-bundle.zip之后, 解压得到mybatis-generator-core-1.3.1.jar, 即生成器的jar包, 将mybatis-3.0.6.jar和m

mybatis Generator生成代码及使用方式

作者:偶尔记一下 该中文文档由于尽可能和原文内容一致,所以有些地方如果不熟悉,看中文版的文档的也会有一定的障碍,所以本章根据该中文文档以及实际应用,使用通俗的语言来讲解详细的配置. 本文中所有节点的链接都是对应的中文文档地址,可以点击查看详细信息. 注:本文后面提到的MBG全部指代MyBatis Generator. MyBatis Generator 1.3.4 扩展,可以设置 Mapper(Dao)后缀 运行MyBatis Generator 有4种运行MBG的方法,具体请看文档 运行 My

用org.mybatis.generator 生成代码

1:引入pom 2:增加生成配置xml: 3:增加java类: 代码: List<String> warnings = new ArrayList<String>(); boolean overwrite = true; File directory = new File("");// 参数为空 String courseFile = directory.getCanonicalPath(); File configFile = new File(courseF

2016.7.12 eclispe使用mybatis generator生成代码时提示project E is not exist

运行mybatis-generator之后,出现错误:project E is not exist 错误原因:使用了项目的绝对路径. http://bbs.csdn.net/topics/391491008 修改后的: 然后运行就没有问题了.

去掉Mybatis Generator生成的一堆Example类

上篇讲了如何使用Mybatis Generator生成代码,但是再生成过程中,往往出现一大堆的Example类,而这些Example中的很多方法我们是不需要用到的,因此在生成之前我们可以添加如下代码: <table schema="general" tableName="tb_table_name" domainObjectName="EntityName" enableCountByExample="false" en

Maven下用MyBatis Generator生成文件

使用Maven命令用MyBatis Generator生成MyBatis的文件步骤如下: 1.在mop文件内添加plugin <build> <finalName>KenShrio</finalName> <defaultGoal>compile</defaultGoal> <plugins> <plugin> <groupId>org.mybatis.generator</groupId> <

MyBatis Generator生成DAO——序列化

MyBatis Generator生成DAO 的时候,生成的类都是没有序列化的. 还以为要手工加入(開始是手工加入的),今天遇到分页的问题,才发现生成的时候能够加入插件. 既然分页能够有插件.序列化是不是也有呢. 果然SerializablePlugin,已经给我们提供好了. <plugin type="org.mybatis.generator.plugins.SerializablePlugin" /> 立即高端大气了起来.每一个model对象都乖乖的带上了Serial

Mybatis自动生成代码

林炳文Evankaka原创作品.转载请注明出处http://blog.csdn.net/evankaka 摘要:本文将简要介绍怎样利用Mybatis Generator自动生成Mybatis的相关代码,Mybatis Generator是一个非常好用的工具,使用它可以大大节省开发的时间,并减少代码的编写量. 一.构建一个环境 1. 首先创建一个表: CREATE TABLE t_user ( USER_ID INT NOT NULL AUTO_INCREMENT, USER_NAME CHAR(