标签:spring springmvc mybatis mysql 整合
林炳文Evankaka原创作品。转载请注明出处http://blog.csdn.net/evankaka
本文要实现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
最终整个工程目录如下:
需要导入的包
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);
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 + "]"; } }
<?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>
package com.mucfc.mapper; import com.mucfc.model.User; /** * Mapper映射类 * @author linbingwen * @time 2015.5.15 */ public interface UserMapper { public User selectUserById(int userId); }
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>
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>
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>
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"; } }根据浏览器输入的网址,定位到不同的页面中去
由于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 整合
原文地址:http://blog.csdn.net/evankaka/article/details/45790533