SpringMVC+Mybatis+MySQL项目搭建
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
[置顶] Spring+SpringMVC+Mybatis+Mysql整合实例
标签:SpringSpringMVCMybatisMysql整合
2015-05-17 18:06 2183人阅读评论(10) 收藏举报分类:
Spring(24)
版权声明:本文为博主林炳文Evankaka原创文章,转载请注明出处/evankaka
目录(?)[+]林炳文Evankaka原创作品。
转载请注明出处/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本文工程免费下载
一、创建Web项目
最终整个工程目录如下:
需要导入的包
二、创建库表映射类并配置MyBatis
1、首先在数据库中创建一张表t_user
[sql]view plain copy
1use test;
2DROP TABLE IF EXISTS t_user;
3create table t_user
4(
5 userId int primary key auto_increment,
6 userName VARCHAR(50) not null,
7 userAge int not null
8);
然后插入4条数据:
[sql]view plain copy
9insert into t_user values(1,'小王',10);
10insert into t_user values(2,'红红',11);
11insert into t_user values(3,'明明',12);
12insert into t_user values(4,'天天',13);
查看下结果:
2、表创建好之后便创建其映射类User,位于包com.mucfc.model中[java]view plain copy
13package com.mucfc.model;
14/**
15 * User映射类
16 * @author linbingwen
17 * @time 2015.5.15
18 */
19public class User {
20private Integer userId;
21private String userName;
22private int userAge;
23public Integer getUserId() {
24return userId;
25 }
26public void setUserId(Integer userId) {
erId = userId;
28 }
29public String getUserName() {
30return userName;
31 }
32public void setUserName(String userName) {
erName = userName;
34 }
35public int getUserAge() {
36return userAge;
37 }
38public void setUserAge(int userAge) {
erAge = userAge;
40 }
41@Override
42public String toString() {
43return"User [userId=" + userId + ", userName=" + userName
44 + ", userAge=" + userAge + "]";
45 }
46
47}
2、映射类创建好之后便创建MyBatis映射文件(即Mapper文件),位于和src同级的conf的mapper包中,文件内容如下:[html]view plain copy
48<?xml version="1.0"encoding="UTF-8"?>
49<!DOCTYPE mapper PUBLIC "-////DTD Mapper 3.0//EN"
50"/dtd/mybatis-3-mapper.dtd">
51<mapper namespace="erMapper">
52<!-- 查询单条记录 -->
53<select id="selectUserById"parameterType="int"resultType="User">
54 select * from t_user where userId = #{userId}
55</select>
56</mapper>
3、创建映射UserMapper类如下,位于包com.mucfc.mapper中[java] view plain copy
57package com.mucfc.mapper;
58
59import er;
60/**
61 * Mapper映射类
62 * @author linbingwen
63 * @time 2015.5.15
64 */
65public interface UserMapper {
66public User selectUserById(int userId);
67
68}
4、创建操作数据的DAO层[java]view plain copy
69package com.mucfc.dao;
70
71import er;
72/**
73 * DAO接口层
74 * @author linbingwen
75 * @time 2015.5.15
76 */
77public interface UserDao {
78/**
79 * 根据用户ID查询用户信息
80 * @param id
81 * @return
82 */
83public User findUserById(int id);
84}
然后是对应的实现层[java]view plain copy
85package com.mucfc.dao;
86
87import org.springframework.beans.factory.annotation.Autowired;
88import ponent;
89import erMapper;
90import er;
91/**
92 * DAO实现层
93 * @author linbingwen
94 * @time 2015.5.15
95 */
96@Component
97public class UserDaoImpl implements UserDao{
98@Autowired
99private UserMapper userMapper;
100@Override
101public User findUserById(int id) {
102 User user = userMapper.selectUserById(id);
103return user;
104 }
105
106}
5、在conf里配置Mybatis的配置文件:MyBatisConf.xmll放在conf里,注意路径
[java]view plain copy
107<?xml version="1.0" encoding="UTF-8"?>
108<!DOCTYPE configuration PUBLIC "-////DTD Config 3.0//EN"
109"/dtd/mybatis-3-config.dtd">
110<configuration>
111 <!-- 配置映射类的别名 -->
112 <typeAliases>
113 <typeAlias alias="User" type="er"/>
114 </typeAliases>
115 <!-- 配置Mapper文件的路径 -->
116 <mappers>
117 <mapper resource="mapper/UserMapper.xml"/>
118 </mappers>
119</configuration>
如果不与Spring进行整合的话,此配置文件还需要配置数据源信息,与Spring整合之后数据源就配置在Spring配置文件中,只需要配置映射文件的路径就可以了。
三、配置Spring
1、在conf里创建Spring的配置文件:(conf是和src同级的文件夹)SpringConf.xml放在conf里,注意路径[html]view plain copy
120<?xml version="1.0"encoding="UTF-8"?>
121<beans xmlns="/schema/beans"
122xmlns:xsi="/2001/XMLSchema-instance"
xmlns:context="/schema/context"
123xmlns:aop="/schema/aop"
124xsi:schemaLocation="
125 /schema/beans
126 /schema/beans/spring-beans-3.2.xsd 127 /schema/aop
128 /schema/aop/spring-aop-3.2.xsd
129 /schema/context
130
/schema/context/spring-context-3.2.xsd">
131<!-- 配置数据源 -->
132<bean id="dataSource"
133class="org.springframework.jdbc.datasource.DriverManagerDataSource"> 134<property name="driverClassName"value="com.mysql.jdbc.Driver"/>
135<property name="url"value="jdbc:mysql://localhost:3306/test"/>
136<property name="username"value="root"/>
137<property name="password"value="christmas258@"/>
138</bean>
139
140
141<bean id="sqlSessionFactory"
class="org.mybatis.spring.SqlSessionFactoryBean">
142<property name="dataSource"ref="dataSource"/>
143<property name="configLocation"value="classpath:MyBatisConf.xml"/> 144 <!-- <property name="typeAliasesPackage"
value="com.tiantian.ckeditor.model"
145/> -->
146</bean>
147
148<bean id="userMapper"
class="org.mybatis.spring.mapper.MapperFactoryBean">
149<property name="mapperInterface"
150value="erMapper"/>
151<property name="sqlSessionFactory"ref="sqlSessionFactory"/>
152</bean>
153<!-- 自动扫描注解的bean -->
154<context:component-scan base-package="com.mucfc.dao"/>
155
156</beans>
2、web.xml中启动Spring web.xml放在WEB-INF里
[html]view plain copy
157<?xml version="1.0"encoding="UTF-8"?>
158<web-app version="2.5"xmlns="/xml/ns/javaee"
159xmlns:xsi="/2001/XMLSchema-instance"
160xsi:schemaLocation="/xml/ns/javaee
161 /xml/ns/javaee/web-app_2_5.xsd">
162<!-- 配置初始打开的页面 -->
163<!-- <welcome-file-list>
164<welcome-file>index.html</welcome-file>
165<welcome-file>index.htm</welcome-file>
166<welcome-file>index.jsp</welcome-file>
167</welcome-file-list> -->
168
169<!-- Spring 容器加载 -->
170<listener>
171
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
172</listener>
173<context-param>
174<param-name>contextConfigLocation</param-name>
175<param-value>classpath:SpringConf.xml</param-value>
176</context-param>
177
178</web-app>
其实到这里就完成了Spring+Mybatis的配置中,可以在JSP中通过Spring中创建的bean来操作数据库了四、配置SpringMVC 1、首先应该先更改web.xml,在里面设置拦截的内容
[html]view plain copy
179<?xml version="1.0"encoding="UTF-8"?>
180<web-app version="2.5"xmlns="/xml/ns/javaee"
181xmlns:xsi="/2001/XMLSchema-instance"
182xsi:schemaLocation="/xml/ns/javaee
183 /xml/ns/javaee/web-app_2_5.xsd">
184<!-- 配置初始打开的页面 -->
185<!-- <welcome-file-list>
186<welcome-file>index.html</welcome-file>
187<welcome-file>index.htm</welcome-file>
188<welcome-file>index.jsp</welcome-file>
189</welcome-file-list> -->
190
191<!-- Spring 容器加载 -->
192<listener>
193
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
194</listener>
195<context-param>
196<param-name>contextConfigLocation</param-name>
197<param-value>classpath:SpringConf.xml</param-value>
198</context-param>
199
200<!-- SpringMVC的前端控制器 -->
201<servlet>
202<servlet-name>MyDispatcher</servlet-name>
203
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 204<!-- 加载配置文件路径 -->
205<init-param>
206<param-name>contextConfigLocation</param-name>
207<param-value>classpath:SpringMVC-servlet.xml</param-value>
208</init-param>
209<!-- 何时启动大于0的值表示容器启动时初始化此servlet,正值越小优先级越高-->
210<load-on-startup>1</load-on-startup>
211</servlet>
212<!-- Spring MVC配置文件结束 -->
213
214<!-- SpringMVC拦截设置 -->
215<servlet-mapping>
216<servlet-name>MyDispatcher</servlet-name>
217<!-- 由SpringMVC拦截所有请求 -->
218<url-pattern>/</url-pattern>
219</servlet-mapping>
220<!-- SpringMVC拦截设置结束 -->
221
222<!--解决中文乱码问题 -->
223<filter>
224<filter-name>CharacterEncodingFilter</filter-name>
225
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-cla ss>
226<init-param>
227<param-name>encoding</param-name>
228<param-value>UTF-8</param-value>
229</init-param>
230</filter>
231<filter-mapping>
232<filter-name>CharacterEncodingFilter</filter-name>
233<url-pattern>/*</url-pattern>
234</filter-mapping>
235
236</web-app>
2、在conf里创建SpringMVC的配置文件:(conf是和src同级的文件夹)
[html]view plain copy
237<beans xmlns="/schema/beans"
238xmlns:context="/schema/context"
239xmlns:util="/schema/util"
xmlns:xsi="/2001/XMLSchema-instance"
240xmlns:p="/schema/p"
xmlns:mvc="/schema/mvc"
241xsi:schemaLocation="
242 /schema/util
243 /schema/util/spring-util-3.2.xsd
244 /schema/mvc
245 /schema/mvc/spring-mvc-3.2.xsd
246 /schema/beans
247 /schema/beans/spring-beans-3.2.xsd 248 /schema/context
249
/schema/context/spring-context-3.2.xsd">
250<mvc:annotation-driven/>
251<!-- 把标记了@Controller注解的类转换为bean -->
252<context:component-scan base-package="com.mucfc.controller"/>
253<!-- 对模型视图名称的解析,即在模型视图名称添加前后缀 -->
254<bean
255
class="org.springframework.web.servlet.view.InternalResourceViewResolver"
256p:prefix="/WEB-INF/views/"p:suffix=".jsp"/>
257
258
259</beans>
3、注解@conroller类的实现com.mucfc.controller包下新建UserController.java
[java]view plain copy
260package com.mucfc.controller;
261
262import org.springframework.stereotype.Controller;
263import org.springframework.web.bind.annotation.RequestMapping;
264import org.springframework.web.bind.annotation.RequestMethod;
265
266@Controller
267public class UserController {
268@RequestMapping(value="/findUser",method = RequestMethod.POST)
269public String getUser(){
270return"findUser";
271 }
272@RequestMapping("/")
273public String getIndex(){
274return"index";
275 }
276
277}
根据浏览器输入的网址,定位到不同的页面中去
五、JSP页面创建
由于SpringMVC配置了p:prefix="/WEB-INF/views/" p:suffix=".jsp" /。
所以要在WEB-INF中创建文件夹views,然后在这里放置JSP文件首先是index.jsp
[html]view plain copy
278<%@ page language="java"contentType="text/html; charset=UTF-8"
279pageEncoding="UTF-8"%>
280<%@ taglib prefix="form"uri="/tags/form"%> 281<%
282 String path = request.getContextPath();
283 String basePath = request.getScheme() + "://"
284 + request.getServerName() + ":" + request.getServerPort()
285 + path + "/";
286%>
287<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"/TR/html4/loose.dtd">
288<html>
289<head>
290<title>查找用户信息</title>
291<base href="<%=basePath%>">
292<meta http-equiv="Content-Type"content="text/html; charset=UTF-8">
293</head>
294<body>
295<center>
296<form action="findUser"method="post">
297请输入用户ID:<input type="text"name="id">
298<input type="submit"value="确定">
299</form>
300</center>
301</body>
302</html>
将数据传递给findUser.jsp
findUser.jsp内容如下
[html]view plain copy
303<%@ page import="erDao"%>
304<%@page import="org.springframework.web.context.WebApplicationContext"%> 305<%@page
import="org.springframework.web.context.support.WebApplicationContextUtils"%> 306<%@ page language="java"contentType="text/html"pageEncoding="UTF-8"%> 307
308<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"/TR/html4/loose.dtd">
309<html>
310<head>
311<title>Insert title here</title>
312</head>
313<body>
314<center>
315通过controller访问<br/>
316欢迎<br/>
317<%
318 WebApplicationContext wac = WebApplicationContextUtils
319 .getWebApplicationContext(this.getServletContext());
320 UserDao userDao = (UserDao) wac.getBean("userDaoImpl");
321 String in=(String)request.getParameter("id");
322 System.out.println(in);
323 int num=Integer.parseInt(in);
324 %>
325<%=userDao.findUserById(num)%><br/>
326<%-- <%=userDao.findUserById(2)%><br/>
327<%=userDao.findUserById(3)%><br/>
328<%=userDao.findUserById(4)%><br/> --%>
329</center>
330</body>
331</html>
根据输入的id,来查找数据库中是否有这个人
六、运行
输入1
结果表明这个人存在
输入5,不存在这个人
林炳文Evankaka原创作品。
转载请注明出处/evankaka。