springMVC+mybatis整合(新手)
2015-03-27 13:47
204 查看
由于之前只使用过SpringMVC没有用过mybatis,这次用到了这个数据库框架,要自己整合,顺便把一些个人感觉有坑的地方,按照一遍看懂的模式来做个记录
结构图:
首先来配置spring-mvc.xml
接下来是spring-context.xml
关键配置spring-context-mybatis.xml
这里最关键的就是配置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
OK,最主要的都配置完了,jdbc和日志就不写了
MhskUser实体类
dao:
mapper.xml
MhskUserService接口
MhskUserServiceImpl实现类
MhskUserController
login.jsp
OK 大部分就写完了
写几个需要注意的地方:
mapper.xml中<mapper namespace="com.mhsk.dao.MhskUserMapper">属性找的是mapper,
<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>
这里的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
结构图:
首先来配置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,
<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>
这里的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
相关文章推荐
- [新手-图文]整合ssm框架,从mybatis到spring+mybatis再到ssm(sping+mybatis+spingmvc),数据库mysql
- SpringMVC+Spring+MyBatis整合笔记
- Spring + mvc,Mybatis整合 (含事务配置,分页功能)
- 整合springmvc+mybatis+veloctiy<三>
- 整合spring+spring mvc+mybatis
- springMVC+MyBatis+Spring 整合(4) ---解决Spring MVC 对AOP不起作用的问题
- spring mvc系列文章 - springmvc spring mybatis ibatis freemark整合开发(1.0版)
- Spring SpringMvc 3.0 + MyBatis 整合
- springMVC+MyBatis+Spring+maven 整合(1)
- springmvc+spring+mybatis整合实例
- ztree使用系列三(ztree与springmvc+spring+mybatis整合实现增删改查)
- Spring + mvc,Mybatis整合 (含事务配置,分页功能)
- SpringMVC+MyBatis 整合遇到错误 Configuration problem: Unable to locate Spring NamespaceHandler for XML
- springMVC+MyBatis+Spring 整合(2)
- spring mvc +Mybatis3.1 整合的时候异常
- mybatis+spring mvc 完美整合方案 查询,保存,更新,删除自动生成
- 【jeecg-mybatis版本】 mybatis+spring mvc 完美整合方案 查询,保存,更新,删除自动生成
- spring+springmvc+druid+oscache+mybatis整合web.xml 配置内容
- SpringMVC+MyBatis整合(注解方式)
- springMVC+MyBatis+Spring 整合(3)