问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

spring mvc mybatis 整合 大体步骤

发布网友 发布时间:2022-04-26 15:35

我来回答

2个回答

懂视网 时间:2022-04-29 23:12


       本文要实现Spring+SpringMVC+Mybatis+Mysql的一个整合,实现了SpringMVC控制访问的页面,将得到的页面参数传递给Spring中的Mybatis的bean类,然后查找Mysql数据的功能,并通过JSP显示出来。建议可以先看笔者另一文章Mybatis与Spring整合创建Web项目 。笔者觉得整合过程中问题比较多的还是Spring+Mybatis的整合,SpringMVC的整合还是比较简单。

Spring
        Spring 是一个开源框架, Spring 是于 2003 年兴起的一个轻量级的 Java 开发框架,由 Rod Johnson 在其著作 Expert One-On-One J2EE Development and Design 中阐述的部分理念和原型衍生而来。它是为了解决企业应用开发的复杂性而创建的。 Spring 使用基本的 JavaBean 来完成以前只可能由 EJB 完成的事情。然而, Spring 的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何 Java 应用都可以从 Spring 中受益。 简单来说, Spring 是一个轻量级的控制反转( IoC )和面向切面( AOP )的容器框架。
SpringMVC
        Spring MVC 属于 SpringFrameWork 的后续产品,已经融合在 Spring Web Flow 里面。 Spring MVC 分离了 控制器 、模型 对象 、分派器以及处理程序对象的角色,这种分离让它们更容易进行定制。
MyBatis
        MyBatis 本是 apache 的一个开源项目 iBatis , 2010 年这个项目由 apache software foundation 迁移到了 google code ,并且改名为 MyBatis 。 MyBatis 是一个基于 Java 的 持久层 框架。 iBATIS 提供的 持久层 框架包括 SQL Maps 和 Data Access Objects ( DAO ) MyBatis 消除了几乎所有的 JDBC 代码和参数的手工设置以及结果集的检索。 MyBatis 使用简单的 XML 或注解用于配置和原始映射,将接口和 Java 的 POJOs ( Plain Old Java Objects ,普通的 Java 对象)映射成数据库中的记录。

使用的版本:Mybatis-3.2.8

                        Spring3.2.9

                   SpringMVC 3.2.9

                         Mysql5.6

开发环境:    Eclipse  Java EE Kepler+Win7


本文工程免费下载

一、创建Web项目

最终整个工程目录如下:

技术分享

需要导入的包

技术分享

二、创建库表映射类并配置MyBatis

1、首先在数据库中创建一张表 t_user

use test; 
DROP TABLE IF EXISTS t_user; 
create table t_user 
( 
 userId int primary key auto_increment, 
 userName VARCHAR(50) not null, 
 userAge int not null 
); 
然后插入4条数据:

insert into t_user values(1,‘小王‘,10); 
insert into t_user values(2,‘红红‘,11); 
insert into t_user values(3,‘明明‘,12); 
insert into t_user values(4,‘天天‘,13); 

查看下结果:

技术分享

2、表创建好之后便创建其映射类User,位于包com.mucfc.model中

package com.mucfc.model;
/**
 * User映射类
 * @author linbingwen
 * @time 2015.5.15
 */
public class User {
	private Integer userId;
	private String userName;
	private int userAge;
	public Integer getUserId() {
		return userId;
	}
	public void setUserId(Integer userId) {
		this.userId = userId;
	}
	public String getUserName() {
		return userName;
	}
	public void setUserName(String userName) {
		this.userName = userName;
	}
	public int getUserAge() {
		return userAge;
	}
	public void setUserAge(int userAge) {
		this.userAge = userAge;
	}
	@Override
	public String toString() {
		return "User [userId=" + userId + ", userName=" + userName
				+ ", userAge=" + userAge + "]";
	}

}

2、映射类创建好之后便创建MyBatis映射文件(即Mapper文件),位于和src同级的conf的mapper包中,文件内容如下:

<?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.mucfc.mapper.UserMapper">	
	<!-- 查询单条记录 --> 
 <select id="selectUserById" parameterType="int" resultType="User"> 
 select * from t_user where userId = #{userId} 
 </select> 
</mapper>

3、创建映射UserMapper类如下,位于包com.mucfc.mapper中

package com.mucfc.mapper;

import com.mucfc.model.User;
/**
 * Mapper映射类
 * @author linbingwen
 * @time 2015.5.15
 */
public interface UserMapper {
	public User selectUserById(int userId);

}

4、创建操作数据的DAO层

package com.mucfc.dao;

import com.mucfc.model.User;
/**
 * DAO接口层
 * @author linbingwen
 * @time 2015.5.15
 */
public interface UserDao {
	/**
	 * 根据用户ID查询用户信息
	 * @param id
	 * @return
	 */
	public User findUserById(int id);
}

然后是对应的实现层

package com.mucfc.dao;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import com.mucfc.mapper.UserMapper;
import com.mucfc.model.User;
/**
 * DAO实现层
 * @author linbingwen
 * @time 2015.5.15
 */
@Component
public class UserDaoImpl implements UserDao{
 @Autowired
	private UserMapper userMapper;
	@Override
	public User findUserById(int id) {
		User user = userMapper.selectUserById(id);
		 return user; 
	}
	
}

5、在conf里配置Mybatis的配置文件:

MyBatisConf.xmll放在conf里,注意路径

<?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>
 <!-- 配置映射类的别名 -->
 	<typeAliases>
 <typeAlias alias="User" type="com.mucfc.model.User"/> 
 </typeAliases> 
 <!-- 配置Mapper文件的路径 -->
 <mappers>
 <mapper resource="mapper/UserMapper.xml"/>
 </mappers>
</configuration>

如果不与Spring进行整合的话,此配置文件还需要配置数据源信息,与Spring整合之后数据源就配置在Spring配置文件中,只需要配置映射文件的路径就可以了。

三、配置Spring

1、在conf里创建Spring的配置文件:(conf是和src同级的文件夹)

SpringConf.xml放在conf里,注意路径

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
	xmlns:aop="http://www.springframework.org/schema/aop"
	xsi:schemaLocation=" 
  http://www.springframework.org/schema/beans 
  http://www.springframework.org/schema/beans/spring-beans-3.2.xsd 
  http://www.springframework.org/schema/aop 
  http://www.springframework.org/schema/aop/spring-aop-3.2.xsd
  http://www.springframework.org/schema/context 
  http://www.springframework.org/schema/context/spring-context-3.2.xsd">
	<!-- 配置数据源 -->
	<bean id="dataSource"
		class="org.springframework.jdbc.datasource.DriverManagerDataSource">
		<property name="driverClassName" value="com.mysql.jdbc.Driver" />
		<property name="url" value="jdbc:mysql://localhost:3306/test" />
		<property name="username" value="root" />
		<property name="password" value="christmas258@" />
	</bean>


	<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
		<property name="dataSource" ref="dataSource" />
		<property name="configLocation" value="classpath:MyBatisConf.xml" />
		<!-- <property name="typeAliasesPackage" value="com.tiantian.ckeditor.model" 
			/> -->
	</bean>

	 <bean id="userMapper" class="org.mybatis.spring.mapper.MapperFactoryBean"> 
 <property name="mapperInterface" 
  value="com.mucfc.mapper.UserMapper" /> 
 <property name="sqlSessionFactory" ref="sqlSessionFactory" /> 
 </bean> 
	<!-- 自动扫描注解的bean -->
	<context:component-scan base-package="com.mucfc.dao" />

</beans>

2、web.xml中启动Spring

web.xml放在WEB-INF里

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
	http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
	<!-- 配置初始打开的页面 -->
<!-- 	<welcome-file-list>
		<welcome-file>index.html</welcome-file>
		<welcome-file>index.htm</welcome-file>
		<welcome-file>index.jsp</welcome-file>
	</welcome-file-list> -->

	<!-- Spring 容器加载 -->
	<listener>
		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
	</listener>
	<context-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>classpath:SpringConf.xml</param-value>
	</context-param>

</web-app>

其实到这里就完成了Spring+Mybatis的配置中,可以在JSP中通过Spring中创建的bean来操作数据 库了

四、配置SpringMVC

1、首先应该先更改web.xml,在里面设置拦截的内容

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
	http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
	<!-- 配置初始打开的页面 -->
<!-- 	<welcome-file-list>
		<welcome-file>index.html</welcome-file>
		<welcome-file>index.htm</welcome-file>
		<welcome-file>index.jsp</welcome-file>
	</welcome-file-list> -->

	<!-- Spring 容器加载 -->
	<listener>
		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
	</listener>
	<context-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>classpath:SpringConf.xml</param-value>
	</context-param>

	<!-- SpringMVC的前端控制器 -->
	<servlet>
		<servlet-name>MyDispatcher</servlet-name>
		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
		<!-- 加载配置文件路径 -->
		<init-param>
			<param-name>contextConfigLocation</param-name>
			<param-value>classpath:SpringMVC-servlet.xml</param-value>
		</init-param>
		<!-- 何时启动 大于0的值表示容器启动时初始化此servlet,正值越小优先级越高 -->
		<load-on-startup>1</load-on-startup>
	</servlet>
	<!-- Spring MVC配置文件结束 -->

	<!-- SpringMVC拦截设置 -->
	<servlet-mapping>
		<servlet-name>MyDispatcher</servlet-name>
		<!-- 由SpringMVC拦截所有请求 -->
		<url-pattern>/</url-pattern>
	</servlet-mapping>
	<!-- SpringMVC拦截设置结束 -->

	<!--解决中文乱码问题 -->
	<filter>
		<filter-name>CharacterEncodingFilter</filter-name>
		<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
		<init-param>
			<param-name>encoding</param-name>
			<param-value>UTF-8</param-value>
		</init-param>
	</filter>
	<filter-mapping>
		<filter-name>CharacterEncodingFilter</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>

</web-app>

2、在conf里创建SpringMVC的配置文件:(conf是和src同级的文件夹)

<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:context="http://www.springframework.org/schema/context"
	xmlns:util="http://www.springframework.org/schema/util" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:p="http://www.springframework.org/schema/p" xmlns:mvc="http://www.springframework.org/schema/mvc"
	xsi:schemaLocation=" 
	 http://www.springframework.org/schema/util 
	 http://www.springframework.org/schema/util/spring-util-3.2.xsd
	 http://www.springframework.org/schema/mvc 
	 http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd
 http://www.springframework.org/schema/beans 
 http://www.springframework.org/schema/beans/spring-beans-3.2.xsd 
 http://www.springframework.org/schema/context 
 http://www.springframework.org/schema/context/spring-context-3.2.xsd">
 <mvc:annotation-driven/> 
	<!-- 把标记了@Controller注解的类转换为bean -->
	<context:component-scan base-package="com.mucfc.controller" />
	<!-- 对模型视图名称的解析,即在模型视图名称添加前后缀 -->
	<bean
		class="org.springframework.web.servlet.view.InternalResourceViewResolver"
		p:prefix="/WEB-INF/views/" p:suffix=".jsp" />


</beans>
3、注解@conroller类的实现

com.mucfc.controller包下新建UserController.java

package com.mucfc.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

@Controller
public class UserController {
	@RequestMapping(value="/findUser",method = RequestMethod.POST)
	public String getUser(){	
		return "findUser";
	}
	@RequestMapping("/")
	public String getIndex(){	
		return "index";
	}

}
根据浏览器输入的网址,定位到不同的页面中去

五、JSP页面创建

由于SpringMVC配置了p:prefix="/WEB-INF/views/" p:suffix=".jsp" /。。。

所以要在WEB-INF中创建文件夹views,然后在这里放置JSP文件

首先是index.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form"%>
<%
	String path = request.getContextPath();
	String basePath = request.getScheme() + "://"
			+ request.getServerName() + ":" + request.getServerPort()
			+ path + "/";
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>查找用户信息</title>
<base href="<%=basePath%>">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
	<center>
		<form action="findUser" method="post">
			请输入用户ID:<input type="text" name="id">
			 <input type="submit" value="确定"> 
		</form>
	</center>
</body>
</html>

将数据传递给findUser.jsp

findUser.jsp内容如下

<%@ page import="com.mucfc.dao.UserDao"%>
<%@page import="org.springframework.web.context.WebApplicationContext"%>
<%@page import="org.springframework.web.context.support.WebApplicationContextUtils"%>
<%@ page language="java" contentType="text/html" pageEncoding="UTF-8"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Insert title here</title>
</head>
<body>
	<center>
		通过controller访问<br/>
		欢迎<br/>
		<%
			WebApplicationContext wac = WebApplicationContextUtils
					.getWebApplicationContext(this.getServletContext());
			UserDao userDao = (UserDao) wac.getBean("userDaoImpl");
			String in=(String)request.getParameter("id");
		System.out.println(in);
			int num=Integer.parseInt(in);			
		%>
	<%=userDao.findUserById(num)%><br /> 
	<%-- 	<%=userDao.findUserById(2)%><br />
		<%=userDao.findUserById(3)%><br />
		<%=userDao.findUserById(4)%><br /> --%>
	</center>
</body>
</html>
根据 输入的id,来查找数据库中是否有这个人


六、运行

输入1

技术分享

结果表明这个人存在

技术分享

输入5,不存在这个人

技术分享



林炳文Evankaka原创作品。转载请注明出处http://blog.csdn.net/evankaka

本文工程免费下载


Spring+SpringMVC+Mybatis+Mysql整合实例

标签:spring   springmvc   mybatis   mysql   整合   

热心网友 时间:2022-04-29 20:20

一、简单说明
用到的框架:spring、springmvc,mybatis
开发工具:eclipse,apache-tomcat-6.0.39
jar包管理:maven
开发过程
一、建立工程
1、引入相关jar包:
<dependencies>
<!--测试包 -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.8.1</version>
<scope>test</scope>
</dependency>
<!-- servlet的jar包 添加<scope>provided</scope>, 因为provided表明该包只在编译和测试的时候用-->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
<scope>provided</scope>
</dependency>
</dependencies>
二、引入mybatis相关内容并测试
1、引入JAR包
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.build.timestamp.format>yyyyMMddHHmmss</maven.build.timestamp.format>
<mybatis.version>3.3.1</mybatis.version>
</properties>
<dependencies>
<!--测试包 -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.8.1</version>
<scope>test</scope>
</dependency>
<!-- servlet的jar包 添加<scope>provided</scope>,因为provided表明该包只在编译和测试的时候用-->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>${mybatis.version}</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.25</version>
</dependency>
</dependencies>
这里面在pom里面使用了<properties> 标签重点看一下,在这个环节添加了数据库连接的jar包和mybatis的jar包。这里要想可以操作数据库需要编程式的读取配置文件一般放在classpath下面。这里取名为conf.xml.这个里面主要完成2件事:
a:对数据库4个基本信息的配置, b:引入mapper.xml文件。
<?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>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC" />
<!-- 配置数据库连接信息 -->
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/SSM_XML"/>
<property name="username" value="root" />
<property name="password" value="root" />
</dataSource>
</environment>
</environments>
<mappers>
<!-- 注册userMapper.xml文件,-->
<mapper resource="im/fenqi/study/user/mapper/UserMapper.xml"/>
</mappers>
</configuration>
下面对这个步骤里面的内容进行详细说明:
1、创建im.fenqi.study.user.entity.User实体对象,这里导入一个lombok插件,这个插件要安装(具体百度),可以不用显示的写set/get方法。
2、创建im/fenqi/study/user/mapper/UserMapper.xml文件,这个里面是对数据库进行操作一般和 im.fenqi.study.user.mapper.UserMapper配对使用,里面注意点。
标签mapper里面的namespace的值就是配对的JAVA类im.fenqi.study.user.mapper.UserMapper
标签resultMap:是为了解决实体类的属性名字和数据库字段名字不一致的问题。主键和其他键是有区别的。
resultMap里面定义的字段和属性在对应的表和实体必须有对应的内容否则会报错。
标签trim:可以处理user(user_id,user_name,password)等问题,里面的子标签为:
prefix:前缀覆盖并增加其内容
suffix:后缀覆盖并增加其内容
prefixOverrides:前缀判断的条件
找到最前面的和条件一样的内容然后变成prefix里面的内容
例:<trim prefix="where" prefixOverrides="AND">
</trim>
根据条件判断trim里面的字符串为"AND id=#{id} AND name like #{name}"
找到最前面的AND(prefixOverrides的内容)替换成where(prefix内容)
如果没有prefixOverrides的内容就直接加在前面。
suffixOverrides:后缀判断的条件
和prefixOverrides类似。
标签if:比较简单,<if test="判断条件"></if>
标签sql:
<sql id="Base_Column_List">
id, user_id,user_name,password
</sql>
使用场景:
select <include refid="Base_Column_List" /> from user
需要返回的字段很多的时候不用每次都写一遍
3、创建im.fenqi.study.user.mapper.UserMapper类这个和上面的文件是成对出现的,这是一个接口接口里面的方法名和UserMapper.xml里面的id要一致
4、测试类userTest
在本地测试主要使用SqlSession对象二这个对象需要使用SqlSessionFactory对象才能创建,下面先说SqlSessionFactory对象是怎么得到的
a:获取配置文件config.xml的输入流:
String resource = "/conf.xml";
//从classpath里面寻找
InputStream resourceAsStream = Object.class.getResourceAsStream(resource);
b:获取SqlSessionFactory对象
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(resourceAsStream);
c:获取SqlSession对象:
SqlSession session = factory.openSession();
d:得到层的对象
UserMapper userMapper = session.getMapper(UserMapper.class);
d:插入数据
User user = new User();
user.setUserId(UUID.randomUUID().toString());
user.setUserName("zw1");
user.setPassword("123456");
int count = userMapper.saveUserInfo(user);
session.commit();
System.out.println("insert:"+count);
三、引入spring框架并测试
首先需要引入必要的jar包,主要是spring必要的包和spring支持mybatis,jdbc的包
<!--spring基础的包 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-expression</artifactId>
<version>${spring.version}</version>
</dependency>
<!--spring+mybatis+jdbc-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>1.2.1</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>${spring.version}</version>
</dependency>
这个时候conf.xml这个配置文件已经不需要了,统一在spring.xml里面进行配置
1、配置数据库连接
<?xml version="1.0" encoding="UTF-8" ?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.2.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-3.2.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop.xsd">

<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
<property name="url" value="jdbc:mysql://localhost:3306/SSM_XML"></property>
<property name="username" value="root"></property>
<property name="password" value="root"></property>
</bean>
</beans>
当然这个配置可以写在properties文件里面(用到再说)
2、spring引入以后主要目的就是利用IOC容器进行创建对象,没有加入spring之前SqlSessionFactory、SqlSession、UserMapper 对象的创建都是我们硬编码实现,spring就是为了解决这些问题,最后直接返回UserMapper 给我们使用。其他的事情都在配置里完成。这里面具体操作流程以后会详细分析
3、创建SqlSessionFactory
创建这个对象需要数据源和mapper.xml配置文件的位置
<!--创建 sqlSessionFactory,给了数据源和配置路径 -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"></property>
<property name="mapperLocations" value="classpath:im/fenqi/study/*/mapper/*.xml"></property>
</bean>
4、创建UserMapper 对象(这一部分还要重点研究)
需要SqlSessionFactory对象创建SqlSession对象,然后创建UserMapper 对象,所以需要SqlSessionFactory和UserMapper 接口的位置,MapperScannerConfigurer是扫描包,不要每次都创建MapperFactoryBean
<!-- 创建Mapper层的对象 -->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="im.fenqi.study.*.mapper" />
<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property>
</bean>
5、测试获取对象
ApplicationContext context = new ClassPathXmlApplicationContext("/spring.xml");
UserMapper bean = context.getBean("userMapper",UserMapper.class);
List<User> userByUser = bean.getUserByUser(null);
6、这个测试还可以使用spring自带的test类
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("/spring.xml")
public class springtest {

@Autowired
private UserMapper userMapper;
@Test
public void save()
{
User user = new User("zw1", 20);
userMapper.save(user);
}
四、引入springmvc框架
首先引入springmvc的JAR包
<!--springMVC相关框架 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${spring.version}</version>
</dependency>
这个时候需要配置web.xml,也要配置springmvc.xml
1、配置web.xml
添加加载spring.xml的*和spring文件路径
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5">
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring.xml</param-value>
</context-param>
<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:springmvc.xml</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
</web-app>
配置Dispatcherservlet和springmvx.xml配置文件的位置
2、配置springmvc.xml文件
springmvc.xml主要配置控制器、handlerMapper、HandlerAdapter、渲染器
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd
http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd">
<!-- 注解扫描,以包为单位 -->
<context:component-scan base-package="im.fenqi.study"/>
<!--创建控制器 -->
<bean id="/user.do" class="im.fenqi.study.user.rest.UserController">
<property name="userService" ref="userService"></property>
</bean>
<!--创建handlermapper -->
<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"></bean>
<!--创建handlerAdapter -->
<bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"></bean>
<!-- 配置渲染器 -->
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
<property name="prefix" value="/WEB-INF/jsp/"/>
<property name="suffix" value=".jsp"/>
</bean>
</beans>
3、编写控制器控制器和配置的类型要一致
public class UserController implements Controller{

private UserService userService;

public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {
ModelAndView modelAndView = new ModelAndView();
List<User> userList = userService.getUserByUser(null);
modelAndView.addObject("user", userList.get(0));
modelAndView.setViewName("mypage");
return modelAndView;
}

}
五、整合过程中出现的问题
1、IOC容器。
如果我使用XML配置IOC容器,自己定义一个类这个类里面的属性想用IOC容器里面的对象初始化,必须提供set/get方法。
2、JSP不能使用el表达式,这个问题要解决
这个问题是缺少jar包的问题要想jsp使用起来不出现问题需要添加下面的包,最上面的包之前添加过了
<!-- servlet的jar包 添加<scope>provided</scope>,因为provided表明该包只在编译和测试的时候用-->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
<scope>provided</scope>
</dependency>
<!--JSP -->
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>2.2</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>taglibs</groupId>
<artifactId>standard</artifactId>
<version>1.1.2</version>
</dependency>
3、mybatis和spring的配置过程还要具体分析
A:这个里面有很多种配置这一次就详细说明一下我们这里使用的sqlSessionFactory和 MapperScannerConfigurer
sqlSessionFactory:创建的时候需要dataSource和mapper.xml的配置文件
MapperScannerConfigurer:可以整体扫描,提供基础的包名可以使用通配符,需要sqlSessionFactoryBeanName用来创建sqlSessionFactory对象再创建SqlSession对象再通过SqlSession对象创建各个mapper对象。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
...爱你你是我的罗密欧 , 我愿意变成你的朱丽叶' 谁知 有句歌词是“我爱你你是我的朱丽叶,我愿意变成你的梁山伯”是哪... 为什么打印出来的文档页码和原来的不一样 ...两台电脑用路由器上网一台是W7一台是XP如何实现两台电脑共享文件 win7怎么联另一台电脑win7怎么让网络和另一台电脑共享 w7的系统怎么共享电脑w7系统里面文件怎么共享另一台电脑 共享win7电脑w7系统里面文件怎么共享另一台电脑 翡翠有收藏价值吗,我们玩家如何去投资 价格一两万元的翡翠如何挑选 ppt怎么转换成视频?简单四步法,轻松搞定ppt微课录制 NC和NO在交流接触器分别是常开和常闭吗? 怎样知道交流接触器常开和常闭? lombok怎样应用于项目中,因为应用于eclipse中需要配置,如果我打包发布lombok还会起作用吗? “NO”与“NC”,哪个是常开、常闭? 开发时使用lombok.jar,直接部署就可以吗 信道复用技术主要有哪四类 一个通信系统中可以同时使用时分复用和频分复用吗? 频分复用和频分多路复用是同一个概念吗?如果不是有区别吗? 频率复用与频分复用是一回事吗 关于频分复用、时分复用、带宽、频率几个概念还是搞不清,还请指教 频分复用的2. 具体解释 波分复用与频分复用的区别? 请问计算机网络中说的频分复用是什么意思啊? 波分复用器和频分复用器的区别? 信道复用方式有哪几种? 可否通俗举例解释一下频分复用? 电脑常识:频分复用技术的定义是? 什么是频分复用? 白日做梦乐呵呵,旁若无人不像话是什么生肖? 白日做梦横对,三在有幸时运转打一生肖 这个交流接触器,常开常闭怎么区分? 手动配置gradle还要等多长 交流接触器上的融点那个是常开那个是常闭 linux怎么安装lombok 如何设置在Android Studio中编译库.LOMBOK 如何用万用表辨别接触器常开常闭触点 接触器怎么分常开常闭和触点 部署SpringBoot+Mybatis+MySql+Bootstrap+Jquery+Lombok项目? cjx21810交流接触器常开和常闭怎么看? tutils-common是什么jar包,功能有哪些 如何制作普通学生名片而且还是在纸上 电气二次图中常开、常闭接点如何标识 lombok安装后eclipse ant build报错 系统之家win7版怎么安装系统 如何判断交流接触器的常开、常闭触点 使用lombok配置bean NotWritablePropertyException 接触器,什么叫常开点,什么叫盏 用lombok.extern的@Slf4j注解,使用log.info的时候,如何打印行号? 常闭常开开关接线图解开关接通的线是接在常开还是常闭 小学一年级学生为自己制作一张简单的名片,名片内容包括:名字,理想,格言,怎么做?