Spring结合Mybatis 本文以查找数据库中一张表的信息为例
1.添加jar包,包括mybits+数据库连接+gson(为了将获的数据通过json传到页面)。
2.创建实体类(与要查询的表相对应)。
public class Dept { private Integer id; private String dname; private String dnumber; private String dloc; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getDname() { return dname; } public void setDname(String dname) { this.dname = dname; } public String getDnumber() { return dnumber; } public void setDnumber(String dnumber) { this.dnumber = dnumber; } public String getDloc() { return dloc; } public void setDloc(String dloc) { this.dloc = dloc; } }3.dao层,创建一个dao接口和它对应的映射文件 dao接口,接口中包含一个返回值为list的查询方法,list的泛型是刚刚创建的实体类型。
import java.util.List; import com.spring.entity.Dept; public interface DeptMapper { List<Dept> findDept(); }映射文件一般与接口的名称一样,namespace的值是dao接口的全名。注意要保证映射文件中操作的表在数据库中存在。
<?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="com.spring.entity.Dept" id="deptMapper"> <id property="id" column="id" /> <result property="dname" column="dname" /> <result property="dnumber" column="dnumber" /> <result property="dloc" column="dloc" /> </resultMap> </mapper>4.配置mybits的连接文件,本文用的是Mysql,要保证数据库存在,同时引入映射文件
<?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> <environments default="dev"> <environment id="dev"> <transactionManager type="JDBC" /> <dataSource type="POOLED"> <property name="username" value="root" /> <property name="password" value="root" /> <property name="url" value="jdbc:mysql://localhost/mydatabase" /> <property name="driver" value="com.mysql.jdbc.Driver" /> </dataSource> </environment> </environments> //dao层映射文件的添加 <mappers> <mapper resource="com/spring/dao/DeptMapper.xml" /> </mappers> </configuration>5.书写MyBatis的工具类
import java.io.Reader; import org.apache.ibatis.io.Resources; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder; public class MybitsUntil { private static SqlSessionFactory factory = null; static { try { Reader reader = Resources.getResourceAsReader("mybatis-config.xml"); factory = new SqlSessionFactoryBuilder().build(reader); } catch (Exception e) { e.printStackTrace(); } } public static SqlSession getSqlSession() { return factory.openSession(); } public static void close(SqlSession session) { if (session != null) { session.close(); } } }6.service层,创建一个类
import java.util.List; import org.apache.ibatis.session.SqlSession; import com.spring.dao.DeptMapper; import com.spring.entity.Dept; import com.spring.until.MybitsUntil; public class DeptService { //查询表中所有数据 public static List<Dept> findDept(){ SqlSession sqlSession=MybitsUntil.getSqlSession(); DeptMapper deptMapper=sqlSession.getMapper(DeptMapper.class); List<Dept> list=null; try { list=deptMapper.findDept(); if(list!=null){ return list; } } catch (Exception e) { e.printStackTrace(); }finally{ MybitsUntil.close(sqlSession); } return list; } }7.控制器中添加新的方法,为了将字符串输出到页面中,方法需传入httpServletResponse类型的参数。
@RequestMapping("selectDept") public void selectDept(HttpServletResponse response) throws IOException{ response.setCharacterEncoding("utf-8"); List<Dept> list=DeptService.findDept(); PrintWriter out=response.getWriter(); //将获得的类型以json格式传递到页面 out.print(new Gson().toJson(list)); out.flush(); out.close(); }8.在页面中添加一个a标签,连到控制器的selectDept方法
<a href="<%=request.getContextPath()%>/oneController/selectDept.action">测试数据</a>