版本spring4+MyBatis3+JDK1.8
Spring环境的配置请参考前面文章,本文参考代码将会在资源中上传
jar包
主要包括:数据连接池(dbpc)+io+pool+Spring中jdbc+tx+Spring对MyBatis的支持包+myBatis+数据库连接jar包。
application.xml配置文件
整合时将连接数据库的信息以javaBean的形式配置到该文件中
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
<!-- 配置数据源,destroy-method:关闭数据库的连接 -->
<bean id="mydataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://127.0.0.1/mydatabase" />
<property name="username" value="root" />
<property name="password" value="root" /> </bean>
<!-- 配置mybatis自身的信息,都归spring管理 -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="mydataSource" />
<!-- 配置entity -->
<property name="typeAliasesPackage" value="com.spring.entity" />
<!-- 配置映射xml文件,注意路径的写法 -->
<property name="mapperLocations" value="classpath*:com/spring/dao/*Mapper.xml" />
</bean>
<!-- 配置dao组件,value是dao层的包路径 -->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.spring.dao" />
</bean>
<!-- 配置服务层组件 -->
<bean id="deptServices" class="com.spring.service.DeptServices"/>
</beans>
Dao层
1.接口:包含一个返回值为list的查询方法
package com.spring.dao;
import java.util.List;
import com.spring.entity.Dept;
public interface DeptMapper {
public List<Dept> findDept();
}
2.对应的映射文件
<?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.spring.dao.DeptMapper">
<select id="findDept" resultMap="deptMapper">
select * from dept
</select>
<resultMap type="Dept" id="deptMapper">
<id property="id" column="id" />
<result property="dname" column="dname" />
</resultMap>
</mapper>
Service层
创建一个类,并将其通过注解标记为service,并调用dao层的方法
package com.spring.service;
import java.util.List;
import javax.annotation.Resource;
import org.springframework.stereotype.Service;
import com.spring.dao.DeptMapper;
import com.spring.entity.Dept;
@Service
public class DeptServices {
@Resource(name="deptMapper")
private DeptMapper deptMapper;
public List<Dept> findDept(){
return deptMapper.findDept();
}
}
实体类
创建一个类名为Dept的类,包含Integer的id和String类型的dname、dnumber、dloc以及他们的get和set方法。
控制层
1.需要的工具类
package com.spring.until;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.context.WebApplicationContext;
import org.springframework.web.context.support.WebApplicationContextUtils;
import com.google.gson.Gson;
public class CommController {
public WebApplicationContext getWebApplicationContext(HttpServletRequest request){
return WebApplicationContextUtils.getWebApplicationContext(request.getServletContext());
}
public void toJson(HttpServletResponse response,Object obj) throws IOException{
response.setCharacterEncoding("utf-8");
PrintWriter out=response.getWriter();
out.print(new Gson().toJson(obj));
out.flush();
out.close();
}
}
2.测试整合环境的控制器类
package com.spring.controller;
import java.io.IOException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import com.spring.service.DeptServices;
import com.spring.until.CommController;
@Controller
@RequestMapping("deptController")
public class DeptController extends CommController{
private DeptServices deptServices;
@RequestMapping("findDept")
public void findDept(HttpServletRequest request,HttpServletResponse response) throws IOException{
deptServices=(DeptServices) getWebApplicationContext(request).getBean("deptServices");
toJson(response, deptServices.findDept());
}
}
注意需要在web.xml中将配置文件添加进去。
页面一个链接即可
<a href="<%=request.getContextPath()%>/deptController/findDept.action">测试spring整合MyBatis</a>