springMVC+mybatis整合

原文地址:http://blog.csdn.net/zangjiwei/article/details/44675001


这次用到了这个数据库框架,要自己整合,顺便把一些个人感觉有坑的地方,按照一遍看懂的模式来做个记录

结构图:


首先来配置spring-mvc.xml

  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  3.     xmlns:context="http://www.springframework.org/schema/context" xmlns:mvc="http://www.springframework.org/schema/mvc"  
  4.     xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd  
  5.         http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd  
  6.         http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd">  
  7.       
  8.     <description>Spring MVC Configuration</description>  
  9.   
  10.     <!-- 启动Springmvc注解驱动 ,主要作用于@Controller激活该模式下面是一种简写形式它会自动注册DefaultAnnotationHandlerMapping与AnnotationMethodHandlerAdapter, 是spring MVC为@Controllers分发请求所必须的   -->     
  11.     <mvc:annotation-driven/>  
  12.     <!-- 使用Annotation自动注册Bean,只扫描@Controller -->  
  13.     <context:component-scan base-package="com.mhsk.controller" use-default-filters="false"><!-- base-package 如果多个,用“,”分隔 -->  
  14.         <context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/>  
  15.     </context:component-scan>  
  16.       
  17.     <!-- 视图文件解析配置 -->  
  18.     <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">  
  19.         <property name="prefix" value="/WEB-INF/jsp/"/>  
  20.         <property name="suffix" value=".jsp"/>  
  21.     </bean>  
  22.     <!-- 上传文件拦截,设置最大上传文件大小   10M=10*1024*1024(B)=10485760 bytes -->    
  23.     <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">    
  24.         <property name="maxUploadSize" value="10485760" />    
  25.     </bean>  
  26. </beans>  

接下来是spring-context.xml

  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  3.     xmlns:context="http://www.springframework.org/schema/context" xmlns:jdbc="http://www.springframework.org/schema/jdbc"    
  4.     xmlns:jee="http://www.springframework.org/schema/jee" xmlns:tx="http://www.springframework.org/schema/tx"  
  5.     xmlns:aop="http://www.springframework.org/schema/aop"  
  6.     xsi:schemaLocation="  
  7.         http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd  
  8.         http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.2.xsd  
  9.         http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd  
  10.         http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-3.2.xsd  
  11.         http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-3.2.xsd  
  12.         http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.2.xsd"  
  13.     default-lazy-init="true">  
  14.       
  15.     <description>Spring Configuration</description>  
  16.       
  17.     <!-- 加载配置文件 -->  
  18.     <context:property-placeholder ignore-unresolvable="true" location="classpath*:/jdbc.properties"/>  
  19.       
  20.     <!-- 使用Annotation自动注册Bean,解决事务失效问题,在主容器中不扫描以@Controller注解,在SpringMVC中只扫描@Controller注解 -->  
  21.     <context:component-scan base-package="com.mhsk.controller">  
  22.         <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/>  
  23.     </context:component-scan>  
  24.       
  25.     <!-- 自动扫描(自动注入) -->  
  26.     <context:component-scan base-package="com.mhsk.service" />  
  27.   
  28. </beans>  

关键配置spring-context-mybatis.xml
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  3.     xmlns:context="http://www.springframework.org/schema/context" xmlns:jdbc="http://www.springframework.org/schema/jdbc"    
  4.     xmlns:jee="http://www.springframework.org/schema/jee" xmlns:tx="http://www.springframework.org/schema/tx"  
  5.     xsi:schemaLocation="  
  6.         http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd  
  7.         http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd  
  8.         http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-3.2.xsd  
  9.         http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-3.2.xsd  
  10.         http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.2.xsd  
  11.         http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.2.xsd"  
  12.     default-lazy-init="true">  
  13.       
  14.     <description>Mybatis Configuration</description>  
  15.       
  16.     <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">  
  17.         <property name="driverClassName">  
  18.           <value>${jdbc_driverClassName}</value>  
  19.         </property>  
  20.         <property name="url">  
  21.           <value>${jdbc_url}</value>  
  22.         </property>  
  23.         <property name="username">  
  24.           <value>${jdbc_username}</value>  
  25.         </property>  
  26.         <property name="password">  
  27.           <value>${jdbc_password}</value>  
  28.         </property>  
  29.         <!-- 连接属性 -->  
  30.         <property name="connectionProperties">  
  31.           <value>clientEncoding=UTF-8</value>  
  32.         </property>  
  33.     </bean>    
  34.       
  35.       
  36.       
  37.     <!-- Mybatis begin -->  
  38.      <!-- myBatis文件 -->  
  39.     <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">  
  40.         <property name="dataSource" ref="dataSource" />  
  41.         <!-- 自动扫描entity目录, 省掉Configuration.xml里的手工配置 -->  
  42.         <property name="configLocation" value="classpath:mybatis-config.xml" />         
  43.     </bean>  
  44.     <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">  
  45.         <property name="basePackage" value="com.mhsk.dao" />  
  46.         <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" />  
  47.     </bean>  
  48.     <!-- Mybatis end -->  
  49.       
  50.     <!-- 配置事务管理器 -->  
  51.    <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">  
  52.         <property name="dataSource" ref="dataSource" />  
  53.     </bean>  
  54.       
  55.       
  56. </beans>  

这里最关键的就是配置sqlsessionfactory,还有就是mapper.xml的路径

这里配置的时候老是找不到mapper,

<property name="configLocation" value="classpath:mybatis-config.xml" />

这里是把mapper配置到mybatis-config.xml,如果你感觉麻烦,也可以配成<property name="mapperLocations" value="classpath*:com/mhsk/dao/*.xml" />

但是注意,这里如果换成这种配置的话,要把mapper文件和dao借口放在一个包里


mybatis-config.xml


  1. <?xml version="1.0" encoding="UTF-8" ?>  
  2. <!DOCTYPE configuration  
  3. PUBLIC "-//mybatis.org//DTD Config 3.0//EN"  
  4. "http://mybatis.org/dtd/mybatis-3-config.dtd">  
  5. <configuration>  
  6.     <typeAliases>  
  7.         <!-- give a alias for model -->  
  8.         <typeAlias alias="mhskUser" type="com.mhsk.model.MhskUser"></typeAlias>  
  9.     </typeAliases>  
  10.     <mappers>  
  11.          <mapper resource="com/mhsk/mapper/MhskUsermapper.xml" />   
  12.     </mappers>  
  13. </configuration>  


OK,最主要的都配置完了,jdbc和日志就不写了



MhskUser实体类

  1. package com.mhsk.model;  
  2.   
  3. public class MhskUser {  
  4.     private Integer id;  
  5.     private String user_name;  
  6.     private String password;  
  7.     private Integer pageNow;  
  8.     private Integer pageSize;  
  9.       
  10.     public Integer getPageNow() {  
  11.         return pageNow;  
  12.     }  
  13.     public void setPageNow(Integer pageNow) {  
  14.         this.pageNow = pageNow;  
  15.     }  
  16.     public Integer getPageSize() {  
  17.         return pageSize;  
  18.     }  
  19.     public void setPageSize(Integer pageSize) {  
  20.         this.pageSize = pageSize;  
  21.     }  
  22.     public Integer getId() {  
  23.         return id;  
  24.     }  
  25.     public void setId(Integer id) {  
  26.         this.id = id;  
  27.     }  
  28.     public String getUser_name() {  
  29.         return user_name;  
  30.     }  
  31.     public void setUser_name(String user_name) {  
  32.         this.user_name = user_name;  
  33.     }  
  34.     public String getPassword() {  
  35.         return password;  
  36.     }  
  37.     public void setPassword(String password) {  
  38.         this.password = password;  
  39.     }  
  40.       
  41. }  


dao:

  1. package com.mhsk.dao;  
  2.   
  3. import java.util.List;  
  4.   
  5.   
  6.   
  7. import com.mhsk.model.MhskUser;  
  8.   
  9. //@MyBatisDao  
  10. public interface MhskUserMapper {  
  11.         public List<MhskUser> save();  
  12.         public void delete(int id);  
  13.         public void insert(MhskUser mhskUser);  
  14.         public void update(MhskUser mhskUser);  
  15. }  

mapper.xml
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"  
  3.     "http://mybatis.org/dtd/mybatis-3-mapper.dtd">  
  4.     <mapper namespace="com.mhsk.dao.MhskUserMapper">  
  5.     <!-- 查询所有mhskUser 返回resultMap类型-->  
  6.     <resultMap type="com.mhsk.model.MhskUser" id="mhskUserResult">  
  7.     <result column="id" property="id" />  
  8.     <result column="user_name" property="user_name" />  
  9.     <result column="password" property="password" />  
  10.     <result column="pageNow" property="pageNow" />  
  11.     <result column="pageSize" property="pageSize" />  
  12.     </resultMap>  
  13.       
  14.       
  15.     <select id="save" resultMap="mhskUserResult">  
  16.         select * from mhsk_user   
  17.     </select>  
  18.     <!-- 新增mhskUser 参数类型为mhskUser-->  
  19.     <insert id="insert" parameterType="mhskUser">  
  20.         insert into mhsk_user(id,user_name,password)   
  21.         values(#{id},#{user_name},#{password})  
  22.     </insert>  
  23.     <!-- 更新mhskUser 参数类型为mhskUser-->  
  24.     <update id="update" parameterType="mhskUser">  
  25.         update mhsk_user   
  26.         set mhsk_user.user_name = #{user_name},mhsk_user.password =#{password}  
  27.         where mhsk_user.id=#{id}  
  28.     </update>  
  29.     <!-- 删除mhskUser 参数类型为int-->  
  30.     <delete id="delete" parameterType="int">  
  31.         delete from mhsk_user  
  32.         where mhsk_user.id = #{id}  
  33.     </delete>  
  34. </mapper>  

MhskUserService接口
  1. package com.mhsk.service;  
  2.   
  3. import java.util.List;  
  4.   
  5. import com.mhsk.model.MhskUser;  
  6.   
  7.   
  8. public interface MhskUserService {  
  9.       
  10.     public List<MhskUser> save();  
  11.       
  12.     public void delete(int id);  
  13.       
  14.     public void update(MhskUser mhskUser);  
  15.       
  16.     public void insert(MhskUser mhskUser);  
  17. }  

MhskUserServiceImpl实现类
  1. package com.mhsk.service.impl;  
  2.   
  3. import java.util.List;  
  4.   
  5. import org.springframework.beans.factory.annotation.Autowired;  
  6. import org.springframework.stereotype.Service;  
  7.   
  8. import com.mhsk.dao.MhskUserMapper;  
  9. import com.mhsk.model.MhskUser;  
  10. import com.mhsk.service.MhskUserService;  
  11.   
  12.   
  13. @Service(value="mhskUserService")  
  14. public class MhskUserServiceImpl implements MhskUserService {  
  15.     @Autowired  
  16.     private MhskUserMapper mhskUserMapper;  
  17.       
  18.     @Override  
  19.     public List<MhskUser> save() {      
  20.               
  21.         return mhskUserMapper.save();  
  22.     }  
  23.   
  24.     @Override  
  25.     public void delete(int id) {  
  26.         mhskUserMapper.delete(id);  
  27.   
  28.     }  
  29.   
  30.     @Override  
  31.     public void update(MhskUser mhskUser) {  
  32.         mhskUserMapper.update(mhskUser);  
  33.   
  34.     }  
  35.   
  36.     @Override  
  37.     public void insert(MhskUser mhskUser) {  
  38.         mhskUserMapper.insert(mhskUser);  
  39.   
  40.     }  
  41.   
  42. }  

MhskUserController 
  1. package com.mhsk.controller;  
  2.   
  3. import java.util.List;  
  4.   
  5. import javax.annotation.Resource;  
  6. import javax.servlet.http.HttpServletRequest;  
  7.   
  8. import org.springframework.stereotype.Controller;  
  9. import org.springframework.web.bind.annotation.RequestMapping;  
  10. import org.springframework.web.servlet.ModelAndView;  
  11.   
  12. import com.mhsk.model.MhskUser;  
  13. import com.mhsk.service.MhskUserService;  
  14.   
  15. @Controller  
  16. @RequestMapping(value="mhskUser")  
  17. public class MhskUserController {  
  18.     @Resource(name="mhskUserService")  
  19.     private MhskUserService mhskUserService;  
  20.       
  21.   
  22.         @RequestMapping(value="select")  
  23.         public ModelAndView login(HttpServletRequest request){  
  24.             List<MhskUser> mhskUser=mhskUserService.save();  
  25.             request.setAttribute("mhskUser", mhskUser);  
  26.             ModelAndView mv = new ModelAndView("login");  
  27.             return mv;  
  28.         }  
  29.         @RequestMapping(value="page")  
  30.         public ModelAndView page(HttpServletRequest request,int pageNow,int pageSize){  
  31.             List<MhskUser> mhskUser=mhskUserService.save();  
  32.             request.setAttribute("mhskUser", mhskUser);  
  33.             ModelAndView mv = new ModelAndView("login");  
  34.             return mv;  
  35.         }  
  36.         @RequestMapping(value="delete")  
  37.         public ModelAndView delete(HttpServletRequest request,int id){  
  38.             mhskUserService.delete(id);  
  39.             List<MhskUser> mhskUser=mhskUserService.save();  
  40.             request.setAttribute("mhskUser", mhskUser);  
  41.             ModelAndView mv = new ModelAndView("login");  
  42.             return mv;  
  43.         }  
  44.         @RequestMapping(value="addall")  
  45.         public ModelAndView addall(){  
  46.             ModelAndView mv = new ModelAndView("add");  
  47.             return mv;  
  48.         }  
  49.         @RequestMapping(value="add")  
  50.         public ModelAndView add(HttpServletRequest request,String user_name,String password){  
  51.             MhskUser mhskUser=new MhskUser();  
  52.             mhskUser.setUser_name(user_name);  
  53.             mhskUser.setPassword(password);  
  54.             mhskUserService.insert(mhskUser);  
  55.             List<MhskUser> mhskUserall=mhskUserService.save();  
  56.             request.setAttribute("mhskUser", mhskUserall);  
  57.             ModelAndView mv = new ModelAndView("login");  
  58.             return mv;  
  59.         }  
  60.         @RequestMapping(value="updateall")  
  61.         public ModelAndView selectbyid(HttpServletRequest request,String user_name,String password){  
  62.             System.out.println(user_name);  
  63.             System.out.println(password);  
  64.             request.setAttribute("user_name", user_name);  
  65.             request.setAttribute("password", password);  
  66.             ModelAndView mv = new ModelAndView("update");  
  67.             return mv;  
  68.         }  
  69.         @RequestMapping(value="update")  
  70.         public ModelAndView update(HttpServletRequest request,String user_name,String password){  
  71.             MhskUser mhskUser=new MhskUser();  
  72.             mhskUser.setUser_name(user_name);  
  73.             mhskUser.setPassword(password);  
  74.             mhskUserService.update(mhskUser);  
  75.             List<MhskUser> mhskUserll=mhskUserService.save();  
  76.             request.setAttribute("mhskUser", mhskUserll);  
  77.             ModelAndView mv = new ModelAndView("login");  
  78.             return mv;  
  79.             }  
  80.         }  

login.jsp
  1. <%@ page language="java" contentType="text/html" pageEncoding="utf-8"%>  
  2. <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>  
  3. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">  
  4. <html>  
  5. <head>  
  6. <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">  
  7. <title>Insert title here</title>  
  8. </head>  
  9. <body>  
  10.     <a href="http://localhost:8080/mhsk_bzhang/mhskUser/addall.do">新增</a></br>  
  11.     <c:forEach items="${mhskUser}" var="item">    
  12.        <td>${item.id }</td>  
  13.        <td>${item.user_name }</td>  
  14.        <td>${item.password }</td>  
  15.        <td><a href="http://localhost:8080/mhsk_bzhang/mhskUser/delete.do?id=${item.id}">删除</a></td>  
  16.        <td><a href="http://localhost:8080/mhsk_bzhang/mhskUser/updateall.do?user_name=${item.user_name}&password=${item.password}&id=${item.id}">修改</a></td>  
  17.        </br>  
  18.     </c:forEach>  
  19.       
  20.     <a href="http://localhost:8080/mhsk_bzhang/mhskUser/page.do?pageNow=${item[1].id-5}&pageSize=5">上一页</a>  
  21.     <a href="http://localhost:8080/mhsk_bzhang/mhskUser/page.do?pageNow=${item[1].id+5}&pageSize=5">下一页</a>  
  22. </body>  
  23. </html>  

OK 大部分就写完了

写几个需要注意的地方:

mapper.xml中<mapper namespace="com.mhsk.dao.MhskUserMapper">属性找的是mapper,

  1. <resultMap type="com.mhsk.model.MhskUser" id="mhskUserResult">  
  2.     <result column="id" property="id" />  
  3.     <result column="user_name" property="user_name" />  
  4.     <result column="password" property="password" />  
  5.     <result column="pageNow" property="pageNow" />  
  6.     <result column="pageSize" property="pageSize" />  
  7.     </resultMap>  
这里的resultmap type找的实体类,起了个id叫 mhskUserResult

parameterType="mhskUser" 为参数的类型  例如根据id查询 就应该这样写parameterType="Java.lang.Integer"


问题来了,这里只让传一个参数,传2个的话接不到,比如分页,要传过来2个int


那就在dao接口里这样写

public List<MhskUser> select (@Param(value="startRow")int startRow,@Param(value="pageSize")int pageSize);

把参数注进来就可以接到,测试通过了的

另外service层必须要写接口,不然就会报错,不知道为什么


OK 写完了,为自己留存~~~

整个项目下载地址 :http://download.csdn.NET/detail/zangjiwei/8538983



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值