Mybatis-Generator插件
Mybatis-Generator是一个用于自动生成dao层接口、pojo以及mapper xml的一个Mybatis插件,该插件有三种用法:命令行运行、Eclipse插件、maven插件。个人觉得maven插件最方便,可以在eclipse/intellij idea等ide上通用,本文也是介绍在maven中配置并使用这个插件。
现在我mysql中有一个school数据库,该数据库有student、cls两张表格,表结构如下:
首先在工程中的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窗口,双击插件进行运行:
生成的dao层接口、pojo类以及mapper xml文件如下:
有了这个自动生成的插件之后,就不需要自己手动去创建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接口,返回结果如下:
可以看到,正常返回了期望的数据,那么就代表我们的工程能够正常跑通的,接下来就可以愉快的coding了。