eclipse maven+mybatis+web项目(二)

读取和解析配置文件

这里写图片描述
MyBatisUtil.java

package cn.qdsoft.util;

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 MyBatisUtil {
    private static SqlSessionFactory factory;
    static {

        try {
            Reader reader = Resources.getResourceAsReader("Configuration.xml");
            factory = new SqlSessionFactoryBuilder().build(reader);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public static SqlSession open() {
        return factory.openSession();
    }

}

分析

Reader reader = Resources.getResourceAsReader("Configuration.xml");

读取Mybaits的主配置配置文件,并返回该文件的输入流,Mybatis所有的SQL语句都写在XML配置文件里面,所以第一步就需要读取这些XML配置文件,这个不难理解,关键是读取文件后怎么存放

SqlSessionFactory ssf = new SqlSessionFactoryBuilder().build(reader);  

在使用mybatis框架时,第一步就需要产生SqlSessionFactory类的实例(相当于是产生连接池),通过调用SqlSessionFactoryBuilder类的实例的build方法来完成

SqlSessionFactoryBuilder通过类名就可以看出这个类的主要作用就是创建一个SqlSessionFactory,通过输入mybatis配置文件的字节流或者字符流,生成XMLConfigBuilder,XMLConfigBuilder创建一个Configuration,Configuration这个类中包含了mybatis的配置的一切信息,mybatis进行的所有操作都需要根据Configuration中的信息来进行

简而言之,该代码主要是读取配置文件流并将这些配置信息存放到Configuration对象中,读取mappers节点的引用文件,并将这些文件的各个节点信息存放到Configuration对象

public static SqlSession open() {
        return factory.openSession();
    }

通过调用DefaultSqlSessionFactory的openSession方法返回一个SqlSession实例

根据Configuration对象的信息获取数据库连接,并设置连接的事务隔离级别等信息,将经过包装数据库连接对象SqlSession接口返回,DefaultSqlSession是SqlSession的实现类,所以这里返回的是DefaultSqlSession,SqlSession接口里面就是对外提供的各种数据库操作

编写接口测试类

这里写图片描述

package cn.qdsoft.dao;

import org.apache.ibatis.session.SqlSession;
import org.junit.Test;
import cn.qdsoft.util.MyBatisUtil;

public class UserDAOTest {

    @Test
    public void findAll() {
        try (SqlSession session = MyBatisUtil.open()) {
            UserDAO dao = session.getMapper(UserDAO.class);
            dao.findAll().forEach(u -> System.out.println(u.getName()));
        }
    }
}

写好之后右击UserDAOTest.java Run as -> JUnit Test

这里写图片描述

写页面

这里写图片描述

这里用bootstrap美化了页面

<%@ page 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 lang="zh-CN">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- 上述3个meta标签*必须*放在最前面,任何其他内容都*必须*跟随其后! -->
<title>用户列表</title>

<!-- Bootstrap -->
<link href="../bootstrap/css/bootstrap.css" rel="stylesheet">

</head>
<body>

    <table class='table  table-bordered table-hover table-striped'>
        <thead>
            <tr>
                <th>姓名</th>
                <th>年龄</th>
            </tr>
        </thead>
        <tbody>
            <c:forEach items="${users }" var="p">
                <tr>
                    <td>${p.name }</td>
                    <td>${p.age }</td>
                </tr>
            </c:forEach>
        </tbody>
    </table>
</body>
</html>

编写UserListServlet

package cn.qdsoft.web;

import java.io.IOException;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.ibatis.session.SqlSession;

import cn.qdsoft.util.MyBatisUtil;
import cn.qdsoft.dao.UserDAO;
import cn.qdsoft.model.User;

@WebServlet("/user/list.do")
public class UserListServlet extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

        try (SqlSession session = MyBatisUtil.open()) {
            // 从数据库取出所有用户
            UserDAO dao = session.getMapper(UserDAO.class);

            List<User> lists = dao.findAll();
            // 保存到request对象
            req.setAttribute("users", lists);
        }

        // 转发到 list.jsp
        req.getRequestDispatcher("list.jsp").forward(req, resp);

    }
}

项目右击 Run as -> maven build
成功之后在浏览器中打开
这里写图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值