栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Javaweb - SqlSessionFactory工具类

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Javaweb - SqlSessionFactory工具类

文章目录

SqlSessionFactory工具类

代码优化问题

编写代码试用SqlSessionFactory工具类

SqlSessionFactory工具类 代码优化
//2.1获取SqlSessionFactory对象
String resouce = "mybatis.config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
问题
    代码重复:工具类SqlSessionFactory 工厂只创建一次,不要重复创建
编写代码

com.taotao.util.SqlSessionfactoryUtils

package com.taotao.util;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

import java.io.IOException;
import java.io.InputStream;


@SuppressWarnings({"all"})
public class SqlSessionfactoryUtils {
    private static SqlSessionFactory sqlSessionFactory;
    //静态代码块会随着类的加载而自动执行,且只执行一次
    static{
        String resource = "mybatis.config.xml";
        InputStream inputStream = null;
        try {
            inputStream = Resources.getResourceAsStream(resource);
        } catch (IOException e) {
            e.printStackTrace();
        }
        sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
    }

    public static SqlSessionFactory getSqlSessionFactory(){
        return sqlSessionFactory;
    }
}

试用SqlSessionFactory工具类

RegisterServlet.java

package com.taotao.web;

import com.taotao.mapper.UserMapper;
import com.taotao.pojo.User;
import com.taotao.util.SqlSessionfactoryUtils;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

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 java.io.IOException;
import java.io.InputStream;


@SuppressWarnings({"all"})
@WebServlet(urlPatterns = "/registerServlet")
public class RegisterServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //1.接收用户数据
        String username = req.getParameter("username");
        String password = req.getParameter("password");

        //封装用户对象
        User user = new User();
        user.setUsername(username);
        user.setPassword(password);

        //2.调用mapper 根据用户名查询用户对象
        //2.1 获取sqlSessionFactory对象
//        String resource = "mybatis.config.xml";
//        InputStream inputStream = Resources.getResourceAsStream(resource);
//        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        SqlSessionFactory sqlSessionFactory = SqlSessionfactoryUtils.getSqlSessionFactory();

        //2.2获取SqlSession对象
        SqlSession sqlSession = sqlSessionFactory.openSession();

        //2.3获取Mapper
        UserMapper userMapper = sqlSession.getMapper(UserMapper.class);

        //2.4调用方法
        User u = userMapper.selectByUsername(username);
        System.out.println(user);
        //设置utf-8编码格式以及识别html标签
        resp.setContentType("text/html;charset=utf-8");

        //3.判断用户对象是否为null
        if (u == null){
            //用户名不存在,添加用户
            userMapper.add(user);
            //提交事务
            sqlSession.commit();

            //释放资源
            sqlSession.close();
            resp.getWriter().write("create user successful!!");
        }else {
            //用户名存在,给出提示信息
            resp.getWriter().write("can't create the user,the user is exists");
        }
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        this.doGet(req, resp);
    }
}

而sqlSession对象则不能封装,因为他表示用户每次连接服务器所需要的对象,而我们的工具类一般是static静态代码块,所以不封装sqlSession对象

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/785538.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号