zoukankan      html  css  js  c++  java
  • MyBatis 整合 Druid

    pom.xml 依赖

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
    
        <groupId>com</groupId>
        <artifactId>test</artifactId>
        <version>1.0-SNAPSHOT</version>
    
        <dependencies>
            <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>druid</artifactId>
                <version>1.1.19</version>
            </dependency>
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>8.0.17</version>
            </dependency>
            <dependency>
                <groupId>org.mybatis</groupId>
                <artifactId>mybatis</artifactId>
                <version>3.5.2</version>
            </dependency>
        </dependencies>
    
        <build>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <configuration>
                        <source>1.8</source>
                        <target>1.8</target>
                        <encoding>UTF-8</encoding>
                    </configuration>
                </plugin>
            </plugins>
        </build>
    </project>

    新建配置类,实现 mybatis 的 DataSourceFactory 接口

    Druid 中也有一个叫 DruidDataSourceFactory 的类,怕混淆就取其它名字。

    package com.config;
    
    import com.alibaba.druid.pool.DruidDataSource;
    import org.apache.ibatis.datasource.DataSourceFactory;
    
    import javax.sql.DataSource;
    import java.sql.SQLException;
    import java.util.Properties;
    
    public class DruidDataSourceFactory implements DataSourceFactory {
    
        private Properties properties;
    
        @Override
        public void setProperties(Properties properties) {
            this.properties = properties;
        }
    
        @Override
        public DataSource getDataSource() {
            DruidDataSource dds = new DruidDataSource();
            dds.setUrl(this.properties.getProperty("url"));
            dds.setUsername(this.properties.getProperty("username"));
            dds.setPassword(this.properties.getProperty("password"));
            try {
                dds.init();
            } catch (SQLException e) {
                e.printStackTrace();
            }
            return dds;
        }
    }

    配置文件 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 配置文件  -->
        <properties resource="db.properties"/>
    
        <!--配置数据源-->
        <environments default="development-mysql">
            <environment id="development-mysql">
                <transactionManager type="JDBC"/>
                <dataSource type="com.config.DruidDataSourceFactory">
                    <property name="url" value="${jdbc.jdbcUrl}"/>
                    <property name="username" value="${jdbc.user}"/>
                    <property name="password" value="${jdbc.password}"/>
                </dataSource>
            </environment>
        </environments>
    
        <!-- mappers:将 SQL 映射文件注册到全局配置中 -->
        <mappers>
            <!-- 引用类路径下的 SQL 映射文件 -->
            <mapper resource="mapper/XXXMapper.xml"/>
        </mappers>
    </configuration>

    数据库连接信息 db.properties

    jdbc.driverClass=com.mysql.cj.jdbc.Driver
    jdbc.jdbcUrl=jdbc:mysql://127.0.0.1:3306/test?useSSL=false&useUnicode=true&characterEncoding=UTF8&serverTimezone=GMT
    jdbc.user=root
    jdbc.password=root

    测试

    public static void main(String[] args) {
        SqlSession session = null;
        SqlSession batchSession = null;
        try {
            String resource = "mybatis-config.xml";
            InputStream inputStream = Resources.getResourceAsStream(resource);
            SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
            session = sqlSessionFactory.openSession();
            batchSession = sqlSessionFactory.openSession(ExecutorType.BATCH);
    
            // 不用接口的方式
            // User user = session.selectOne("com.dao.UserMapper.selectUser",1);
    
            session.commit();
            batchSession.commit();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (session != null) {
                session.close();
            }
            if (batchSession != null) {
                batchSession.close();
            }
        }
    }

    https://yeyouluo.github.io/2017/10/16/shi-yong-mybatis-ji-cheng-a-li-ba-ba-druid-lian-jie-chi-bu-shi-yong-spring/

    https://github.com/alibaba/druid/wiki/DruidDataSource%E9%85%8D%E7%BD%AE

  • 相关阅读:
    Navicat使用技巧(附快捷键)
    Eclipse working set 快捷键
    行为模式--策略模式
    软件的可复用性和维护性
    外观模式
    建造者模式
    开闭原则
    迪米特法则
    工厂作业方法
    依赖倒置原则
  • 原文地址:https://www.cnblogs.com/jhxxb/p/11284031.html
Copyright © 2011-2022 走看看