栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

MyBatis学习教程(八)-Mybatis3.x与Spring4.x整合图文详解

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

MyBatis学习教程(八)-Mybatis3.x与Spring4.x整合图文详解

一、搭建开发环境

1.1、使用Maven创建Web项目

  执行如下命令:

复制代码 代码如下:mvn archetype:create -DgroupId=me.gacl -DartifactId=spring4-mybatis3 -DarchetypeArtifactId=maven-archetype-webapp -DinteractiveMode=false

  如下图所示:

  

  创建好的项目如下:

  

  编辑pom.xml文件

 
 ..
 me.gacl
 spring-mybatis
 war
 .-SNAPSHOT
 spring-mybatis Maven Webapp
 http://maven.apache.org
 
 
 junit
 junit
 ..
 test
 
 
 
 spring-mybatis
 
 

  修改spring4-mybatis3 Maven Webapp部分,把"Maven Webapp"这部分包含空格的内容去掉,否则Maven在编译项目时会因为空格的原因导致一些莫名其妙的错误出现,修改成spring4-mybatis3

  另外,把以下内容删掉:


 junit
 junit
 ..
 test
 

  这部分是junit的jar包依赖信息,这个版本太低了,我们不使用这个Junit测试版本,修改过后的pom.xml内容如下:


 ..
 me.gacl
 spring-mybatis
 war
 .-SNAPSHOT
 spring-mybatis
 http://maven.apache.org
 
 
 
 spring-mybatis
 
 

1.2、将创建好的项目导入MyEclipse中

  具体操作步骤如下图所示:

  

  

  

  

  

  手动创建【src/main/java】、【src/test/resources】、【src/test/java】这三个source folder,如下图所示:

  

  到此,项目搭建的工作就算是全部完成了。

二、创建数据库和表(针对MySQL)

SQL脚本如下:

Create DATAbase spring4_mybatis3;
USE spring4_mybatis3;
DROp TABLE IF EXISTS t_user;
CREATE TABLE t_user (
 user_id char(32) NOT NULL,
 user_name varchar(30) DEFAULT NULL,
 user_birthday date DEFAULT NULL,
 user_salary double DEFAULT NULL,
 PRIMARY KEY (user_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

  创建好的数据库和表如下:

  

三、使用generator工具生成代码

  在网上找到了一个generator工具可以根据创建好的数据库表生成MyBatis的表对应的实体类,SQL映射文件和dao,找到generator工具根目录下的generator.xml文件,这个文件是用来配置代码生成规则的,如下图所示:

  

  编辑generator.xml文件,内容如下:


 
 
 
  
 
 
  
  
  
  
   
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  

  打开命令行窗口,切换到生成工具的根目录下,执行如下命令:

java -jar mybatis-generator-core-1.3.2.jar -configfile generator.xml -overwrite

  如下图所示:


  

  刚才我们在generator.xml文件中配置将生成的代码和SQL映射文件放到"C:Usersgaclspring4-mybatis3srcmainjava"这个目录下,这个目录就是我们的spring4-mybatis3项目所在目录,我们刷新一下src/main/java目录,就可以看到生成的代码和映射文件了,如下图所示:

  

  生成的代码和映射文件一行都不用改,可以直接应用到项目当中。下面我们看一眼由generator工具生成的代码和映射文件:

  1、生成的dao类

 package me.gacl.dao;
 import me.gacl.domain.User;
 public interface UserMapper {
 int deleteByPrimaryKey(String userId);
 int insert(User record);
 int insertSelective(User record);
 User selectByPrimaryKey(String userId);
 int updateByPrimaryKeySelective(User record);
 int updateByPrimaryKey(User record);
 }

  生成的UserMapper是一个接口,里面定义了一些操作t_user表的增删改查方法。

2、生成的实体类

package me.gacl.domain;
 import java.util.Date;
 public class User {
 private String userId;
 private String userName;
 private Date userBirthday;
 private Double userSalary;
 public String getUserId() {
  return userId;
 }
 public void setUserId(String userId) {
  this.userId = userId == null ? null : userId.trim();
 }
 public String getUserName() {
  return userName;
 }
 public void setUserName(String userName) {
  this.userName = userName == null ? null : userName.trim();
 }
 public Date getUserBirthday() {
  return userBirthday;
 }
 public void setUserBirthday(Date userBirthday) {
  this.userBirthday = userBirthday;
 }
 public Double getUserSalary() {
  return userSalary;
 }
 public void setUserSalary(Double userSalary) {
  this.userSalary = userSalary;
 }
 }

  User类是t_user表的对应的实体类,User类中定义的属性和t_user表中的字段一一对应。

  3、生成的SQL映射文件


 
 
 
 
 
 
 
 
 
 user_id, user_name, user_birthday, user_salary
 
 这些标签的id属性的值必须和UserMapper接口定义的方法名一致,如下图所示:

  

  之所以有上述说的这两点要求,就是为了能够让MyBatis能够根据UserMapper接口和UserMapper.xml文件去自动实现UserMapper接口中定义的相关方法,这样我们就不再需要针对UserMapper接口去编写具体的实现代码了。

四、Spring与MyBatis整合

  首先我们要在项目中加入我们需要的相关jar包,我们可以到Maven的中央仓库:http://search.maven.org/找到我们要的相关jar包,如下图所示:

  

  我们只需要在搜索框中输入要找的jar包的名称,点击【SEARCH】按钮,就可以找到我们要的jar包了。

4.1、添加Spring与Mybatis的相关jar包

  1、添加spring-core,输入spring-core关键字进行查找,如下图所示:

  

  找到关于spring-core的依赖描述信息,如下图所示:

  

  将


 org.springframework
 spring-core
 4.1.4.RELEASE

  复制到项目的pom.xml文件中,如下所示:


 4.0.0
 me.gacl
 spring4-mybatis3
 war
 1.0-SNAPSHOT
 spring4-mybatis3
 http://maven.apache.org
 
 
 
  org.springframework
  spring-core
  4.1.4.RELEASE
 
 
 
 spring4-mybatis3
 

  这样Maven就会自动帮我们从Maven的中央仓库中下载spring-core这个jar包到我们的本地仓库,然后将spring-core这个jar包以及它的相关依赖包加入到我们的项目当中,如下所示:

  

  spring4.x与mybatis3.x所需要的相关jar包都可以采用上述所说的方式进行查找,然后添加到项目当中,添加完spring4.x与mybatis3.x相关jar包后,pom.xml文件内容最终如下:


 ..
 me.gacl
 spring-mybatis
 war
 .-SNAPSHOT
 spring-mybatis
 http://maven.apache.org
 
  
  
  org.springframework
  spring-core
  ...RELEASE
  
  
  
  org.springframework
  spring-context
  ...RELEASE
  
  
  
  org.springframework
  spring-tx
  ...RELEASE
  
  
  
  org.springframework
  spring-jdbc
  ...RELEASE
  
  
  
  org.springframework
  spring-test
  ...RELEASE
  
  
  
  org.springframework
  spring-web
  ...RELEASE
  
  
  
  org.aspectj
  aspectjweaver
  ..
  
  
  
  org.mybatis
  mybatis
  ..
  
  
  
  org.mybatis
  mybatis-spring
  ..
  
  
  
  javax.servlet
  javax.servlet-api
  ..
  
  
  javax.servlet.jsp
  javax.servlet.jsp-api
  ..-b
  
  
  
  javax.servlet
  jstl
  .
  
  
  
  mysql
  mysql-connector-java
  ..
  
  
  
  com.alibaba
  druid
  ..
  
  
  
  junit
  junit
  .
  test
  
 
 
  spring-mybatis
 
 

  

4.2、编写相关配置文件

  1、dbconfig.properties

  在src/main/resources目录下创建一个dbconfig.properties文件,用于编写连接MySQL数据库的相关信息,dbconfig.properties的内容如下:

driverClassName=com.mysql.jdbc.Driver
validationQuery=SELECT 1
jdbc_url=jdbc:mysql://localhost:3306/spring4_mybatis3?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull
jdbc_username=root
jdbc_password=XDP

  2、spring.xml(spring框架的配置文件)

  在src/main/resources目录下创建一个spring.xml文件,spring.xml文件就是针对Spring框架编写的核心配置文件,spring.xml的内容如下:



 
 
 
 

  我们的spring.xml文件的配置非常简单,就两个配置。

  3、spring-mybatis.xml(spring与mybatis整合的配置文件)

  在src/main/resources目录下创建一个spring-mybatis.xml文件,spring-mybatis.xml文件就是针对Spring框架与Mybatis框架整合编写的配置文件,spring-mybatis.xml的内容如下:



 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 contextConfigLocation
 
 classpath:spring.xml,classpath:spring-mybatis.xml
 

  2、在UserMapper接口中添加一个获取所有用户信息的getAllUser()方法,如下所示:

 package me.gacl.dao;
 import java.util.List;
 import me.gacl.domain.User;
 public interface UserMapper {
 int deleteByPrimaryKey(String userId);
 int insert(User record);
 int insertSelective(User record);
 User selectByPrimaryKey(String userId);
 int updateByPrimaryKeySelective(User record);
 int updateByPrimaryKey(User record);
 
 List getAllUser();
 }

  3、在UserMapper.xml文件中编写getAllUser()方法要执行的SQL语句,如下所示:




 
 
 
 
 
 
 
 user_id, user_name, user_birthday, user_salary
 
 
 select user_id, user_name, user_birthday, user_salary from t_user
 

  4、在UserServiceI接口中也添加一个getAllUser()方法,如下:

package me.gacl.service;
 import java.util.List;
 import me.gacl.domain.User;
 public interface UserServiceI {
 
 void addUser(User user);
 
 User getUserById(String userId);
 
 List getAllUser();
 }

  5、在UserServiceImpl类中实现getAllUser方法,如下:

 package me.gacl.service.impl;
 import java.util.List;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import me.gacl.dao.UserMapper;
 import me.gacl.domain.User;
 import me.gacl.service.UserServiceI;
 
 @Service("userService")
 public class UserServiceImpl implements UserServiceI {
 
 @Autowired
 private UserMapper userMapper;//注入dao
 @Override
 public void addUser(User user) {
  userMapper.insert(user);
 }
 @Override
 public User getUserById(String userId) {
  return userMapper.selectByPrimaryKey(userId);
 }
 @Override
 public List getAllUser() {
  return userMapper.getAllUser();
 }
 }

  6、在src/main/java目录下创建一个me.gacl.web.controller包,然后在me.gacl.web.controller下创建一个UserServlet,如下:

 package me.gacl.web.controller;
 import java.io.IOException;
 import java.util.List;
 import javax.servlet.ServletException;
 import javax.servlet.annotation.WebServlet;
 import javax.servlet.http.HttpServlet;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 import org.springframework.context.ApplicationContext;
 import org.springframework.web.context.support.WebApplicationContextUtils;
 import me.gacl.domain.User;
 import me.gacl.service.UserServiceI;
 
 @WebServlet("/UserServlet")
 public class UserServlet extends HttpServlet {
 //处理业务逻辑的userService
 private UserServiceI userService;
 public void doGet(HttpServletRequest request, HttpServletResponse response)
  throws ServletException, IOException {
  //获取所有的用户信息
  List lstUsers = userService.getAllUser();
  request.setAttribute("lstUsers", lstUsers);
  request.getRequestDispatcher("/index.jsp").forward(request, response);
 }
 public void doPost(HttpServletRequest request, HttpServletResponse response)
  throws ServletException, IOException {
  this.doGet(request, response);
 }
 public void init() throws ServletException {
  //在Servlet初始化时获取Spring上下文对象(ApplicationContext)
  ApplicationContext ac = WebApplicationContextUtils.getWebApplicationContext(this.getServletContext());
  //从ApplicationContext中获取userService
  userService = (UserServiceI) ac.getBean("userService");
 }
 }

  7、编辑index.jsp页面,用于展示查询到的用户信息,内容如下:

<%@ page language="java" pageEncoding="UTF-8"%>
<%--引入JSTL核心标签库 --%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>


 
 显示用户信息
 
  table,td{
  border: 1px solid;
  border-collapse: collapse;
  }
 
 
 
 
<%--遍历lstUsers集合中的User对象 --%>
用户ID 用户名 用户生日 工资
${user.userId} ${user.userName} ${user.userBirthday} ${user.userSalary}

  8、执行maven install命令编译项目,然后将项目部署到tomcat服务器中运行,注意,由于要使用Servlet3.0,所以必须将项目部署到tomcat7.x以上的服务器中去运行,如下所示:

  

  输入地址:http://localhost:8080/spring4-mybatis3/UserServlet访问UserServlet,访问结果如下:

  

  可以看到,t_user表中的用户信息全部查询出来显示到页面上了。这样在web服务器中的测试也正常通过了。

  以上就是Spring4.x与MyBatis3.x整合的全部内容了。编写这个整合例子花了不少时间,使用Maven编译时总是出现莫名其妙的问题,有时候成功,有时候失败,反正很莫名其妙。如果遇到执行Maven install操作不能正常编译通过的情况:可以尝试采用:Maven clean→Clean项目→Maven install这三个步骤去解决问题

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/150066.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号