SpringBoot整合mybaits(c3p0数据源)

参考:http://blog.csdn.net/isea533/article/details/50359390
他数据源使用的是阿里巴巴的druid数据源,这里使用c3p0

一、框架搭建(maven构建)

1. pom文件

1) mybatis-springboot最新的核心包

官网:http://www.mybatis.org/找样例下载最新的

<groupId>org.mybatis.spring.bootgroupId>`
<artifactId>mybatis-spring-bootartifactId>
<version>1.3.0version>
2) mybatis-springboot最新的核心包
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starterartifactId>
3) mybatis核心包
 <groupId>org.mybatisgroupId>
 <artifactId>mybatisartifactId>
 <version>3.4.1version>
4) springboot web依赖包
 <groupId>org.springframework.bootgroupId>
 <artifactId>spring-boot-starter-webartifactId>

此外还有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"/>
        
        <setting name="cacheEnabled" value="true" />
        
        <setting name="lazyLoadingEnabled" value="true" />
        
        <setting name="multipleResultSetsEnabled" value="true" />
        
        <setting name="useColumnLabel" value="true" />
        
        <setting name="useGeneratedKeys" value="false" />
        
        <setting name="defaultExecutorType" value="SIMPLE" />
        
        <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)