Spring(二)结合myBaits

本文详细介绍如何使用Spring框架整合MyBatis实现数据库操作。从添加必要的依赖开始,逐步介绍了实体类定义、DAO层设计、MyBatis配置、工具类编写、业务逻辑处理及最终的数据展示过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值