springMVC+mybatis整合(新手)

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

结构图:


首先来配置spring-mvc.xml

<?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/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">
    
	<description>Spring MVC Configuration</description>

	<!-- 启动Springmvc注解驱动 ,主要作用于@Controller激活该模式下面是一种简写形式它会自动注册DefaultAnnotationHandlerMapping与AnnotationMethodHandlerAdapter, 是spring MVC为@Controllers分发请求所必须的   -->   
    <mvc:annotation-driven/>
	<!-- 使用Annotation自动注册Bean,只扫描@Controller -->
	<context:component-scan base-package="com.mhsk.controller" use-default-filters="false"><!-- base-package 如果多个,用“,”分隔 -->
		<context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
	</context:component-scan>
	
	<!-- 视图文件解析配置 -->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
		<property name="prefix" value="/WEB-INF/jsp/"/>
		<property name="suffix" value=".jsp"/>
	</bean>
	<!-- 上传文件拦截,设置最大上传文件大小   10M=10*1024*1024(B)=10485760 bytes -->  
    <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">  
        <property name="maxUploadSize" value="10485760" />  
    </bean>
</beans>


接下来是spring-context.xml

<?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:jdbc="http://www.springframework.org/schema/jdbc"  
	xmlns:jee="http://www.springframework.org/schema/jee" xmlns:tx="http://www.springframework.org/schema/tx"
	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
		http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-3.2.xsd
		http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-3.2.xsd
		http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.2.xsd"
	default-lazy-init="true">
	
	<description>Spring Configuration</description>
	
	<!-- 加载配置文件 -->
	<context:property-placeholder ignore-unresolvable="true" location="classpath*:/jdbc.properties"/>
	
	<!-- 使用Annotation自动注册Bean,解决事务失效问题,在主容器中不扫描以@Controller注解,在SpringMVC中只扫描@Controller注解 -->
	<context:component-scan base-package="com.mhsk.controller">
		<context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
	</context:component-scan>
	
	<!-- 自动扫描(自动注入) -->
	<context:component-scan base-package="com.mhsk.service" />

</beans>

关键配置spring-context-mybatis.xml

<?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:jdbc="http://www.springframework.org/schema/jdbc"  
	xmlns:jee="http://www.springframework.org/schema/jee" 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/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-3.2.xsd
		http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-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/util http://www.springframework.org/schema/util/spring-util-3.2.xsd"
	default-lazy-init="true">
	
	<description>Mybatis Configuration</description>
	
	<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="driverClassName">
          <value>${jdbc_driverClassName}</value>
        </property>
        <property name="url">
          <value>${jdbc_url}</value>
        </property>
        <property name="username">
          <value>${jdbc_username}</value>
        </property>
        <property name="password">
          <value>${jdbc_password}</value>
        </property>
        <!-- 连接属性 -->
        <property name="connectionProperties">
          <value>clientEncoding=UTF-8</value>
        </property>
    </bean>  
	
	
	
	<!-- Mybatis begin -->
	 <!-- myBatis文件 -->
	<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
		<property name="dataSource" ref="dataSource" />
		<!-- 自动扫描entity目录, 省掉Configuration.xml里的手工配置 -->
		<property name="configLocation" value="classpath:mybatis-config.xml" />		
	</bean>
	<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
		<property name="basePackage" value="com.mhsk.dao" />
		<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" />
	</bean>
    <!-- Mybatis end -->
    
    <!-- 配置事务管理器 -->
   <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
		<property name="dataSource" ref="dataSource" />
	</bean>
	
	
</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


<?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>
        <!-- give a alias for model -->
        <typeAlias alias="mhskUser" type="com.mhsk.model.MhskUser"></typeAlias>
    </typeAliases>
    <mappers>
         <mapper resource="com/mhsk/mapper/MhskUsermapper.xml" /> 
    </mappers>
</configuration>


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



MhskUser实体类

package com.mhsk.model;

public class MhskUser {
	private Integer id;
	private String user_name;
	private String password;
	private Integer pageNow;
	private Integer pageSize;
	
	public Integer getPageNow() {
		return pageNow;
	}
	public void setPageNow(Integer pageNow) {
		this.pageNow = pageNow;
	}
	public Integer getPageSize() {
		return pageSize;
	}
	public void setPageSize(Integer pageSize) {
		this.pageSize = pageSize;
	}
	public Integer getId() {
		return id;
	}
	public void setId(Integer id) {
		this.id = id;
	}
	public String getUser_name() {
		return user_name;
	}
	public void setUser_name(String user_name) {
		this.user_name = user_name;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	
}


dao:

package com.mhsk.dao;

import java.util.List;



import com.mhsk.model.MhskUser;

//@MyBatisDao
public interface MhskUserMapper {
	    public List<MhskUser> save();
	 	public void delete(int id);
	 	public void insert(MhskUser mhskUser);
	 	public void update(MhskUser mhskUser);
}

mapper.xml

<?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.mhsk.dao.MhskUserMapper">
    <!-- 查询所有mhskUser 返回resultMap类型-->
    <resultMap type="com.mhsk.model.MhskUser" id="mhskUserResult">
	<result column="id" property="id" />
	<result column="user_name" property="user_name" />
	<result column="password" property="password" />
	<result column="pageNow" property="pageNow" />
	<result column="pageSize" property="pageSize" />
	</resultMap>
	
	
    <select id="save" resultMap="mhskUserResult">
        select * from mhsk_user 
    </select>
    <!-- 新增mhskUser 参数类型为mhskUser-->
    <insert id="insert" parameterType="mhskUser">
        insert into mhsk_user(id,user_name,password) 
        values(#{id},#{user_name},#{password})
    </insert>
    <!-- 更新mhskUser 参数类型为mhskUser-->
    <update id="update" parameterType="mhskUser">
        update mhsk_user 
        set mhsk_user.user_name = #{user_name},mhsk_user.password =#{password}
        where mhsk_user.id=#{id}
    </update>
    <!-- 删除mhskUser 参数类型为int-->
    <delete id="delete" parameterType="int">
        delete from mhsk_user
        where mhsk_user.id = #{id}
    </delete>
</mapper>

MhskUserService接口

package com.mhsk.service;

import java.util.List;

import com.mhsk.model.MhskUser;


public interface MhskUserService {
	
	public List<MhskUser> save();
	
	public void delete(int id);
	
	public void update(MhskUser mhskUser);
	
	public void insert(MhskUser mhskUser);
}

MhskUserServiceImpl实现类

package com.mhsk.service.impl;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.mhsk.dao.MhskUserMapper;
import com.mhsk.model.MhskUser;
import com.mhsk.service.MhskUserService;


@Service(value="mhskUserService")
public class MhskUserServiceImpl implements MhskUserService {
	@Autowired
	private MhskUserMapper mhskUserMapper;
	
	@Override
	public List<MhskUser> save() {	
			
		return mhskUserMapper.save();
	}

	@Override
	public void delete(int id) {
		mhskUserMapper.delete(id);

	}

	@Override
	public void update(MhskUser mhskUser) {
		mhskUserMapper.update(mhskUser);

	}

	@Override
	public void insert(MhskUser mhskUser) {
		mhskUserMapper.insert(mhskUser);

	}

}

MhskUserController 

package com.mhsk.controller;

import java.util.List;

import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;

import com.mhsk.model.MhskUser;
import com.mhsk.service.MhskUserService;

@Controller
@RequestMapping(value="mhskUser")
public class MhskUserController {
	@Resource(name="mhskUserService")
	private MhskUserService mhskUserService;
	

		@RequestMapping(value="select")
		public ModelAndView login(HttpServletRequest request){
			List<MhskUser> mhskUser=mhskUserService.save();
			request.setAttribute("mhskUser", mhskUser);
			ModelAndView mv = new ModelAndView("login");
			return mv;
		}
		@RequestMapping(value="page")
		public ModelAndView page(HttpServletRequest request,int pageNow,int pageSize){
			List<MhskUser> mhskUser=mhskUserService.save();
			request.setAttribute("mhskUser", mhskUser);
			ModelAndView mv = new ModelAndView("login");
			return mv;
		}
		@RequestMapping(value="delete")
		public ModelAndView delete(HttpServletRequest request,int id){
			mhskUserService.delete(id);
			List<MhskUser> mhskUser=mhskUserService.save();
			request.setAttribute("mhskUser", mhskUser);
			ModelAndView mv = new ModelAndView("login");
			return mv;
		}
		@RequestMapping(value="addall")
		public ModelAndView addall(){
			ModelAndView mv = new ModelAndView("add");
			return mv;
		}
		@RequestMapping(value="add")
		public ModelAndView add(HttpServletRequest request,String user_name,String password){
			MhskUser mhskUser=new MhskUser();
			mhskUser.setUser_name(user_name);
			mhskUser.setPassword(password);
			mhskUserService.insert(mhskUser);
			List<MhskUser> mhskUserall=mhskUserService.save();
			request.setAttribute("mhskUser", mhskUserall);
			ModelAndView mv = new ModelAndView("login");
			return mv;
		}
		@RequestMapping(value="updateall")
		public ModelAndView selectbyid(HttpServletRequest request,String user_name,String password){
			System.out.println(user_name);
			System.out.println(password);
			request.setAttribute("user_name", user_name);
			request.setAttribute("password", password);
			ModelAndView mv = new ModelAndView("update");
			return mv;
		}
		@RequestMapping(value="update")
		public ModelAndView update(HttpServletRequest request,String user_name,String password){
			MhskUser mhskUser=new MhskUser();
			mhskUser.setUser_name(user_name);
			mhskUser.setPassword(password);
			mhskUserService.update(mhskUser);
			List<MhskUser> mhskUserll=mhskUserService.save();
			request.setAttribute("mhskUser", mhskUserll);
			ModelAndView mv = new ModelAndView("login");
			return mv;
			}
		}

login.jsp

<%@ page language="java" contentType="text/html" pageEncoding="utf-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
	<a href="http://localhost:8080/mhsk_bzhang/mhskUser/addall.do">新增</a></br>
	<c:forEach items="${mhskUser}" var="item">  
       <td>${item.id }</td>
       <td>${item.user_name }</td>
       <td>${item.password }</td>
       <td><a href="http://localhost:8080/mhsk_bzhang/mhskUser/delete.do?id=${item.id}">删除</a></td>
       <td><a href="http://localhost:8080/mhsk_bzhang/mhskUser/updateall.do?user_name=${item.user_name}&password=${item.password}&id=${item.id}">修改</a></td>
       </br>
	</c:forEach>
	
	<a href="http://localhost:8080/mhsk_bzhang/mhskUser/page.do?pageNow=${item[1].id-5}&pageSize=5">上一页</a>
	<a href="http://localhost:8080/mhsk_bzhang/mhskUser/page.do?pageNow=${item[1].id+5}&pageSize=5">下一页</a>
</body>
</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、付费专栏及课程。

余额充值