概述
参考:http://blog.csdn.net/isea533/article/details/50359390
他数据源使用的是阿里巴巴的druid数据源,这里使用c3p0
一、框架搭建(maven构建)
1. pom文件
1) mybatis-springboot最新的核心包
官网:http://www.mybatis.org/找样例下载最新的
<groupId>org.mybatis.spring.boot</groupId>`
<artifactId>mybatis-spring-boot</artifactId>
<version>1.3.0</version>
2) mybatis-springboot最新的核心包
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
3) mybatis核心包
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.1</version>
4) springboot web依赖包
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
此外还有jdbc驱动包,数据库连接池包,根据需求添加。
2.配置文件
1) yml文件配置
默认命名为application.yml,会自动识别配置。
yml语法参考:http://blog.csdn.net/u011250882/article/details/48770237
#数据源配置 这里是c3p0数据源配置 注意冒号后面要有空格
datasource:
driverClass: com.mysql.cj.jdbc.Driver
jdbcUrl: jdbc:mysql://localhost:3306/mail??characterEncoding=utf-8&serverTimezone=UTC
user: root
password: ******
maxIdleTime: 60
initialPoolSize: 8
minPoolSize: 5
maxPoolSize: 10
# 使用c3p0数据源
type: com.mchange.v2.c3p0.ComboPooledDataSource
# MyBatis
mybatis:
# 配置类型别名
typeAliasesPackage: model
# 配置mapper的扫描,找到所有的mapper.xml映射文件
mapperLocations: classpath:mapper/*.xml
# 加载全局的配置文件
configLocation: classpath:mybatis-config.xml
实际工作中一般都使用xml配置,这里使用我不熟悉的注解配置,所以上面的mapperLocations可以不配置。
2) mybaits-config.xml配置文件
参考网址http://blog.csdn.net/javahighness/article/details/53044655
又一个:http://blog.csdn.net/isea533/article/details/50359390
<configuration>
<properties>
<property name="dialect" value="mysql" />
</properties>
<settings>
<!-- 开启驼峰匹配 -->
<setting name="mapUnderscoreToCamelCase" value="true"/>
<!-- 这个配置使全局的映射器启用或禁用缓存。系统默认值是true,设置只是为了展示出来 -->
<setting name="cacheEnabled" value="true" />
<!-- 全局启用或禁用延迟加载。当禁用时,所有关联对象都会即时加载。 系统默认值是true,设置只是为了展示出来 -->
<setting name="lazyLoadingEnabled" value="true" />
<!-- 允许或不允许多种结果集从一个单独的语句中返回(需要适合的驱动)。 系统默认值是true,设置只是为了展示出来 -->
<setting name="multipleResultSetsEnabled" value="true" />
<!--使用列标签代替列名。不同的驱动在这方便表现不同。参考驱动文档或充分测试两种方法来决定所使用的驱动。
系统默认值是true,设置只是为了展示出来 -->
<setting name="useColumnLabel" value="true" />
<!--允许 JDBC 支持生成的键。需要适合的驱动。如果设置为 true 则这个设置强制生成的键被使用,尽管一些驱动拒绝兼容但仍然有效(比如
Derby)。 系统默认值是false,设置只是为了展示出来 -->
<setting name="useGeneratedKeys" value="false" />
<!--配置默认的执行器。SIMPLE 执行器没有什么特别之处。REUSE 执行器重用预处理语句。
BATCH 执行器重用语句和批量更新 系统默认值是SIMPLE,设置只是为了展示出来 -->
<setting name="defaultExecutorType" value="SIMPLE" />
<!--设置超时时间,它决定驱动等待一个数据库响应的时间。 系统默认值是null,设置只是为了展示出来 -->
<setting name="defaultStatementTimeout" value="25000" />
</settings>
</configuration>
分页插件参考:http://412887952-qq-com.iteye.com/blog/2313030
3) mybatis配置类
@Configuration
@EnableTransactionManagement
public class MybatisConfiguration implements TransactionManagementConfigurer {
private static Log logger = LogFactory.getLog(MybatisConfiguration.class);
//配置文件取值的第一种方法
@Value("${mybatis.configLocation}")
private String configLocation;
@Value("${mybatis.mapperLocations}")
private String mapperLocations;
@Value("${mybatis.typeAliasesPackage}")
private String typeAliasesPackage;
@Autowired
private DataSource dataSource;
//配置文件读取的第二种方式
@Bean
@ConfigurationProperties("datasource")
public ComboPooledDataSource dataSource(){
return new ComboPooledDataSource();
}
@Bean
public PageHelper pageHelper(){
logger.info("MyBatis分页插件PageHelper");
//分页插件
PageHelper pageHelper = new PageHelper();
Properties properties = new Properties();
properties.setProperty("offsetAsPageNum", "true");
properties.setProperty("rowBoundsWithCount", "true");
properties.setProperty("reasonable", "true");
properties.setProperty("supportMethodsArguments", "true");
properties.setProperty("returnPageInfo", "check");
properties.setProperty("params", "count=countSql");
pageHelper.setProperties(properties);
return pageHelper;
}
@Bean(name = "sqlSessionFactory")
public SqlSessionFactory sqlSessionFactoryBean() {
try {
SqlSessionFactoryBean sessionFactoryBean = new SqlSessionFactoryBean();
sessionFactoryBean.setDataSource(dataSource);
// 读取配置
sessionFactoryBean.setTypeAliasesPackage(typeAliasesPackage);
//mapper文件目录
/*Resource[] resources = new PathMatchingResourcePatternResolver()
.getResources(mapperLocations);
sessionFactoryBean.setMapperLocations(resources);*/
//读取mybatis配置文件,插件配置
sessionFactoryBean.setConfigLocation(
new DefaultResourceLoader().getResource(configLocation));
//添加插件 (改为使用配置文件加载了)
sessionFactoryBean.setPlugins(new Interceptor[]{pageHelper()});
return sessionFactoryBean.getObject();
} catch (IOException e) {
logger.warn("mybatis resolver mapper*xml is error");
return null;
} catch (Exception e) {
logger.warn("mybatis sqlSessionFactoryBean create error");
return null;
}
}
@Bean
@Override
public PlatformTransactionManager annotationDrivenTransactionManager() {
return new DataSourceTransactionManager(dataSource);
}
}
注意:
1.这里直接用的注解方式,所以没有xml文件,上面注释掉的代码使用会启动报错。
2.分页的插件要使用4.X版本的,5.0版本以上的PageHelper没有实现Interceptor接口,会报错,5.0版本怎么用网上没找到。
二、 代码编写
1. 数据库建表
这里使用mysql随便建一个数据库,一个用户表,字段就放个id和name就可以了。
2. 写业务代码
只是为了测试框架是否搭建成功,没有写前端,直接调用接口,有返回内容就可以了。
3. dao层sql编写。
这里使用mybatis注解方式
参考地址:http://blog.csdn.net/ExcellentYuXiao/article/details/53262928
基础:http://www.tuicool.com/articles/RVraiqM
public interface UserDao {
@Select("select * from User where id = #{id}")
User queryById(Long id);
}
4.入口类
@SpringBootApplication
@ComponentScan("controller,service,conf")
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class);
}
@Bean
public EmbeddedServletContainerFactory servletContainer(){
TomcatEmbeddedServletContainerFactory factory = new TomcatEmbeddedServletContainerFactory();
factory.setPort(8033);
factory.setContextPath("/sbmybatis");
return factory;
}
}
注意:扫描的包和注解的添加,不然不能注入类,配置文件的包也要扫描。
项目地址:https://gitee.com/yangqingh/springboot-mybatis.git
最后
以上就是聪慧银耳汤为你收集整理的SpringBoot整合mybaits(c3p0数据源)的全部内容,希望文章能够帮你解决SpringBoot整合mybaits(c3p0数据源)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复