Springboot整合c3p0(mysql,oracle),mybatis开发web项目

创建项目

登录网址: http://start.spring.io/    进行简单的设置,自动生成Springboot项目

添加其他依赖

   <!--lombok约束-->
   <dependency>
      <groupId>org.projectlombok</groupId>
      <artifactId>lombok</artifactId>
   </dependency>
   <!--日记-->
   <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>log4j-over-slf4j</artifactId>
   </dependency>
   <!--oracle-->
   <dependency>
      <groupId>com.oracle</groupId>
      <artifactId>ojdbc6</artifactId>
      <version>11.2.0.1.0</version>
   </dependency>
   <!--MySQL数据库-->
 <dependency>
	<groupId>mysql</groupId>
	<artifactId>mysql-connector-java</artifactId>
	<scope>runtime</scope>
 </dependency>
   <!--c3p0连接池-->
   <dependency>
      <groupId>com.mchange</groupId>
      <artifactId>c3p0</artifactId>
      <version>0.9.5.2</version>
   </dependency>
   <!-- 配置devtools开启热部署 -->
   <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-devtools</artifactId>
   </dependency>


<build>
   <plugins>
      <plugin>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-maven-plugin</artifactId>
         <configuration>
            <fork>true</fork><!-- 如果没有该项配置,devtools不会起作用,即应用不会restart -->
         </configuration>
      </plugin>
      <!-- spring Boot在编译的时候,是有默认JDK版本的,如果我们期望使用我们要的JDK版本的话,那么要配置-->
      <plugin>
         <artifactId>maven-compiler-plugin</artifactId>
         <configuration>
            <source>1.8</source>
            <target>1.8</target>
         </configuration>
      </plugin>
   </plugins>
</build>

application-c3p0.properties

  在resource目录下添加application-c3p0.xml文件,该文件是c3p0连接池的配置.如下:

#使用自定义的c3p0连接池配置:oracle
spring.datasource.c3p0.driverClass=oracle.jdbc.driver.OracleDriver
spring.datasource.c3p0.jdbcUrl=jdbc:oracle:thin:@172.117.45.13:1521:oratest
spring.datasource.c3p0.user=root
spring.datasource.c3p0.password=best

#MySQL
#spring.datasource.c3p0.driverClass=com.mysql.jdbc.Driver
#spring.datasource.c3p0.jdbcUrl=jdbc:mysql://localhost:3306/springboot
#spring.datasource.c3p0.user=root
#spring.datasource.c3p0.password=mlsama
#spring.datasource.c3p0.maxPoolSize=30
#spring.datasource.c3p0.minPoolSize=10
#spring.datasource.c3p0.initialPoolSize=10

##连接池大小管理
##初始化时获取三个连接,取值应在minPoolSize与maxPoolSize之间。Default:3(规范值:20,可根据系统链路总体性能进行更改)
spring.datasource.c3p0.initialPoolSize=5
##连接池中保留的最小连接数。Default:3(规范值:20,可根据系统链路总体性能进行更改)
spring.datasource.c3p0.minPoolSize=5
##连接池中保留的最大连接数。Default:15(规范值:100~500之间,可根据系统链路总体性能进行更改)
spring.datasource.c3p0.maxPoolSize=10
##当连接池中的连接耗尽的时候c3p0一次同时获取的连接数。Default:3(规范值:5,无特殊情况不建议修改)
spring.datasource.c3p0.acquireIncrement=5

##重连接相关规范
##从数据库获取新连接失败后重复尝试的次数。Default:30
spring.datasource.c3p0.acquireRetryAttempts=30
##两次连接中间隔时间,单位毫秒。Default:1000
spring.datasource.c3p0.acquireRetryDelay=1000
##当连接池用完时客户端调用getConnection()后等待获取新连接的时间,超时后将抛出SQLException,如设为0则无限期等待。单位毫秒。Default:0(不建议此配置使用)
#spring.datasource.c3p0.checkoutTimeout=0

##连接池的大小和连接的生存时间管理规范
##连接的最大空闲时间,单位秒,如果超过这个时间,某个数据库连接还没有被使用,则会断开掉这个连接。如果为0,则永远不会断开连接,即回收此连接。Default:0(规范值:120,无特殊情况不建议修改)
spring.datasource.c3p0.maxIdleTime=120
##配置连接的生存时间,超过这个时间的连接将由连接池自动断开丢弃掉。当然正在使用的连接不会马上断开,而是等待 它close再断开。配置为0的时候则不会对连接的生存时间进行限制。(规范值:0,除非使用其他类型数据库)
spring.datasource.c3p0.maxConnectionAge=0

##配置PreparedStatement缓存规范
##连接池为数据源缓存的PreparedStatement的总数。default: 0
spring.datasource.c3p0.maxStatements=100
##定义了连接池内单个连接所拥有的最大缓存statements数。Default:0(规范值:5,无特殊情况不建议修改)
spring.datasource.c3p0.maxStatementsPerConnection=5

##配置连接测试
##SQL检测语句。Default:null
spring.datasource.c3p0.preferredTestQuery=SELECT SYSDATE FROM DUAL
##用来配置测试空闲连接的间隔时间,单位秒。测试方式还是上面的两种之一,因为它保证连接池会每隔一定时间对空闲连接进行一次测试,从而保证有效的空闲连接能每隔一定时间访问一次数据库,为0则不测试。Default:0
spring.datasource.c3p0.idleConnectionTestPeriod=120

##c3p0是异步操作的,缓慢的JDBC操作通过进程完成。扩展这些操作可以有效的提升性能通过多线程实现多个操作同时被执行。Default:3
spring.datasource.c3p0.numHelperThreads=3

 

application.properties

  在application.properties文件中添加如下内容:

#修改端口
server.port=8888

#导入application-c3p0.properties文件,按application-xxxx.properties格式起名,导入时只要写xxxx就好
spring.profiles.active=c3p0

#mybaties配置 导入文件需要   classpath:
#类型别名扫描基础包
mybatis.typeAliasesPackage=com.mlsama.springbootoracle.pojo
#SQL语句映射文件
mybatis.mapperLocations=classpath:mappers/**/*Mapper.xml
#核心配置文件
mybatis.configLocation=classpath:mybatis-config.xml

#springMVC的配置
#视图前缀
spring.mvc.view.prefix=/html/
#视图后缀
spring.mvc.view.suffix=.html

mybatis-config.xml

 在resource目录下创建这个文件,这是mybatis全局配置文件,进行一些全局属性的配置

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
    <settings>
        <!-- 全局映射器启用缓存 -->
        <setting name="cacheEnabled" value="true"/>
        <!-- 对于未知的SQL查询,允许返回不同的结果集以达到通用的效果-->
        <setting name="multipleResultSetsEnabled" value="true"/>
        <!-- 允许使用列标签代替列名 -->
        <setting name="useColumnLabel" value="true"/>
        <!-- 允许使用自定义的主键值(比如由程序生成的UUID 32位编码作为键值),数据表的PK生成 -->
        <setting name="useGeneratedKeys" value="true"/>
        <!-- 对于批量更新操作缓存SQL以提高性能  -->
        <setting name="defaultExecutorType" value="SIMPLE"/>
        <!-- 数据库超过25000秒仍未响应则超时 -->
        <setting name="defaultStatementTimeout" value="25000"/>
        <!--开启驼峰式命名规则映射-->
        <setting name="mapUnderscoreToCamelCase" value="true" />
    </settings>
</configuration>

整合c3p0连接池

  在主包下创建包config并创建类DataSourceConfiguration,具体如下:

/**
 * 自定义数据源: c3p0
 *
 * @author mlsama
 * @version Id: DataSourceConfiguration.java, v 0.1 2018/7/24 15:32 Tisson Exp $$
 */
@Configuration      //声明为配置类,相当于<beans>标签
public class DataSourceConfiguration {

    @Bean(name = "dataSource")  //对象及名称,相当于<bean>标签
    @Primary        //主要的候选者
    //配置属性,prefix : 前缀 spring.datasource固定
    @ConfigurationProperties(prefix = "spring.datasource.c3p0")
    public DataSource createDataSource(){
        return DataSourceBuilder.create() // 创建数据源构建对象
                .type(ComboPooledDataSource.class) // 设置数据源类型
                .build(); // 构建数据源对象

    }
}

修改启动类

   启动类不需要修改也可以运行,但是运行时会打印多余的日记,可以手动设置关闭.

// 代表为SpringBoot应用的运行主类,默认扫描该类所在包下的所有包
@SpringBootApplication(scanBasePackages = {"com.mlsama.springbootoracle"})
//@ImportResource(locations = {"classpath:application.xml","xxxx"})    //引入配置文件,是个数组,可引入多个
public class SpringbootOracleApplication {

   public static void main(String[] args) {
      /** 创建SpringApplication应用对象 */
      SpringApplication springApplication =
            new SpringApplication(SpringbootOracleApplication.class);
      /** 设置横幅模式(设置关闭) */
      springApplication.setBannerMode(Banner.Mode.OFF);
      /** 运行 */
      springApplication.run(args);
   }
}

定义实体类

@Data
public class Deallog {

    /** 系统流水号 */
    private String logSeq;

    /** 消息码 */
    private String mti;

    /** 交易处理码 */
    private String tradeCode;

    /** 主账号 */
    private String account;

    /** 交易金额 */
    private String amount;

    /** 交易日期 YYYYMMDD */
    private String tradeDate;

    /** 交易时间 hhmmss*/
    private String tradeTime;

    /** 外系统流水号 */
    private String extSeq;
}

controller

@Controller
@RequestMapping("/deallog")
public class DeallogController {
    //引入manager
    @Autowired
    private DeallogManager deallogManager;

    /**
     * 显示查询结果
     * @return json格式的数据
     */
    @GetMapping("/showDeallogs")    //路径
    @ResponseBody                   //json格式
    public List<Deallog> showDeallogs(){
        return deallogManager.queryDeallogs();
    }
}

统一管理层

@Service
public class DeallogManager {

    //注入api
    @Autowired
    private DeallogService deallogService;

    @Transactional(readOnly = false)
    public List<Deallog> queryDeallogs(){
        return deallogService.findDeallogs();
    }

}

业务层

  API :

public interface DeallogService {

    List<Deallog> findDeallogs();
}

service :

@Service
public class DeallogServiceImpl implements DeallogService {
    //注入mapper接口
    @Autowired
    private DeallogMapper deallogMapper;
    @Override
    public List<Deallog> findDeallogs() {
        return deallogMapper.findDeallogs();
    }
}

mapper接口

@Mapper     //注明是mapper接口
public interface DeallogMapper {

    List<Deallog> findDeallogs();
}

dao层DeallogMapper.xml文件

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!--名称空间:接口全路径-->
<mapper namespace="com.mlsama.springbootoracle.mapper.DeallogMapper">

    <!--接口方法,id为方法名称-->
    <select id="findDeallogs" resultType="deallog">
        SELECT rownum,d.* FROM T_PGW_DEALLOG d
              WHERE <![CDATA[rownum < 10 ]]> and d.proc_code='9527' and d.rsp_code='0000'
    </select>
</mapper>

项目结构

  至此,一个简单的web项目已经完成.总的结构如下:

运行启动类,访问: http://127.0.0.1:8888/deallog/showDeallogs

至此,基础的Springboot项目已经完成,可以进行业务功能的开发了.

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值