Mybatis+mysql动态分页查询数据案例——工具类(MybatisUtil.java)
发布日期:2021-05-14 13:06:24 浏览次数:22 分类:精选文章

本文共 1803 字,大约阅读时间需要 6 分钟。

  • 项目名称:mhouse
  • 类名称:MybatisUtil
  • 类描述:提供Mybatis工具类方法支持
  • 创建人:Mu Xiongxiong
  • 创建时间:2017-3-15 下午1:31:54
  • 修改人:Mu Xiongxiong
  • 修改时间:2017-3-15 下午1:31:54
  • 修改备注:@version

1. 类概述

这是一个为项目“mhouse”提供Mybatis工具类方法的类,用于对Mybatis事务管理功能的支持。该类采用 ThreadLocal 简单的方式存储数据库连接 session,能够自动管理数据库事务的开启和关闭,适用于多线程环境下的数据库操作。

2. 类字段

  • private static SqlSessionFactory factory;:用于存储 Mybatis 提供的 SqlSessionFactory 实例。
  • private static ThreadLocal<SqlSession> elink;:用于存储当前 线上 会话实例。

3. 初始化逻辑

类内的 static 块用于初始化 SqlSessionFactory,读取配置文件 (mybatis-config.xml) 获取数据库连接信息,构建 SqlSessionFactory 并缓存到 factory 字段中。

4. 取得 Session

方法 getSession() 用于获取当前线上会话:

  • 调用 elink.get() 获取存储在 ThreadLocal 中的 session。
  • 如果 session 不存在,则调用 factory.openSession() 创建一个新 session,并将其存储到 elink 中。
  • 返回当前的 session 对象。
  • 5. 关闭 Session

    方法 closeSession() 用于关闭当前线上的会话:

  • 调用 elink.set(null) 清除 ThreadLocal 中的 session。
  • 检查并关闭不为空的 session 对象。
  • 6. 注意事项

    • 该类采用 ThreadLocal 存储 session,适用于同一个数据库连接池中多线程操作,但不支持跨连接池的 sessionâyawi 所以请谨慎使用。
      -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

    7. 我们需要解决的问题

    以下是一系列问题需要通过代码优化解决:

  • 代码结构混乱:类中既有字段声明,也有静态初始化逻辑和方法,未做好逻辑分类。
  • 缺少必要注释:代码缺乏详细注释,导致不便于理解。
  • 变量命名不够清晰:如 sl 是否对应数据库连接池或 session?命名不够直观。
  • 缺少异常处理:在初始化方法中未对 IOExceptio 和其他可能的异常做处理,存在潜在问题。
  • 代码逻辑不够健全:方法中缺少必要的 null 判断,可能导致异常。
  • 8. 代码优化方案

    为了解决上述问题,我们将对原有代码进行如下重写优化:

    字段整理与注释补充:

    • 잡_transport 改为 eelink,使命名更加直观。
    • 为每个字段添加注释,说明其用途。

    方法重写:

    getSession()closeSession() 方法进行重写,补充异常处理和 null 判断逻辑:

    新增方法:

    • 添加 getConexion() 方法,用于获取当前线上连接。
    • 可根据实际需求增加 rollbackOnly() 方法,用来单独标记只回滚事务。

    异常处理补充:

    static 初始化逻辑中,增加对常见异常的处理,避免潜在问题。

    读者注意事项:

    • 请确保 mybatis-config.xml 文件放置在项目根目录下。
    • 端口号和数据库连接信息需提前配置好,避免运行时错误。

    9. 如何使用

  • 在项目启动时,确保加载 mybatis-config.xml 文件。
  • 调用 MybatisUtil.getSession() 获取当前线上会话。
  • 在操作完成后,调用 MybatisUtil.closeSession() 关闭会话。
  • 10. 总结

    本文对原有 MybatisUtil 代码进行了全面的优化和重写,解决了代码结构问题和逻辑缺陷,增强了代码的健壮性和可维护性。新版本代码采用更清晰的命名规范、完善的异常处理机制和细化的功能模块划分,为后续数据库操作提供了更加稳固的基础。

    上一篇:hibernate+struts2整合jar包冲突
    下一篇:Mybatis+mysql动态分页查询数据案例——测试类HouseDaoMybatisImplTest)

    发表评论

    最新留言

    路过按个爪印,很不错,赞一个!
    [***.219.124.196]2025年04月09日 18时53分07秒

    关于作者

        喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
    -- 愿君每日到此一游!

    推荐文章