欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2024-03-12 20:14:44
一、 使用maven创建一个web项目 为了完成spring4.x与mybatis3.x的整合更加顺利,先回顾在maven环境下创建web项目并使用mybatis3.x,...

一、 使用maven创建一个web项目

为了完成spring4.x与mybatis3.x的整合更加顺利,先回顾在maven环境下创建web项目并使用mybatis3.x,第一、二点内容多数是回顾过去的内容 。

1.2、点击“file”->“new”->"other"->输入“maven”,新建一个“maven project”,如下图所示:

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

1.2、请勾选“create a simple project”,创建一个简单的项目,不使用模板。也可以使用模板,选择webapp,不过这里就不应该勾选。如下图所示:

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

1.3、填写好包名、项目名,选择打包类型为:war,如下图所示:

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

1.4、项目创建好后可能会发现有错误,选择项目,右键“属性properties”->"层面project facets"->"java"修改版本号为1.7,默认为1.5;点击“ok”保存后关闭。如下图所示:

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

1.5、重复上一个步骤,反勾dynamic web module,将项目暂时变成非web项目。点击“ok”保存后关闭。

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

1.6、重复上一步骤,再进层面属性,勾选“dynamic web module”选择version为3.0。点击左下角的超链接“further configuration available...“。

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

1.7、勾选“generate web.xml deployment descriptor”生成web.xml部署描述文件。点击“ok”保存后关闭。

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

1.8、将生成的webcontent目录下的两个文件夹“meta-inf”与“web-inf”复制到src/main/webapp目录下。

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

1.9、删除webcontent目录。

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

1.10、删除后会发现项目的pom.xml文件报错,是因为找不到指定位置的web.xml文件引起的。再进入项目的属性,选择“deployment assembly”项目部署项,删除“src/test/java”、“src/test/resources”与“webcontent”目录,因为这三项不需要部署出去。

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

1.11、点击“add添加”后选择“folder文件夹”为项目的最终部署结果指定web内容根文件夹。

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

1.12、选择src\main\webapp目录为目标目录,点击“finish完成”保存并关闭。

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

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

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

1.14、在src\main\webapp目录下新建一个index.jsp文件,作为测试使用。

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

1.15、新建完成后发现有错误,是因为没有javaee server runtime引起的,在项目上右键属性选择“java build path”项,点击“add library...”添加引用。

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

1.16、选择server runtime项,点击“next下一步”,再选择“apache tomcat v7.0”,这里可能要根据自己的运行环境选择了,如果还没server,则应该先整合tomcat。

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

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

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”运行项目,运行结果如下。

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

二、使用mybatis完成mysql数据库访问

2.1、添加依赖

要完成使用mybatis访问mysql数据库,需要添加一些依赖包,包含mybatis3,连接驱动,junit,log4j2等。可以去共享资源库中搜索,第一个网站地址是:http://mvnrepository.com/, 这里以搜索连接驱动为示例,搜索后的结果有5.xx版许多,也有6.xx版,但不建议使用6.xx版,因为mybatis3不支持。

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

我们选择5.0版中的5.1.38,将maven的依赖信息复制到项目中的pom.xml的dependencies结点下

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

当然也可去另外一个网站:http://search.maven.org/,这里以log4j为例子搜索如下:

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

有一些依赖也可以直接去官网查找,如mybatis3:

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

项目的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>

引用结果:

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

如果在网速不稳定的情况下,下载包很有可能失败,可以试试强制项目重新下载;可以使用下载工具将jar包下载后手复制到本地资源库中。

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

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

2.2、准备数据

打开mysql数据库,创建一个表,这里以booktypes表为例。

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

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 "-//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 configuration
 public "-//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.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则需要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 {
  @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)图文教程详解,希望对大家有所帮助