JDBC连接数据库

配置类书写

package cn.chinaunicom.orderdriver.config.mybatis;

import com.zaxxer.hikari.HikariConfig;
import com.zaxxer.hikari.HikariDataSource;
import com.zaxxer.hikari.hibernate.HikariConnectionProvider;
import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.SqlSessionTemplate;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;

import javax.sql.DataSource;
import java.io.IOException;
import java.util.Properties;


/**
 * @Author monica
 * @Date 2023/3/8 11:10
 * @description
 */

@Configuration
@MapperScan(basePackages = "cn.chinaunicom.orderdriver.core.pc.packing.mapper" , sqlSessionFactoryRef = "")
public class OrderDriverDataSourceConfig {



    @Value(value = "${spring.datasource.url}")
    private String url ;
    @Value(value = "${spring.datasource.username}")
    private String  username;
    @Value(value = "${spring.datasource.password}")
    private String password;
    @Value(value = "${spring.datasource.driver-class-name}")
    private String driver;
    @Value(value = "${spring.datasource.type}")
    private String type;

    @Bean("xixianDataSource")
    @Primary
    public DataSource getXixianDataSource(){

        HikariConfig config = new HikariConfig();
        config.setJdbcUrl(url);
        config.setUsername(username);
        config.setPassword(password);
        config.setDriverClassName(driver);
        HikariDataSource dataSource = new HikariDataSource(config);

        return dataSource;
    }


    @Bean("sqlSessionFactory")
    @Primary
    public SqlSessionFactory sqlSessionFactory(@Qualifier("xixianDataSource") DataSource dataSource, ApplicationContext applicationContext) throws Exception {

        SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
        sqlSessionFactoryBean.setDataSource(dataSource);
        sqlSessionFactoryBean.setConfigLocation(applicationContext.getResource("classpath:mybatis/mybatis-config.xml"));
        sqlSessionFactoryBean.setMapperLocations(applicationContext.getResources("classpath:/mybatis/mapper/**/*.xml"));

        return sqlSessionFactoryBean.getObject();
    }


    @Bean("sqlSessionTemplate")
    @Primary
    public SqlSessionTemplate sqlSessionTemplate(@Qualifier("sqlSessionFactory")SqlSessionFactory sqlSessionFactory){
        return new SqlSessionTemplate(sqlSessionFactory);
    }




}

前台调用书写代码

  @Override
    public String execute(String execute) {
        SqlSession sqlSession = null;
        Connection connection = null;
        PreparedStatement preparedStatement = null;
        try {
            SqlSessionTemplate sqlSessionTemplate = SpringUtils.getBean("sqlSessionTemplate", SqlSessionTemplate.class);
            sqlSession = sqlSessionTemplate.getSqlSessionFactory().openSession();
            connection = sqlSession.getConnection();
            preparedStatement = connection.prepareStatement(execute);
            ParameterMetaData parameterMetaData = preparedStatement.getParameterMetaData();
            ResultSetMetaData metaData = preparedStatement.getMetaData();

            System.out.println(metaData.getColumnName(1));
            System.out.println(metaData.getTableName(1));
            log.info("返回的数据===>{},{}", JSON.toJSONString(metaData),JSON.toJSONString(parameterMetaData));
            preparedStatement.execute();

            return "ok";
        } catch (Exception ex) {
            return ex.getMessage();
        } finally {
            try {
                preparedStatement.close();
                connection.close();
                sqlSession.close();
            } catch (SQLException e) {
                log.error("{}",e);
            }
        }
    }

调用的Spring管理的工具类

package cn.chinaunicom.orderdriver.utils;

import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.stereotype.Component;

/**
 * @Author monica
 * @Date 2023/3/8 11:04
 * @description
 */


@Component
public class SpringUtils implements ApplicationContextAware {

    private static ApplicationContext applicationContext = null;

    private static void setContext(ApplicationContext applicationContext) {
        if (SpringUtils.applicationContext == null) {
            SpringUtils.applicationContext = applicationContext;
        }
    }

    @Override
    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
        setContext(applicationContext);
    }

    /**
     * 获取applicationContext
     * @return
     */
    public static ApplicationContext getApplicationContext() {
        return applicationContext;
    }

    /**
     * 通过name获取 Bean.
     * @param name
     * @return
     */
    public static Object getBean(String name){
        return getApplicationContext().getBean(name);
    }

    /**
     * 通过class获取Bean.
     * @param clazz
     * @param <T>
     * @return
     */
    public static <T> T getBean(Class<T> clazz){
        return getApplicationContext().getBean(clazz);
    }

    /**
     * 通过name,以及Clazz返回指定的Bean
     * @param name
     * @param clazz
     * @param <T>
     * @return
     */
    public static <T> T getBean(String name,Class<T> clazz){
        return getApplicationContext().getBean(name, clazz);
    }
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值