配置类书写
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);
}
}