• Jar程序使用MyBatis集成阿里巴巴druid连接池


    在写jar程序,而不是web程序的时候,使用mybatis作为持久层,可以集成POOLED连接池,而阿里的druid不能用,确实很郁闷。不过有办法。

    首先准备好数据库配置文件

    然后对Druid进行一个简单的封装

    package org.datasource;
    
    import java.sql.SQLException;
    import java.util.Properties;
    
    import javax.sql.DataSource;
    
    import org.apache.ibatis.datasource.DataSourceFactory;
    
    import com.alibaba.druid.pool.DruidDataSource;
    
    /**
     * 自定义类,用于将druid集成到配置文件中
     * @author Administrator
     *
     */
    public class DruidDataSourceFactory implements DataSourceFactory
    {
        private Properties props;
    
        @Override
        public void setProperties(Properties props)
        {
            this.props = props;
        }
    
        @Override
        public DataSource getDataSource()
        {
            DruidDataSource dds = new DruidDataSource();
            dds.setDriverClassName(this.props.getProperty("driver"));
            dds.setUrl(this.props.getProperty("url"));
            dds.setUsername(this.props.getProperty("username"));
            dds.setPassword(this.props.getProperty("password"));
            // 其他配置可以根据MyBatis主配置文件进行配置
            try
            {
                dds.init();
            }
            catch (SQLException e)
            {
                e.printStackTrace();
            }
            return dds;
        }
    }

    封装好之后,可以在mybatis的配置文件中使用了

    <?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>
        <!-- 引用db.properties配置文件 -->
        <properties resource="resource/db.properties" />
    
        <typeAliases>
            <typeAlias type="org.datasource.DruidDataSourceFactory"
                alias="DRUID" />
        </typeAliases>
    
        <!-- 配置分页插件 -->
        <plugins>
            <plugin interceptor="com.github.pagehelper.PageHelper">
                <!-- 设置数据库类型 Oracle,Mysql,MariaDB,SQLite,Hsqldb,PostgreSQL六种数据库 -->
                <property name="dialect" value="mysql" />
            </plugin>
        </plugins>
    
        <!-- development : 开发模式 work : 工作模式 -->
        <environments default="development">
            <environment id="development">
                <transactionManager type="JDBC" />
                <!-- 配置数据库连接信息 -->
                <dataSource type="DRUID">
                    <!-- value属性值引用db.properties配置文件中配置的值 -->
                    <property name="driver" value="${jdbc.driver}" />
                    <property name="url" value="${jdbc.url}" />
                    <property name="username" value="${jdbc.username}" />
                    <property name="password" value="${jdbc.password}" />
                </dataSource>
            </environment>
        </environments>
        <!-- mybatis的mapper文件,每个xml配置文件对应一个接口 -->
        <mappers>
            <mapper resource="*1.xml" />
            <mapper resource="*2.xml" />
        </mappers>
    </configuration>

    然后就可以使用了

    package org.util;
    
    import java.io.InputStream;
    
    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 final String CONFIG_PATH = "mybatis/mybatis.xml";
    
        /*
         * 获取数据库访问链接
         */
        public static SqlSession getSqlSession()
        {
            SqlSession session = null;
            try
            {
                InputStream stream = Resources.getResourceAsStream(CONFIG_PATH);
                // 可以根据配置的相应环境读取相应的数据库环境
                // SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(stream, "development");
                SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(stream);
                session = factory.openSession();
            }
            catch (Exception e)
            {
                e.printStackTrace();
            }
            return session;
        }
    
        /*
         * 获取数据库访问链接
         */
        public static void closeSession(SqlSession session)
        {
            session.close();
        }
        
        public static void main(String[] args)
        {
            SqlSession sqlSession = MyBatisUtil.getSqlSession();
            Mapper test = sqlSession.getMapper(Mapper.class);
            System.out.println(test.countByExample(new Example()));
            MyBatisUtil.closeSession(sqlSession);
        }
    }
  • 相关阅读:
    【源码解析】Flink 是如何处理迟到数据
    Flink assignAscendingTimestamps 生成水印的三个重载方法
    【翻译】生成 Timestamps / Watermarks
    【翻译】The Broadcast State Pattern(广播状态)
    基于Broadcast 状态的Flink Etl Demo
    git 更新fork的远程仓库
    Flink 在IDEA执行时的webui
    配置ssh免密,仍需要密码
    第二章 Kubernetes进阶之使用二进制包部署集群
    Kubernetes之Ingress
  • 原文地址:https://www.cnblogs.com/supertonny/p/7153164.html
Copyright © 2020-2023  润新知