jdbc 数据源加载配置文件连接 mybatis多数据源

这篇博客介绍了如何使用JDBC加载properties和xml配置文件来建立数据库连接,同时对比了Druid和Hikari两个数据库连接池的配置与使用方法。在mybatis-config.xml中,展示了如何配置MyDruidDataSource数据源。
摘要由CSDN通过智能技术生成

jdbc加载配置文件xml 和 properties

hikri 和 druid

public class DButils {
    //使用properti配置文件
    @Test
    public void test1() throws Exception{
        //加载properties配置文件
        Properties properties=new Properties();
        properties.load(DButils.class.getClassLoader().getResourceAsStream("jdbc.properties"));

        //获取配置文件中的数据
        String username = properties.getProperty("mysql.username");
        String password = properties.getProperty("mysql.password");
        String url = properties.getProperty("mysql.url");
        String drivername = properties.getProperty("mysql.drivername");


        //2,3可以省略
        //2.实例化Driver,可以省略,java中存在spi功能,自动扫描jar包下META-INF下的services,
        // 自动加载类
        Class clazz = Class.forName(drivername);
        Driver driver=(Driver) clazz.newInstance();

        //3.注册驱动,可以省略,sql.Driver中已经写了这句
        DriverManager.registerDriver(driver);

        //获取连接
        Connection connection = DriverManager.getConnection(url, username, password);
        System.out.println(connection);


    }

    //使用xml配置文件
    @Test
    public void test2() throws Exception{
        //使用dom4j加载xml文件
        //new 一个SAXReader对象,加载配置文件,生成Document对象
        SAXReader saxReader=new SAXReader();
        InputStream inputStream = DButils.class.getClassLoader().getResourceAsStream("jdbc.xml");
        Document document = saxReader.read(inputStream);

        Element root = document.getRootElement();//获取根节点

        //根据根节点获取子节点
        String username = root.element("username").getTextTrim();
        String password = root.element("password").getTextTrim();
        String url = root.element("url").getTextTrim();
        String drivername = root.element("drivername").getTextTrim();

        //2,3可以省略
        //2.实例化Driver,可以省略,java中存在spi功能,自动扫描jar包下META-INF下的services,
        // 自动加载类
        Class clazz = Class.forName(drivername);
        Driver driver=(Driver) clazz.newInstance();

        //3.注册驱动,可以省略,sql.Driver中已经写了这句
        DriverManager.registerDriver(driver);

        //获取连接
        Connection connection = DriverManager.getConnection(url, username, password);
        System.out.println(connection);

    }

    //C3P0,DBCP数据库连接池已过时
    //德鲁伊数据库连接池
    @Test
    public void Test3() throws Exception {
        //初始化配置文件
        Properties properties=new Properties();
        properties.load(DButils.class.getClassLoader().getResourceAsStream("druidData.properties"));

        //初始化德鲁伊数据库连接池
        DruidDataSource druidDataSource = new DruidDataSource();
        druidDataSource.configFromPropety(properties);

        /*DataSource dataSource = DruidDataSourceFactory.createDataSource(properties);
        Connection connection1 = dataSource.getConnection();*/
        //利用数据库连接池工厂类获取数据库连接池

        DruidPooledConnection connection = druidDataSource.getConnection();
        System.out.println(connection);
    }

    //hikari数据库连接池
    @Test
    public void Test4() throws Exception{
        //初始化配置文件
        Properties properties = new Properties();
        properties.load(DButils.class.getClassLoader().getResourceAsStream("hikari.properties"));

        //初始化hikari数据库连接池,1.初始化hikari配置 2.加载配置
        HikariConfig hikariConfig = new HikariConfig(properties);
        HikariDataSource hikariDataSource = new HikariDataSource(hikariConfig);


        //获取连接
        Connection connection = hikariDataSource.getConnection();
        System.out.println(connection);

    }


}

jdbc.properties

mysql.username=root
mysql.password=root
mysql.url=jdbc:mysql://127.0.0.1:3306/stu
mysql.drivername=com.mysql.jdbc.Driver

jdbc.xml

<?xml version="1.0" encoding="utf-8" ?>
<jdbc>
    <username>root</username>
    <password>root</password>
    <url>jdbc:mysql://127.0.0.1:3306/stu</url>
    <drivername>com.mysql.jdbc.Driver</drivername>
</jdbc>

配置mybatis框架的数据源

public class MyDruidDataSource implements DataSourceFactory {
    private Properties properties;
    @Override
    public void setProperties(Properties properties) {
        this.properties = properties;
    }

    @Override
    public DataSource getDataSource() {
        DruidDataSource druidDataSource = new DruidDataSource();
        druidDataSource.configFromPropety(properties);

        return druidDataSource;
    }
}

mybatis-config.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>
    <properties resource="db.properties"></properties>

    <settings>
        <!--日志-->
<!--        <setting name="logImpl" value="LOG4J"/>-->
        <!--开启二级缓存-->
        <setting name="cacheEnabled" value="true"/>
    </settings>


    <typeAliases>
        <package name="com.jsu.lzj.vo"/>
    </typeAliases>

    <environments default="druid">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="com.jsu.lzj.dbc.HikariDataSource">
                <property name="driverClassName" value="${driver}"/>
                <property name="jdbcUrl" value="${url}"/>
                <property name="username" value="${user}"/>
                <property name="password" value="${password}"/>
            </dataSource>
        </environment>
        <environment id="druid">
            <transactionManager type="JDBC"/>
            <dataSource type="com.jsu.lzj.dbc.MyDruidDataSource">
                <property name="druid.driverClassName" value="${driver}"/>
                <property name="druid.url" value="${url}"/>
                <property name="druid.username" value="${user}"/>
                <property name="druid.password" value="${password}"/>
            </dataSource>
        </environment>
    </environments>
   


</configuration>
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值