Mybatis 逆向工程(Idea 下的Maven项目)

本文详细介绍了如何使用MyBatis逆向工程生成代码,包括配置pom.xml、属性文件、generatorConfig.xml及mybatis-Config.xml。通过具体步骤和代码示例,展示了如何从数据库表生成对应的Java实体类、DAO接口及XML映射文件。

一、配置pom.xml 文件

 <!--逆向工具插件-->
        <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>

以及数据库连接驱动及mybatis包的导入

    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis</artifactId>
      <version>3.4.5</version>
    </dependency>

    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>5.1.6</version>
    </dependency>

二、配置Mybatis的属性文件、配置文件及generator文件的配置

mybatis属性文件 mybatis.properties (像数据库连接配置等可以同时适用后面两个配置文件)

# jdbc
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8
jdbc.username=root
jdbc.password=root1996

#dbcp
initialSize=0   
maxActive=10  
maxIdle=10   
minIdle=1  
maxWait=60000 

#mybatis generator
#本地jar的路径
drive.class.path=D:/Maven/Library/.m2/repository/mysql/mysql-connector-java/5.1.6/mysql-connector-java-5.1.6.jar
model.package=org.lanqiao.entity
dao.package=org.lanqiao.dao
xml.mapper.package=org.lanqiao.dao
target.project.java=src/main/java
target.project.resources=src/main/resources

2.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>
	<!-- 配置文件路径 -->
	<properties resource="mybatis.properties" />

	<!--数据库驱动包路径 -->
	<classPathEntry location="${drive.class.path}" />

	<context id="MySQLTables" targetRuntime="MyBatis3">
		<!--关闭注释 -->
		<commentGenerator>
			<property name="suppressAllComments" value="true" /><!-- 是否取消注释 -->
			<property name="suppressDate" value="true" /> <!-- 是否生成注释代时间戳 -->
		</commentGenerator>

		<!--数据库连接信息 -->
		<jdbcConnection
				driverClass="${jdbc.driver}"
				connectionURL="${jdbc.url}"
				userId="${jdbc.username}"
				password="${jdbc.password}">
		</jdbcConnection>

		<!--生成的model 包路径 -->
		<!-- Model模型生成器,用来生成含有主键key的类,记录类 以及查询Example类
          targetPackage     指定生成的model生成所在的包名
          targetProject     指定在该项目下所在的路径
      -->
		<!--<javaModelGenerator targetPackage="org.lanqiao.entity"-->
							<!--targetProject="src/main/java">-->
		<javaModelGenerator
				targetPackage="${model.package}"
				targetProject="${target.project.java}">
			<!-- 是否允许子包,即targetPackage.schemaName.tableName -->
			<property name="enableSubPackages" value="true" />
			<!-- 是否对model添加 构造函数 -->
			<property name="constructorBased" value="true"/>
			<!-- 是否对类CHAR类型的列的数据进行trim操作 -->
			<property name="trimStrings" value="true"/>
			<!-- 建立的Model对象是否 不可改变  即生成的Model对象不会有 setter方法,只有构造方法 -->
			<property name="immutable" value="false"/>
		</javaModelGenerator>

		<!--生成xml mapper文件 路径 -->
		<sqlMapGenerator targetPackage="${xml.mapper.package}"
			targetProject="${target.project.resources}">
			<property name="enableSubPackages" value="true" />
		</sqlMapGenerator>

		<!-- 客户端代码,生成易于使用的针对Model对象和XML配置文件 的代码
               type="ANNOTATEDMAPPER",生成Java Model 和基于注解的Mapper对象
               type="MIXEDMAPPER",生成基于注解的Java Model 和相应的Mapper对象
               type="XMLMAPPER",生成SQLMap XML文件和独立的Mapper接口
       -->
		<javaClientGenerator type="XMLMAPPER"
			targetPackage="${dao.package}" targetProject="${target.project.java}">
			<property name="enableSubPackages" value="true" />
		</javaClientGenerator>

		<!--对应数据库表名 -->
		<table tableName="t_user" domainObjectName="User"
			enableCountByExample="false" enableDeleteByExample="false"
			enableSelectByExample="false" enableUpdateByExample="false">
			<!--如果设置为true,生成的entity类会直接使用column本身的名字,而不会再使用驼峰命名方法,比如BORN_DATE_Time,生成的属性名字就是BORN_DATE_Time,而不会是bornDateTime-->
			<property name="useActualColumnNames" value="true" />
			<!--忽略列,不生成bean 字段-->
			<ignoreColumn column="user_Address" />
			<!--指定列的java数据类型-->
			<!--<columnOverride column="user_Address" jdbcType="Integer" />-->
		</table>
	</context>
</generatorConfiguration>

 

3.mybatis-Config.xml配置文件

<?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>
	<!-- 引用mybatis.properties配置文件 -->
	<properties resource="mybatis.properties" />
	<!--Log4J日志文件配置-->
    <settings>
        <setting name="logImpl" value="LOG4J" />
    </settings>
	<!-- development : 开发模式 work : 工作模式 -->
	<environments default="development">
		<!--可以配置多个数据库连接,选择不同的数据集合-->
		<environment id="development">
			<transactionManager type="JDBC" />
			<!-- 配置数据库连接信息 -->
			<dataSource type="POOLED">
				<property name="driver" value="${jdbc.driver}" />
				<property name="url" value="${jdbc.url}" />
				<property name="username" value="${jdbc.username}" />
				<property name="password" value="${jdbc.password}" />
			</dataSource>
		</environment>
	</environments>
	<!-- 映射文件 -->
	<mappers>
		<mapper resource="org/lanqiao/dao/UserMapper.xml" />
	</mappers>
</configuration>

三、反向生成代码

和配置Tomcat类似,新建一个Maven,第一行为项目路径不要管,第二行写下面命令

mybatis-generator:generate -e

点击OK然后运行即可。

生成如下代码结构

注意:生成的Usermapper.xml文件不可以被覆盖,多次反向生成测试的时候会出现错误,每次生成可以删除出现生成。

四、测试是否可用

写一个Junit测试 如下

package org.lanqiao.dao;

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.Assert;
import org.junit.Test;
import org.lanqiao.entity.User;

import java.io.IOException;
import java.io.Reader;

public class UserMapperTest {
    @Test
    public void testSelectByPrimaryKey(){
        SqlSessionFactory sqlSessionFactory;
        Reader reader;//读取配置文件
        SqlSession session = null ;
        try {
            reader = Resources.getResourceAsReader("mybatis-Config.xml");
            sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
            session = sqlSessionFactory.openSession();
            //调用直接调用配置文件
//            User user = (User) session.selectOne("org.lanqiao.dao.UserMapper.selectByPrimaryKey",1);
            //使用接口写法(常用)
            UserMapper userMapper = session.getMapper(UserMapper.class);
            User user = userMapper.selectByPrimaryKey(1);
            System.out.println(user.getUserName());
            Assert.assertArrayEquals("测试失败!",new String[]{"张三"},new String[]{user.getUserName()});
        } catch (IOException e) {
            e.printStackTrace();
        }

    }
}

Log4J简单配置:

log4j.rootLogger=DEBUG,stdout
### console ###
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
#log4j.appender.stdout.Target=System.err
log4j.appender.stdout.layout=org.apache.log4j.SimpleLayout
 
### mybatis ###
log4j.logger.com.ibatis=DEBUG
log4j.logger.com.ibatis.common.jdbc.SimpleDataSource=DEBUG
log4j.logger.com.ibatis.common.jdbc.ScriptRunner=DEBUG
log4j.logger.com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate=DEBUG
log4j.logger.java.sql.Connection=ERROR
log4j.logger.java.sql.Statement=DEBUG
log4j.logger.java.sql.PreparedStatement=DEBUG

 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值