zoukankan      html  css  js  c++  java
  • 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);
        }
    }
  • 相关阅读:
    求两图的 对比度
    关于opencv中的颜色模型转换之CV_BGR2HSV
    转 C++函数返回值,你必须注意的问题
    opencv 3.2 vs2015 debug assertion __acrt_first_block == header
    vs的【warning C4996:'fopen': This function or variable may be unsafe】解决方案
    c++ opencv 3.2 +Mfc VS2015窗体显示图片方法
    c++中“箭头(->)”和“点号(.)”操作符的区别
    C# devexpress gridcontrol 分页 控件制作
    c#Md5 32位加密结果少了两个0的原因
    opencv 线,椭圆 圆
  • 原文地址:https://www.cnblogs.com/supertonny/p/7153164.html
Copyright © 2011-2022 走看看