• 【Mybatis】Mybatis简单使用


    一个Mybatis的项目,需要负责连接管理的工具类,每次只需要从工具类获取SqlSessionFactory

    package com.hj.utils;
    
    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 java.io.IOException;
    import java.io.InputStream;
    
    public class SqlSessionFactoryUtils {
        private static String RESOURCE = "mybatis.xml";
        private static SqlSessionFactory sqlSessionFactory;
        private static ThreadLocal<SqlSession> threadLocal = new ThreadLocal<SqlSession>();
    
        /**
         * 初始化SqlSession的方法 在容器初始化的时候应加载
         *
         * 使用示例(使用注解方式添加监听器):
         * import com.damu.utils.SqlSessionFactoryUtils;
         * import javax.servlet.ServletContextEvent;
         * import javax.servlet.ServletContextListener;
         * import javax.servlet.annotation.WebListener;
         * @WebListener
         * public class InitSqlSessionListener implements ServletContextListener {
         *     public void contextInitialized(ServletContextEvent servletContextEvent) {
         *         System.out.println("容器加载中...");
         *         // 初始化我们的SqlSesionFactory对象
         *         SqlSessionFactoryUtils.initSqlSessionFactry();
         *     }
         *
         *     public void contextDestroyed(ServletContextEvent servletContextEvent) {
         *         System.out.println("容器销毁中...");
         *         // 关闭SqlSession对象
         *         SqlSessionFactoryUtils.close();
         *     }
         * }
         */
        public static void initSqlSessionFactory(){
            try {
                InputStream is = Resources.getResourceAsStream(RESOURCE);
    
                sqlSessionFactory = new SqlSessionFactoryBuilder().build(is);
    
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    
        /**
         * 获取SqlSessionFactory的方法
         * @return
         */
        public static SqlSessionFactory getSqlSessionFactory(){
            return sqlSessionFactory;
        }
    
        /**
         * 关闭Session的方法
         */
        public static void close(){
            SqlSession session = threadLocal.get();
            if (session != null) {
                session.close();
                threadLocal.set(null);
    
            }
        }
    
    }

    每次服务器启动时候,也可以直接放在DAO中

    package com.damu.listener;
    
    import com.damu.utils.SqlSessionFactoryUtils;
    
    import javax.servlet.ServletContextEvent;
    import javax.servlet.ServletContextListener;
    import javax.servlet.annotation.WebListener;
    
    
    @WebListener
    public class InitSqlSessionListener implements ServletContextListener {
        public void contextInitialized(ServletContextEvent servletContextEvent) {
            System.out.println("容器加载中...");
            // 初始化我们的SqlSesionFactory对象
            SqlSessionFactoryUtils.initSqlSessionFactry();
        }
    
        public void contextDestroyed(ServletContextEvent servletContextEvent) {
            System.out.println("容器销毁中...");
            // 关闭SqlSession对象
            SqlSessionFactoryUtils.close();
        }
    }

    UserDao中的使用:

    import com.damu.entity.Users;
    import com.damu.utils.SqlSessionFactoryUtils;
    import org.apache.ibatis.session.SqlSession;
    import org.apache.ibatis.session.SqlSessionFactory;
    
    import java.util.List;
    
    
    public class UsersDAO {
        private SqlSession sqlSession;
        private List<Users> list;
        private Users user;
    
        private SqlSession getSession() {
            sqlSession = SqlSessionFactoryUtils.getSqlSessionFactory().openSession();
            return sqlSession;
        }
    
        /**
         * 查询全部用户
         * @return
         */
        public List<Users> findAll() {
            try {
                list = getSession().selectList("findUsers");
            } catch (Exception e) {
                e.printStackTrace();
            } finally {
                sqlSession.close();
            }
            return list;
        }
    }
    <select id="findUsers" resultType="com.beans.User">
        select * from users
    </select>

     更多操作:

        /**
         * 查询全部用户
         * @return
         */
        public List<Users> findAll(){
            try {
                usersList = getSqlSession().selectList("findUsers");
    //            for (Users user :
    //                    usersList) {
    //                System.out.println(user);
    //            }
            } catch (Exception e) {
                e.printStackTrace();
            } finally {
                sqlSession.close();
            }
            return usersList;
        }
    
        /**
         * 查询单个用户
         * @return
         */
        public Users findById(Integer id){
            try {
                user = getSqlSession().selectOne("findUsers", new Users(id));
            } catch (Exception e) {
                e.printStackTrace();
            } finally {
                sqlSession.close();
            }
            return user;
        }
    
        /**
         * 增加用户数据到数据库
         * @return
         */
    
        public Users addUser(Users user){
            try {
                getSqlSession().insert("addUser", user);
                sqlSession.commit();
            } catch (Exception e) {
                e.printStackTrace();
            } finally {
                sqlSession.close();
            }
            return user;
        }
    
        /**
         * 修改用户资料
         * @return
         */
    
        public Users updateUsers(Users user){
            try {
                getSqlSession().update("updateUser",user);
                sqlSession.commit();
            } catch (Exception e) {
                e.printStackTrace();
            } finally {
                sqlSession.close();
            }
            return user;
        }
  • 相关阅读:
    实现servlet的三种方式
    java中的运算符与表达式
    封装链接数据库的工具
    java 概述
    HTTP请求方式中get和post的区别
    asp.net获取当前网址url
    利用IP安全策略关闭危险端口
    IE6 css fixed
    存储过程中使用事务详解
    windows 2003内存性能分析工具
  • 原文地址:https://www.cnblogs.com/to-red/p/11335540.html
Copyright © 2020-2023  润新知