Spring快速整合MyBatis+”神器“MyBatis-Generator

什么是MyBatis-Generator?

官网介绍:MyBatis Generator(MBG)是MyBatis MyBatis 和iBATIS的代码生成器。它将为所有版本的MyBatis以及版本2.2.0之后的iBATIS版本生成代码。它将内省数据库表(或许多表),并将生成可用于访问表的工件。这减少了设置对象和配置文件以与数据库表交互的初始麻烦。MBG寻求对简单CRUD(创建,检索,更新,删除)的大部分数据库操作产生重大影响。您仍然需要为连接查询或存储过程手动编写SQL和对象代码。

所谓“神器”,指的就是MGB可以根据数据库表,反向生成JavaBean对象、Dao层接口文件以及SQL映射文件(包含针对于单表的基本操作,像CURD,计数,排序等),因为这是其实都是一些重复化的工作,所以MGB可以说帮我们节约了大量时间和精力。废话不多少,正式开始今天的学习吧!

  1. pom文件引入相关依赖

     <properties>
            <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
            <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
            <maven.compiler.source>1.8</maven.compiler.source>
            <maven.compiler.target>1.8</maven.compiler.target>
            <maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
            <!-- 自定义spring版本属性 -->
            <spring-version>4.3.17.RELEASE</spring-version>
        </properties>
    
        <dependencies>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-context</artifactId>
                <version>${spring-version}</version>
            </dependency>
    
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-jdbc</artifactId>
                <version>${spring-version}</version>
            </dependency>
    
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-test</artifactId>
                <version>${spring-version}</version>
            </dependency>
    
            <dependency>
                <groupId>org.mybatis</groupId>
                <artifactId>mybatis</artifactId>
                <version>3.5.1</version>
            </dependency>
    
            <!-- Spring 集成 MyBatis 的依赖 -->
            <dependency>
                <groupId>org.mybatis</groupId>
                <artifactId>mybatis-spring</artifactId>
                <version>2.0.1</version>
            </dependency>
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>5.1.47</version>
            </dependency>
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>4.12</version>
            </dependency>
    
            <dependency>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
                <version>1.18.8</version>
                <scope>provided</scope>
            </dependency>
    </dependencies>
    
  2. 再在pom文件加入Mybatis-Generator的相关引擎和依赖

    <build>
        <pluginManagement>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <configuration>
                        <source>1.7</source>
                        <target>1.7</target>
                    </configuration>
                    <version>3.3</version>
                </plugin>
                <plugin>
                    <groupId>org.mybatis.generator</groupId>
                    <artifactId>mybatis-generator-maven-plugin</artifactId>
                    <version>1.3.2</version>
                    <dependencies>
                        <dependency>
                            <groupId>mysql</groupId>
                            <artifactId>mysql-connector-java</artifactId>
                            <version>5.1.38</version>
                        </dependency>
                    </dependencies>
                    <configuration>
                        <!--配置文件的路径  ${basedir}是项目名-->
                        <configurationFile>${basedir}/src/main/resources/generator-						config.xml</configurationFile>
                        <overwrite>true</overwrite>
                    </configuration>
                </plugin>
            </plugins>
        </pluginManagement>
    </build>
    
  3. 配置generator-config.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>
        <context id="testTables" targetRuntime="MyBatis3">
            <commentGenerator>
                <!-- 是否去除自动生成的注释 true:是 : false:否 -->
                <property name="suppressAllComments" value="true" />
            </commentGenerator>
            <!--数据库连接的信息:驱动类、连接地址、用户名、密码 -->
            <jdbcConnection driverClass="com.mysql.jdbc.Driver"
               connectionURL="jdbc:mysql://localhost:3306/test?characterEncoding=utf-8"
               userId="root" password="a">
            </jdbcConnection>
    
            <!-- 默认false,把JDBC DECIMAL 和 NUMERIC 类型解析为 Integer,为 true时把JDBC 			DECIMAL 和NUMERIC 类型解析为java.math.BigDecimal -->
            <javaTypeResolver>
                <property name="forceBigDecimals" value="false" />
            </javaTypeResolver>
    
            <!-- targetProject:生成PO类的位置 -->
            <javaModelGenerator targetPackage="com.tys.pojo"
                                targetProject=".\src\main\java">
                <!-- enableSubPackages:是否让schema作为包的后缀 -->
                <property name="enableSubPackages" value="false" />
                <!-- 从数据库返回的值被清理前后的空格 -->
                <property name="trimStrings" value="true" />
            </javaModelGenerator>
            <!-- targetProject:mapper映射文件生成的位置 -->
            <sqlMapGenerator targetPackage="com.tys.dao.mapper"
                             targetProject=".\src\main\java">
                <!-- enableSubPackages:是否让schema作为包的后缀 -->
                <property name="enableSubPackages" value="false" />
            </sqlMapGenerator>
            <!-- targetPackage:mapper接口生成的位置 -->
            <javaClientGenerator type="XMLMAPPER"
                                 targetPackage="com.tys.dao"
                                 targetProject=".\src\main\java">
                <!-- enableSubPackages:是否让schema作为包的后缀 -->
                <property name="enableSubPackages" value="false" />
            </javaClientGenerator>
            <!-- 指定数据库表 -->
            <table tableName="student"></table>
    
            <!-- 有些表的字段需要指定java类型
             <table schema="" tableName="">
                <columnOverride column="" javaType="" />
            </table> -->
        </context>
    </generatorConfiguration>
    
  4. 使用maven命令(mybatis-generator:generate)运行Mybatis-Generator,如下图所示(我用的是idea)
    在这里插入图片描述在这里插入图片描述

  5. 可以看到,神器就帮我们自动生成了pojo实体类,mapper映射文件以及dao层接口
    在这里插入图片描述

  6. 接下来我们就可以开始用Spring整合MyBatis了,配置beans.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:context="http://www.springframework.org/schema/context"
	xsi:schemaLocation="http://www.springframework.org/schema/beans
	http://www.springframework.org/schema/beans/spring-beans.xsd
	http://www.springframework.org/schema/context
	http://www.springframework.org/schema/context/spring-context.xsd">

	<!-- 读取jdbc.properties -->
	<context:property-placeholder location="classpath:jdbc.properties"/>
	<!-- 创建DataSource -->
	<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
		<property name="url" value="${jdbc.url}"/>
		<property name="driverClassName" value="${jdbc.driverClass}"/>
		<property name="username" value="${jdbc.username}"/>
		<property name="password" value="${jdbc.password}"/>
	</bean>	
	<!-- 创建Mybatis的会话工厂对象 -->
	<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
		<!-- 关联连接池 -->
		<property name="dataSource" ref="dataSource"/>
		<!-- 扫描entity包 使用别名(写关联查询时有用) -->
		<!-- <property name="typeAliasesPackage" value="com.tys.pojo" /> -->
		<!-- <property name="typeAliases" >
			<array>  
		        <value>com.yc.olshop.bean.Article</value>  
		    </array>
		</property> -->
		<!-- 扫描sql配置文件:mapper需要的xml文件 -->
	   <property name="mapperLocations"
	   		value="classpath:com/tys/dao/mapper/*.xml"/>
	</bean>

	<!-- Mapper接口的扫描 -->
	<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
		<!-- 配置Mapper接口所在包路径  -->
		<property name="basePackage" value="com.tys.dao"/>
	</bean>
	<!-- 开启Spring的IOC注解扫描 -->
	<context:component-scan base-package="com.tys.biz"/>

</beans>
  1. 写个Spring测试类运行一下
@RunWith(SpringRunner.class)
@ContextConfiguration("/beans.xml")//指明配置文件的路径
public class Test {
    @Autowired
    private StudentBiz sbiz;

    @org.junit.Test
    public void test(){
        List<Student> sList= sbiz.queryAllStudentList();
        for (Student student : sList) {
            System.out.println(student);
        }
    }
}

咦!居然还报错!在这里插入图片描述
行吧!我们再来找下错误原因,它是说我们的SQL映射文件不存在!没道理啊,路径也没错啊。难道是编译后没有我们的映射xml文件?于是我们再看看编译后的target文件夹里有没有?
在这里插入图片描述
还真没有!!!说明xml文件没有被maven打包到target下面,(奇怪,之前一直都是用eclipse,没有出现这种情况,现在换成idea就出现了,可能还跟编译器有挺大关系的)

解决办法:在pom.xml的build标签里加上相关配置,告诉maven—记得把我的SQL映射文件也打包。。

<!--解决dao/mapper里的xml映射文件不被编译到target-->
<resources>
    <resource>
        <directory>src/main/java</directory>
        <includes>
            <include>**/*.xml</include>
        </includes>
        <filtering>true</filtering>
    </resource>
</resources>

最后再来测试,看还有没有毛病?顺利打印,没毛病!在这里插入图片描述
9. 最后贴上项目总结构图
在这里插入图片描述

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值