Mybatis-Generator插件

Mybatis-Generator是一个用于自动生成dao层接口、pojo以及mapper xml的一个Mybatis插件,该插件有三种用法:命令行运行、Eclipse插件、maven插件。个人觉得maven插件最方便,可以在eclipse/intellij idea等ide上通用,本文也是介绍在maven中配置并使用这个插件。

现在我mysql中有一个school数据库,该数据库有student、cls两张表格,表结构如下:

student表:
Mybatis-Generator插件的使用与Spring集成Mybatis的配置_第1张图片

cls表:
Mybatis-Generator插件的使用与Spring集成Mybatis的配置_第2张图片

首先在工程中的pom.xml文件,配置如下依赖及插件:

    ...
    
        ...
        
        
            org.mybatis
            mybatis
            3.4.5
        
        
        
            mysql
            mysql-connector-java
            5.1.45
        
    
    
        mybatis-05
        
            
            
                org.mybatis.generator
                mybatis-generator-maven-plugin
                1.3.5
                
                    ${project.basedir}/src/main/resources/generatorConfig.xml
                    true
                    true
                
            
        
    

在工程的resources目录下,创建一个属性配置文件:datasource.properties,配置内容如下:

db.driverLocation=E:\\MavenClassFile\\mysql\\mysql-connector-java\\5.1.45\\mysql-connector-java-5.1.45.jar   // mysql驱动包的本地路径,这个jar包的版本要和pom.xml里配置的版本一致
db.driverClassName=com.mysql.jdbc.Driver  // 驱动类的包名
db.url=jdbc:mysql:///school?characterEncoding=utf-8   // 连接数据库的url
db.username=root   // 用户名
db.password=your_password   // 密码

然后继续在resources目录下,创建Mybatis-Generator插件的配置文件:generatorConfig.xml,配置内容如下:





    
    

    
    

    
    

        
        
            
            
        

        
        
        

        
        
            
        

        
        
            
            
            
            
            
            
            
            
        

        
        
            
        

        

        
        
            
            
        

        
        

完成以上配置之后,点击右边的Maven Projects窗口,双击插件进行运行:
Mybatis-Generator插件的使用与Spring集成Mybatis的配置_第3张图片

运行成功:
Mybatis-Generator插件的使用与Spring集成Mybatis的配置_第4张图片

生成的dao层接口、pojo类以及mapper xml文件如下:
Mybatis-Generator插件的使用与Spring集成Mybatis的配置_第5张图片

有了这个自动生成的插件之后,就不需要自己手动去创建dao接口、pojo类以及mapper xml文件了,大大提高了开发效率。


在Spring中集成Mybatis

现在后端开发都流行使用SSM框架,而SSM分别指的是Spring、SpringMVC、Mybatis,那么我们就会需要在Spring中集成Mybatis,这样就可以使用Spring容器来进行统一的管理了。想要在在Spring中集成Mybatis需要用到一个包:MyBatis-Spring。

什么是MyBatis-Spring?

  • MyBatis-Spring 会帮助你将 MyBatis 代码无缝地整合到 Spring 中。 使用这个类库中的类,Spring 将会加载必要的 MyBatis 工厂类和 session 类。 这个类库也提供一个简单的方式来注入 MyBatis 数据映射器和 SqlSession 到业务层的 bean 中。 而且它也会处理事务, 翻译 MyBatis 的异常到 Spring 的 DataAccessException 异常(数据访问异常)中。最终,它并不会依赖于 MyBatis,Spring 或 MyBatis-Spring 来构建应用程序代码。

MyBatis-Spring诞生动机:

  • 正如第二版那样,Spring 3.0 也仅支持 iBatis2。那么,我们就想将 MyBatis3 的支持添加到 Spring3.0(参考 Spring Jira 中的问题)中。而不幸的是,Spring 3.0 的开发在 MyBatis 3.0 官方发布前就结束了。 因为 Spring 开发团队不想发布一个基于非发布版的 MyBatis 的整合支持,那么 Spring 官方的支持就不得不继续等待了。想要在 Spring 中支持 MyBatis,MyBatis 社区认为现在应该是自己团结贡献者和有兴趣的人一起来开始将 Spring 的整合作为 MyBatis 社区的子项目的时候了。

要求:

MyBatis-Spring要求Java5及以上版本还有下面列出的MyBatis和Spring版本:

MyBatis-Spring MyBatis Spring
1.0.0 或 1.0.1 3.0.1 到 3.0.5 3.0.0 或以上
1.0.2 3.0.6 3.0.0 或以上
1.1.0 3.1.0 或以上 3.0.0 或以上

官方文档地址如下:

http://www.mybatis.org/spring/zh/index.html


介绍完MyBatis-Spring之后,我们就来实际动手操作、配置吧。首先在pom.xml文件中,配置如下依赖:


    
        junit
        junit
        4.12
        test
    
    
        org.springframework
        spring-webmvc
        5.0.4.RELEASE
    
    
        org.springframework
        spring-jdbc
        5.0.4.RELEASE
    
    
        org.springframework
        spring-test
        5.0.4.RELEASE
    
    
        org.mybatis
        mybatis
        3.4.5
    
    
    
        org.mybatis
        mybatis-spring
        1.3.0
    
    
        mysql
        mysql-connector-java
        5.1.45
    
    
        com.fasterxml.jackson.core
        jackson-databind
        2.9.4
    
    
        org.json
        json
        20171018
    
    
        commons-dbcp
        commons-dbcp
        1.4
        
    

在我们之前创建的datasource.properties文件中,增加配置内容如下:

db.initialSize = 20
db.maxActive = 50
db.maxIdle = 20
db.minIdle = 10
db.maxWait = 10
db.defaultAutoCommit = true
db.minEvictableIdleTimeMillis = 3600000

然后在resources目录下创建Spring的配置文件:applicationContext-datasource.xml,这个配置文件作为一个子文件,文件内容如下:




    
    

    
    
        
        
        
            
                classpath:datasource.properties
            
        
        
    

    
    
        
        
        
        
        
        
        
        
        
        
        
        
        
        

        
        
        
        
        
        
        
        

        

        

        
    

    
    
        
        
    

    
    
        
    

    
    
    
    
        
        
    

接着再创建一个主配置文件:applicationContext.xml,文件内容如下:




    
    

    
    

以上我们就已经完成了在spring集成mybatis的配置了,但是ssm框架中现在只完成了两个框架的配置,还有一个SpringMVC没配置呢,所以还需要在WEB-INF的web.xml中,增加如下内容来配置SpringMVC:




    
    
        characterEncodingFilter
        org.springframework.web.filter.CharacterEncodingFilter
        
            encoding
            UTF-8
        
        
            forceEncoding
            true
        
    
    
        characterEncodingFilter
        /*
    

    
    
        org.springframework.web.context.request.RequestContextListener
    

    
    
        org.springframework.web.context.ContextLoaderListener
    

    
    
        contextConfigLocation
        classpath:applicationContext.xml
    

    
    
        dispatcherServlet
        org.springframework.web.servlet.DispatcherServlet
        1
    
    
        dispatcherServlet
        *.do
    

然后在WEB-INF下创建一个dispatcherServlet-servlet.xml文件,该文件作为SpringMVC的配置文件,内容如下:




    
    

    
        
        
            
            
                
                    
                        text/plain;charset=UTF-8
                        text/html;charset=UTF-8
                    
                
            
            
            
                
                    
                        application/json;charset=UTF-8
                    
                
            
        
    

到此为止,我们就已经把SSM框架都搭建好了,接下来就是测试环节,看看我们的工程能否跑通。创建一个用作测试的控制器类,代码如下:

package org.zero01.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.zero01.dao.ClsMapper;
import org.zero01.dao.StudentMapper;
import org.zero01.pojo.Cls;
import org.zero01.pojo.Student;

import java.util.HashMap;
import java.util.Map;

@RestController
public class TestController {

    @Autowired
    private ClsMapper clsMapper;
    @Autowired
    private StudentMapper studentMapper;

    @RequestMapping("test.do")
    public Map test() {

        Student student = studentMapper.selectByPrimaryKey(1);
        Cls cls = clsMapper.selectByPrimaryKey(student.getCid());

        Map map = new HashMap();
        map.put("student", student);
        map.put("cls", cls);

        return map;
    }
}

配置并启动Tomcat服务器,访问test.do接口,返回结果如下:
Mybatis-Generator插件的使用与Spring集成Mybatis的配置_第6张图片

可以看到,正常返回了期望的数据,那么就代表我们的工程能够正常跑通的,接下来就可以愉快的coding了。