Spring整合MyBatis(Maven+MySQL)图文教程详解

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Spring整合MyBatis(Maven+MySQL)图⽂教程详解
⼀、使⽤Maven创建⼀个Web项⽬
为了完成Spring4.x与MyBatis3.X的整合更加顺利,先回顾在Maven环境下创建Web项⽬并使⽤MyBatis3.X,第⼀、⼆点内容多数是回顾过去的内容。

1.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、选择src\main\webapp⽬录为⽬标⽬录,点击“Finish完成”保存并关闭。

1.13、如果此时项⽬还报错,随便修改pom.xml⽂件后保存后应该错误会消失。

1.14、在src\main\webapp⽬录下新建⼀个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" "/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、添加依赖
我们选择5.0版中的5.1.38,将Maven的依赖信息复制到项⽬中的pom.xml的dependencies结点下
有⼀些依赖也可以直接去官⽹查找,如MyBatis3:
项⽬的pom.xml⽂件如下:
<project xmlns="/POM/4.0.0" xmlns:xsi="/2001/XMLSchema-instance"
xsi:schemaLocation="/POM/4.0.0 /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包下载后⼿复制到本地资源库中。

打开MySQL数据库,创建⼀个表,这⾥以booktypes表为例。

sql脚本如下:
/*
Navicat MySQL Data Transfer
Source Server : localhost
Source Server Version : 50536
Source Host : localhost:3306
Source Database : db2
Target Server Type : MYSQL
Target Server Version : 50536
File Encoding : 65001
Date: 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 "-////DTD Mapper 3.0//EN" "/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 configuration
PUBLIC "-////DTD Config 3.0//EN"
"/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.Driver
url=jdbc:mysql://localhost:3306/db2
username=root
password=root
2.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不理static
private 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则需要mit();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 {
@Override
public List<BookType> getAllBookTypes() {
//获得会话对象
SqlSession session=MyBatisUtil.getSession();
try {
//通过MyBatis实现接⼝BookTypeDAO,返回实例
BookTypeDAO bookTypeDAO=session.getMapper(BookTypeDAO.class);
return bookTypeDAO.getAllBookTypes();
} finally {
session.close();
}
}
}
三、使⽤Spring4.X整合MyBatis3.X
以上所述是⼩编给⼤家介绍的Spring整合MyBatis(Maven+MySQL)图⽂教程详解,希望对⼤家有所帮助,如果⼤家有任何疑问请给我留⾔,⼩编会及时回复⼤家的。

在此也⾮常感谢⼤家对⽹站的⽀持!。

相关文档
最新文档