spring MVC整合mybatis

spring mvc可以通过整合hibernate来实现与数据库的数据交互,,也可以通过mybatis来实现,这篇文章是总结一下怎么在springmvc中整合mybatis.

首先mybatis需要用到的包如图所示:

下面是mybaits的配置文件,写的地方由你决定,在这里我写在mybatis-servlet.xml中,因为我在web.xml中设置了在tomcat启动时会加载所有以servlet.xml结尾的文件。

web.xml中的部分代码(涉及到数据源的东西,在你的基础上加上就行),详细的请查看我spring mvc系列文章的前几篇:

   <!–   引用该数据源   –>  <resource-ref>  <span style="white-space:pre"></span><res-ref-name>jndi_mysql</res-ref-name>  <span style="white-space:pre"></span><res-type>javax.sql.DataSource</res-type>  </resource-ref>mybatis-servlet.xml如下:<beans xmlns=""xmlns:context=""xmlns:mvc=""xmlns:xsi="" xsi:schemaLocation=" "><!–配置mybatis在ioc容器中配置sqlSessionFactory使用SqlSessionFactoryBean工厂bean1 配置数据源2 配置映射文件注意classpath前缀每在工程中添加一个映射文件,需要在list中添加一个value元素–><bean id="ssf" class="org.mybatis.spring.SqlSessionFactoryBean"><property name="dataSource" ref="ds"></property><property name="mapperLocations"><list><value>classpath:<span style="color:#ff0000;">com/etock/dao/MemberDaoIf-mapper.xml</span></value></list></property></bean><!–DataSource1 实现类 DriverManageDataSource2 JNDI方式–><!– 第一种方式: –><bean id="ds" class="org.springframework.jdbc.datasource.DriverManagerDataSource"><span style="color:#ff0000;"><property name="driverClassName" value="com.mysql.jdbc.Driver"></property><property name="url" value="jdbc:mysql://localhost:3306/cn"></property><property name="username" value="root"></property><property name="password" value="root"></property></span></bean><!– 第二种方式: –><!– <bean id="ds" class="org.springframework.jndi.JndiObjectFactoryBean"><property name="jndiName" value="java:comp/env/com.mysql.jdbc.Driver"></property></bean> –><!–配置接口对应的实例bean对象spring中为了配置接口实例,提供 MapperFactoryBean的工厂bean–><bean id="dao" class="org.mybatis.spring.mapper.MapperFactoryBean"><property name="sqlSessionFactory" ref="ssf"></property><property name="mapperInterface" value="<span style="color:#ff0000;">com.etock.dao.MemberDaoIf"</span>></property></bean><!–每在工程中添加一个接口,就需要在ioc容器中添加单独的bean节点使用mapperInterface实例化改接口–></beans>使用时先建立一个bean类 如Member:package com.etock.bean;public class Member {private Integer currentPage;private Integer pageSize;private String name;private String email;private String password;private String autograph;public String getName() {return name;}public void setName(String name) {this.name = name;}public String getEmail() {return email;}public void setEmail(String email) {this.email = email;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}public String getAutograph() {return autograph;}public void setAutograph(String autograph) {this.autograph = autograph;}public Integer getCurrentPage() {return currentPage;}public void setCurrentPage(Integer currentPage) {this.currentPage = currentPage;}public Integer getPageSize() {return pageSize;}public void setPageSize(Integer pageSize) {this.pageSize = pageSize;}}在定义dao层的接口:package com.etock.dao;import java.util.List;import java.util.Map;import com.etock.bean.Member;public interface MemberDaoIf { public List<Member> <span style="color:#ff0000;">selectMembersByPage</span>(Map map); public int <span style="color:#ff0000;">selectMemberCount</span>();}然后是映射文件MemberDaoIf-mapper.xml:<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"""> <mapper <span style="color:#ff0000;">namespace="com.etock.dao.MemberDaoIf" </span>> <!–         这里返回的是list,但list里面存放的还是member对象,所以还是member     –><select id="<span style="color:#ff0000;">selectMemberCount</span>" resultType="java.lang.Integer">select count(*) from member;</select><select id="<span style="color:#ff0000;">selectMembersByPage</span>" parameterType="java.util.Map" resultMap="<span style="color:#ff0000;">member</span>">select * from member limit #{start},#{max};</select><!–返回类型解释–><resultMap type="com.etock.bean.Member" id="<span style="color:#ff0000;">member</span>"><result property="name" column="name"/><result property="email" column="email"/><result property="password" column="password"/><result property="autograph" column="autograph"/></resultMap></mapper>然后是controller层package com.etock.controller;import java.util.HashMap;import java.util.List;import java.util.Map;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.ResponseBody;import com.etock.bean.Member;import com.etock.dao.MemberDaoIf;@Controllerpublic class MemberController {<span style="color:#ff0000;">@Autowiredprivate MemberDaoIf memberDao;</span>@RequestMapping("/selectMembersByPage")@ResponseBodypublic Map selectMembersByPage(Member member){Integer currentPage = member.getCurrentPage();Integer pageSize = member.getPageSize();<span style="color:#ff0000;">int totalCount = memberDao.selectMemberCount();</span>int totalPage = (totalCount+pageSize-1)/pageSize;<span style="color:#ff0000;">Map map = new HashMap();map.put("start", (currentPage-1)*pageSize);map.put("max", pageSize);</span><span style="color:#ff0000;"> List<Member> list = memberDao.selectMembersByPage(map); </span>System.out.println(list.size()+"|||"+totalCount);/*** responseBody 将返回值封装成json返回给客户端*/Map json = new HashMap();json.put("list",list);json.put("totalCount", totalCount);json.put("totalPage", totalPage);return json;}}下面是我项目文件的结构图:人生的大部份时间里,承诺同义词是束缚,奈何我们向往束缚。

spring MVC整合mybatis

相关文章:

你感兴趣的文章:

标签云: