MybatisUtils与Druid连接池

1.MybatisUtils连接工具类

帮助快速创建一个sqlSession以及开启和关闭。

excuteQuery是帮助查询操作的Lambda表达式方法,可以帮助屏蔽查询操作的相关细节,这样很轻松的就可以启动查询操作了,不用再担心忘记开启和关闭回收资源

    public void testTestCase2() {
        System.out.println("---------------");
        String result=(String)MybatisUtils.excuteQuery(sqlSession -> sqlSession.selectOne("test.sample"));
        System.out.println(result);
    }
    public void testTestCase1() {
        String result= (String) MybatisUtils.excuteQuery(sqlSession -> {
            String s = (String) sqlSession.selectOne("test.sample");
            return s;
        });
        System.out.println(result);
    }

executeUpdate帮助使用者操作数据库的更新等操作,如增删改,内置了rollback方法。

源码如下

 

public class MybatisUtils {
    //创建全局唯一的sqlSessionFactory
    private static SqlSessionFactory sqlSessionFactory=null;
    static {
        try {
            Reader reader = Resources.getResourceAsReader("mybatis-config.xml");
            sqlSessionFactory=new SqlSessionFactoryBuilder().build(reader);
        } catch (IOException e) {
            e.printStackTrace();
            //抛出:类初始化时产生的错误
            throw new ExceptionInInitializerError(e);
        }
    }

    //使用这个函数式接口,传入SqlSession参数,和返回值Object,方法参数名func
    //这个函数式接口的好处是,不需要再后续自己书写open和close了,使用这个接口就一定可以触发这两个
    //利用function屏蔽查询的细节
    public static  Object excuteQuery(Function<SqlSession,Object> func){
          SqlSession sqlSession=sqlSessionFactory.openSession();
        try {
            Object obj=func.apply(sqlSession);
            return obj;
        } finally {
            sqlSession.close();
        }
    }

    public static Object executeUpdate(Function<SqlSession,Object> func){
        //传入false代表手动提交/回滚事务
        SqlSession sqlSession=sqlSessionFactory.openSession(false);
        try {
            Object obj=func.apply(sqlSession);
            sqlSession.commit();
            return obj;
        } catch (Exception e) {
            sqlSession.rollback();
            throw e;
        }finally {
            sqlSession.close();
        }
    }
}

2.Druid连接池

首先需要导入依赖

        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.1.14</version>
        </dependency>

然后更改xml代码如下即可

 

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
    <!--    开启驼峰命名转换-->
    <settings>
        <setting name="mapUnderscoreToCamelCase" value="true"/>
    </settings>
    <!--    设置默认指向的数据库dev-->
    <environments default="dev">
        <!--    配置环境,不同的环境不同的id名字-->
        <environment id="dev">
            <!--        采用JDBC方式对数据库事务进行commit/rollback-->
            <transactionManager type="JDBC"></transactionManager>
            <!--        采用连接池方式管理数据库连接-->
<!--            <dataSource type="POOLED">-->
            <dataSource type="com.imooc.oa.datasource.DruidDataSourceFactory">
                <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/imooc_oa?useSSL=false&amp;useUnicode=true&amp;characterEncoding=UTF-8&amp;serverTimezone=Asia/Shanghai"/>
                <property name="username" value="root"/>
                <property name="password" value="1644661573"/>
                <property name="initialSize" value="10"/>
                <property name="maxActive" value="20"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <mapper resource="mappers/test.xml"/>
    </mappers>
</configuration>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值