首先创建出工程
选择我们需要的模块
然后选择工作空间命名完成即可
我们选择了模块后Springboot会帮我们自动导入需要的依赖,但是我们还需要数据源
Druid的依赖和日志log4j的依赖
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.0.15</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
准备工作就算做好了,下面开始为我们的工程添加配置
配置连接数据库需要的属性
在application.properties中添加数据库信息
然后我们需要配置我们导入的数据源
配置这个数据源的细节我也不是非常了解,网上有很多,可以先当成一个固定写法
//标注着是配置类
@Configuration
//这个代码可以复制,只需要修改这个注解的第一个参数,就是你的Mybatis的XML文件存放的路径
@MapperScan(basePackages = "com.wy.*.*.SQL", sqlSessionTemplateRef = "pgSqlSessionTemplate")
public class MybatisPgConfig {
@Value("${jdbc.ds-pg.driverClassName}")
private String driver;
@Value("${jdbc.ds-pg.url}")
private String url;
@Value("${jdbc.ds-pg.username}")
private String userName;
@Value("${jdbc.ds-pg.password}")
private String passWord;
@Primary
@Bean(name = "pgDataSource", initMethod = "init", destroyMethod = "close")
public DataSource dataSource() throws SQLException {
DruidXADataSource dataSource = new DruidXADataSource();
//DruidDataSource dataSource = new DruidDataSource();
dataSource.setDriverClassName(driver);
dataSource.setUrl(url);
dataSource.setUsername(userName);
dataSource.setPassword(passWord);
//配置最大连接
dataSource.setMaxActive(100);
//配置初始连接
dataSource.setInitialSize(5);
//配置最小连接
dataSource.setMinIdle(10);
//连接等待超时时间
dataSource.setMaxWait(1000);
//间隔多久进行检测,关闭空闲连接
dataSource.setTimeBetweenEvictionRunsMillis(60000);
//一个连接最小生存时间
dataSource.setMinEvictableIdleTimeMillis(300000);
//连接等待超时时间 单位为毫秒 缺省启用公平锁,
//并发效率会有所下降, 如果需要可以通过配置useUnfairLock属性为true使用非公平锁
dataSource.setUseUnfairLock(true);
//用来检测是否有效的sql
dataSource.setValidationQuery("select '1' as txt");
dataSource.setTestWhileIdle(true);
//申请连接时执行validationQuery检测连接是否有效,配置为true会降低性能
dataSource.setTestOnBorrow(true);
//归还连接时执行validationQuery检测连接是否有效,配置为true会降低性能
dataSource.setTestOnReturn(true);
//打开PSCache,并指定每个连接的PSCache大小启用poolPreparedStatements后,
//PreparedStatements 和CallableStatements 都会被缓存起来复用,
//即相同逻辑的SQL可以复用一个游标,这样可以减少创建游标的数量。
dataSource.setPoolPreparedStatements(true);
dataSource.setMaxOpenPreparedStatements(20);
//配置sql监控的filter
dataSource.setFilters("stat,wall,log4j");
try {
dataSource.init();
} catch (SQLException e) {
e.printStackTrace();
}
AtomikosDataSourceBean xaDataSource = new AtomikosDataSourceBean();
xaDataSource.setXaDataSource(dataSource);
xaDataSource.setUniqueResourceName("pgDataSource");
return xaDataSource;
}
@Bean(name = "pgSqlSessionFactory")
public SqlSessionFactory pgSqlSessionFactory(@Qualifier("pgDataSource") DataSource dataSource)
throws Exception {
SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
bean.setDataSource(dataSource);
Resource[] rs = new
//还有这里的读取地址也需要修改为你的路径,需要注意的是在测试时候,这个路径下不能有空的xml文件(也就是那种刚刚创建的那种,不能有否则报错为文件提前结束)
PathMatchingResourcePatternResolver().getResources("classpath:SQL/*.xml");
bean.setMapperLocations(rs);
//pageHelper
Interceptor interceptor = new PageInterceptor();
Properties properties = new Properties();
properties.setProperty("helperDialect", "postgresql");
properties.setProperty("reasonable", "true");
properties.setProperty("supportMethodsArguments", "true");
properties.setProperty("pageSizeZero", "true");
properties.setProperty("params", "count=countSql");
interceptor.setProperties(properties);
bean.setPlugins(new Interceptor[]{interceptor});
org.apache.ibatis.session.Configuration configuration = bean.getObject().getConfiguration();
configuration.setMapUnderscoreToCamelCase(true);
bean.setConfiguration(configuration);
return bean.getObject();
}
@Bean(name = "pgSqlSessionTemplate")
public SqlSessionTemplate pgSqlSessionTemplate(
@Qualifier("pgSqlSessionFactory") SqlSessionFactory sqlSessionFactory) {
return new SqlSessionTemplate(sqlSessionFactory);
}
}
上面的代码需要修改两处路径,我已经注解上去,其他的都可以复制粘贴
顺便说一句,如果你的代码没问题的话, @Value这个注解中可以显示你在application.properties配置的属性值,灰色的,如果没有的话就说明有问题,需要检查
@Value("${jdbc.ds-pg.driverClassName}")
private String driver;
@Value("${jdbc.ds-pg.url}")
private String url;
@Value("${jdbc.ds-pg.username}")
private String userName;
@Value("${jdbc.ds-pg.password}")
private String passWord;
效果是这样的
首先我们需要一个和数据库里面的表对应的一个java的实体类,这个很简单我就不贴代码出来占用篇幅了
下面我们来编写Mybatis的代码,我们使用配置版的Mybatis
首先我们创建一个接口,注解不懂的可以去百度,一般使用的是@Mapperscan标注在启动类上的可以声明多个包下的接口都是映射
我们实现一个查询某张表的全部数据功能,返回值为该表实体类类型的list集合
然后我们在我们之前配置数据源的时候写入的位置创建一个XML文件来写SQL语句
好了,大功告成,我们只需要调用我们写的接口即可了
如果注解有看不懂的可以去百度一下
完成效果图
至此完成使用Druid数据源和Springboot+Mybatis整合完成对数据库的操作