eclipse maven+mybatis+web项目(二)

来源:互联网 发布:藏宝阁交易数据异常 编辑:程序博客网 时间:2024/05/01 15:49

读取和解析配置文件

这里写图片描述
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 0