首页 / 操作系统 / Linux / Spring整合MyBatis(Maven+MySQL)
MyBatis-Spring 会帮助你将 MyBatis 代码无缝地整合到 Spring 中。 使用这个类库中的类, Spring 将会加载必要的MyBatis工厂类和 session 类。 这个类库也提供一个简单的方式来注入MyBatis数据映射器和SqlSession到业务层的bean中。 而且它也会处理事务, 翻译MyBatis的异常到Spring的 DataAccessException异常(数据访问异常,译者注)中。最终它并不会依赖于MyBatis,Spring或MyBatis-Spring来构建应用程序代码。更多内容请查看官网帮助。一、 使用Maven创建一个Web项目为了完成Spring4.x与MyBatis3.X的整合更加顺利,先回顾在Maven环境下创建Web项目并使用MyBatis3.X,第一、二点内容多数是回顾过去的内容 。完成第一阶段与第二阶段的项目结构如下所示:下载阶段一、阶段二、阶段散、阶段四示例 到Linux公社资源站下载:------------------------------------------分割线------------------------------------------免费下载地址在 http://linux.linuxidc.com/用户名与密码都是www.linuxidc.com具体下载目录在 /2016年资料/7月/7日/Spring整合MyBatis(Maven+MySQL)/下载方法见 http://www.linuxidc.com/Linux/2013-07/87684.htm------------------------------------------分割线------------------------------------------MyBatis入门学习教程 http://www.linuxidc.com/Linux/2015-02/113771.htmJava实战应用:Mybatis实现单表的增删改 http://www.linuxidc.com/Linux/2014-06/103456.htm[Java][Mybatis]物理分页实现 http://www.linuxidc.com/Linux/2014-04/99889.htmMybatis快速入门教程 http://www.linuxidc.com/Linux/2013-06/85762.htmMybatis的关于批量数据操作的测试 http://www.linuxidc.com/Linux/2012-05/60863.htmMybatis中对List<Object> 对象List的批处理插入操作 http://www.linuxidc.com/Linux/2014-02/96916.htm1.2、点击“File”->“New”->"Other"->输入“Maven”,新建一个“Maven Project”,如下图所示:1.2、请勾选“Create a simple project”,创建一个简单的项目,不使用模板。也可以使用模板,选择WebApp,不过这里就不应该勾选。如下图所示:1.3、填写好包名、项目名,选择打包类型为:war,如下图所示:1.4、项目创建好后可能会发现有错误,选择项目,右键“属性properties”->"层面Project Facets"->"Java"修改版本号为1.7,默认为1.5;点击“Ok”保存后关闭。如下图所示:1.5、重复上一个步骤,反勾Dynamic Web Module,将项目暂时变成非Web项目。点击“Ok”保存后关闭。1.6、重复上一步骤,再进层面属性,勾选“Dynamic Web Module”选择Version为3.0。点击左下角的超链接“Further Configuration available...“。1.7、勾选“Generate web.xml deployment descriptor”生成web.xml部署描述文件。点击“Ok”保存后关闭。1.8、将生成的WebContent目录下的两个文件夹“META-INF”与“WEB-INF”复制到src/main/webapp目录下。1.9、删除WebContent目录。1.10、删除后会发现项目的pom.xml文件报错,是因为找不到指定位置的web.xml文件引起的。再进入项目的属性,选择“Deployment Assembly”项目部署项,删除“src/test/java”、“src/test/resources”与“WebContent”目录,因为这三项不需要部署出去。1.11、点击“Add添加”后选择“Folder文件夹”为项目的最终部署结果指定Web内容根文件夹。1.12、选择srcmainwebapp目录为目标目录,点击“Finish完成”保存并关闭。1.13、如果此时项目还报错,随便修改pom.xml文件后保存后应该错误会消失。 1.14、在srcmainwebapp目录下新建一个index.jsp文件,作为测试使用。 1.15、新建完成后发现有错误,是因为没有JavaEE Server Runtime引起的,在项目上右键属性选择“Java Build Path”项,点击“Add Library...”添加引用。1.16、选择Server Runtime项,点击“Next下一步”,再选择“Apache Tomcat v7.0”,这里可能要根据自己的运行环境选择了,如果还没Server,则应该先整合Tomcat。1.17、在index.jsp文件中写上测试内容。<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Hello World!</title></head><body>Hello World!<p><%=new java.util.Date().toLocaleString() %></p></body></html> 1.18、在项目上右键选择“Run as”-> “Run on Server”运行项目,运行结果如下。二、使用MyBatis完成MySQL数据库访问2.1、添加依赖要完成使用MyBatis访问MySQL数据库,需要添加一些依赖包,包含MyBatis3,连接驱动,JUnit,Log4j2等。可以去共享资源库中搜索,第一个网站地址是:http://mvnrepository.com/, 这里以搜索连接驱动为示例,搜索后的结果有5.xx版许多,也有6.xx版,但不建议使用6.xx版,因为MyBatis3不支持。我们选择5.0版中的5.1.38,将Maven的依赖信息复制到项目中的pom.xml的dependencies结点下当然也可去另外一个网站:http://search.maven.org/,这里以log4j为例子搜索如下: 有一些依赖也可以直接去官网查找,如MyBatis3:项目的pom.xml文件如下:<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.zhangguo</groupId><artifactId>Spring061</artifactId><version>0.0.1</version><packaging>war</packaging><dependencies><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.38</version></dependency><dependency><groupId>org.apache.logging.log4j</groupId><artifactId>log4j-core</artifactId><version>2.6.1</version></dependency><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.4.1</version></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.10</version></dependency></dependencies></project>引用结果:如果在网速不稳定的情况下,下载包很有可能失败,可以试试强制项目重新下载;可以使用下载工具将jar包下载后手复制到本地资源库中。2.2、准备数据打开MySQL数据库,创建一个表,这里以booktypes表为例。sql脚本如下:/*Navicat MySQL Data TransferSource Server : localhostSource Server Version : 50536Source Host : localhost:3306Source Database : db2Target Server Type: MYSQLTarget Server Version : 50536File Encoding : 65001Date: 2016-07-04 10:49:56*/SET FOREIGN_KEY_CHECKS=0;-- ------------------------------ Table structure for `booktypes`-- ----------------------------DROP TABLE IF EXISTS `booktypes`;CREATE TABLE `booktypes` (`id` int(11) NOT NULL AUTO_INCREMENT COMMENT "类型编号",`typeName` varchar(100) NOT NULL COMMENT "类型名称",PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT=94 DEFAULT CHARSET=utf8;-- ------------------------------ Records of booktypes-- ----------------------------INSERT INTO `booktypes` VALUES ("1", "计算机软件开发");INSERT INTO `booktypes` VALUES ("2", "计算机网络工程");INSERT INTO `booktypes` VALUES ("3", "神话小说");INSERT INTO `booktypes` VALUES ("4", "科幻小说");INSERT INTO `booktypes` VALUES ("5", "外语");INSERT INTO `booktypes` VALUES ("6", "测试类型");INSERT INTO `booktypes` VALUES ("7", "91");INSERT INTO `booktypes` VALUES ("8", "92");INSERT INTO `booktypes` VALUES ("9", "93");INSERT INTO `booktypes` VALUES ("91", "建筑设计");INSERT INTO `booktypes` VALUES ("92", "工业设计");INSERT INTO `booktypes` VALUES ("93", "船舶制造");2.3、创建java Bean在包com.zhangguo.Spring61.entities下添加类BookType类型。package com.zhangguo.Spring61.entities;/** * 图书类型 * */public class BookType {/** * 编号 */private int id;/** * 类型名 */private String typeName;public int getId() {return id;}public void setId(int id) {this.id = id;}public String getTypeName() {return typeName;}public void setTypeName(String typeName) {this.typeName = typeName;}}2.4、创建实例与表的映射文件这里用接口+XML的形式完成,BookType数据访问接口如下:package com.zhangguo.Spring61.mapping;import java.util.List;import com.zhangguo.Spring61.entities.BookType;/** * 图书类型数据访问接口 * */public interface BookTypeDAO {/* * 获得所有图书类型 */public List<BookType> getAllBookTypes();}BookTypeMapper.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.zhangguo.Spring61.mapping.BookTypeDAO"><!--id应该是接口中的方法,结果类型如没有配置别名则应该使用全名称 --><select id="getAllBookTypes" resultType="BookType">select id,typeName from booktypes</select></mapper>2.5、创建MyBatisCfg.xml文件 MyBatisCfg.xml文件用于配置MyBatis的运行环境,内容如下:<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd"><configuration><!-- 指定数据库连接信息的位置 --><properties resource="db.properties"></properties><!--类型别名,默认引入com.zhangguo.Spring61.entities下的所有类 --><typeAliases><package name="com.zhangguo.Spring61.entities"/></typeAliases><environments default="development"><environment id="development"><transactionManager type="JDBC" /><dataSource type="POOLED"><property name="driver" value="${driver}" /><property name="url" value="${url}" /><property name="username" value="${username}" /><property name="password" value="${password}" /></dataSource></environment></environments><mappers><!--引入映射文件 --><mapper resource="com/zhangguo/Spring61/mapping/BookTypeMapper.xml" /></mappers></configuration>因为配置中依赖了db.properties文件,该文件用于指定数据库的连接信息,内容如下:driver=com.mysql.jdbc.Driverurl=jdbc:mysql://localhost:3306/db2username=rootpassword=root2.6、实现数据访问功能为了更加方便的复用MyBatis实现数据访问不需要频繁的创建SQLSessionFactory和SQLSession对象,封装一个MyBatisUtil工具类如下:package com.zhangguo.Spring61.dao;import java.io.InputStream;import org.apache.ibatis.session.SqlSession;import org.apache.ibatis.session.SqlSessionFactory;import org.apache.ibatis.session.SqlSessionFactoryBuilder;public abstract class MyBatisUtil {//GC不理staticprivate static SqlSessionFactory factory=null;public static SqlSessionFactory getSqlSessionFactory(){if(factory==null){// 获得环境配置文件流InputStream config = MyBatisUtil.class.getClassLoader().getResourceAsStream("MyBatisCfg.xml");// 创建sql会话工厂factory = new SqlSessionFactoryBuilder().build(config);}return factory;}//获得会话public static SqlSession getSession(){return getSqlSessionFactory().openSession(true);}/** * 获得得sql会话 * @param isAutoCommit 是否自动提交,如果为false则需要sqlSession.commit();rollback(); * @return sql会话 */public static SqlSession getSession(boolean isAutoCommit){return getSqlSessionFactory().openSession(isAutoCommit);}}创建类BookTypeDAOImpl实现接口BookTypeDAO,这里要通过MyBatis实现数据访问功能,内容如下: package com.zhangguo.Spring61.dao;import java.util.List;import org.apache.ibatis.session.SqlSession;import com.zhangguo.Spring61.entities.BookType;import com.zhangguo.Spring61.mapping.BookTypeDAO;/** * 实现图书类型数据访问 * */public class BookTypeDAOImpl implements BookTypeDAO {@Overridepublic List<BookType> getAllBookTypes() {//获得会话对象SqlSession session=MyBatisUtil.getSession();try {//通过MyBatis实现接口BookTypeDAO,返回实例BookTypeDAO bookTypeDAO=session.getMapper(BookTypeDAO.class);return bookTypeDAO.getAllBookTypes();} finally {session.close();}}}
更多详情见请继续阅读下一页的精彩内容: http://www.linuxidc.com/Linux/2016-07/132997p2.htm