springboot配置访问sqlserver,mysql数据库以及ssm的公共业务逻辑层抽取
2017-11-11 18:22
543 查看
springboot的搭建:http://blog.csdn.net/goligory/article/details/78404480
最近喜欢用springboot,有时间就研究了一下,因为经常用sqlserver,在网上查了半天没有什么很好的配置,在抽取业务层的时候也出点问题,还好解决了
这是一个比较简单的结构
先引入sqlserver和mysql的依赖,注意不要重复,这么低级的错误我都不知道自己怎么犯的
这是sqlserver的连接配置
相关含义可以看看这篇文章:https://segmentfault.com/a/1190000004316491
initial-size:指定启动连接池时,初始建立的连接数量
min-idle:指定必须保持连接的最小值
max-active:指定连接池中最大的活跃连接数.
test-on-borrow:当从连接池借用连接时,是否测试该连接.
max-wait:指定连接池等待连接返回的最大等待时间,毫秒单位
time-between-eviction-runs-millis:指定空闲连接检查、废弃连接清理、空闲连接池大小调整之间的操作时间间隔
min-evictable-idle-time-millis:指定一个空闲连接最少空闲多久后可被清除.
validation-query:指定获取连接时连接校验的sql查询语句.
test-While-Idle当连接空闲时,是否执行连接测试.
test-on-return:在连接归还到连接池时是否测试该连接.
pool-prepared-statements:指定是否池化statements
其他的看demo
mysql连接配置,url是一行的我分开显示的
url: jdbc:mysql://localhost:3306/bdshop?createDatabaseIfNotExist=true&useUnicode=true&useUnicode=true
&characterEncoding=utf8&autoReconnect=true&verifyServerCertificate=false&useSSL=false
&sessionVariables=sql_mode='NO_ENGINE_SUBSTITUTION'&jdbcCompliantTruncation=false
driver-class: com.mysql.jdbc.Driver
在访问数据库时指定编码方式是否使用userssl等等
抽取公共业务层:
这样重用率会好很多,业务层在一块,所有工具类在一块分类显示,这样整体结构不冗杂
下面细说一下抽取业务层:
BaseMapper<T>
public interface BaseMapper<T> {
int insert(int id);
}
BaseService<T>:继承BaseMapper<T>
BaseServiceImp<T>实现BaseService<T>,定义一个返回mapper接口的抽象方法等会有用
public abstract class BaseServiceImp<T> implements BaseService<T> {
protected abstract BaseMapper<T> getMapper();
public int insert(int id){
return getMapper().insert(id);
}
}
下面看一下模块层mapper继承公共BaseMapper,传入请求参数
service继承公共BaseService,传入请求参数,相当于继承了BaseMapper
imp继承BaseServiceImp,实现模块Service,向公共层传入参数,注意加上@Service,公共可以不加
BaseServiceImp没有实现getMapper() 方法,在这里实现,return指定模块的aMapper,这样就相当于是aMapper调用insert了
这个地方我一开始没注意,调用insert时在BaseServiceImp能传入参数,但是请求不了BaseMapper去查询数据库,一直报null
AMapper.xml指定AMapper.java
这样controller不论调用login还是insert都可以进行查询了,清晰的结构还是蛮重要的
对于记录也是心得没多久,有不对地方多多指导,不好的地方多多包涵
码云地址:https://gitee.com/tickingbomb/tickingbomb/tree/mtgg/
最近喜欢用springboot,有时间就研究了一下,因为经常用sqlserver,在网上查了半天没有什么很好的配置,在抽取业务层的时候也出点问题,还好解决了
这是一个比较简单的结构
先引入sqlserver和mysql的依赖,注意不要重复,这么低级的错误我都不知道自己怎么犯的
<!-- https://mvnrepository.com/artifact/com.microsoft.sqlserver/sqljdbc4 --> <dependency> <groupId>com.microsoft.sqlserver</groupId> <artifactId>sqljdbc4</artifactId> <version>4.0</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency>
这是sqlserver的连接配置
spring: datasource: url: jdbc:sqlserver://localhost:1433;DatabaseName=xxxxx driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver username: sa password: 123456 initial-size: 1 min-idle: 1 max-active: 20 test-on-borrow: true max-wait: 60000 time-between-eviction-runs-millis: 60000 min-evictable-idle-time-millis: 300000 validation-query: SELECT 1 FROM DUAL test-While-Idle: true test-on-return: false pool-prepared-statements: false max-pool-prepared-statement-per-connection-size: 20 filters: stat,wall,log4j,config
相关含义可以看看这篇文章:https://segmentfault.com/a/1190000004316491
initial-size:指定启动连接池时,初始建立的连接数量
min-idle:指定必须保持连接的最小值
max-active:指定连接池中最大的活跃连接数.
test-on-borrow:当从连接池借用连接时,是否测试该连接.
max-wait:指定连接池等待连接返回的最大等待时间,毫秒单位
time-between-eviction-runs-millis:指定空闲连接检查、废弃连接清理、空闲连接池大小调整之间的操作时间间隔
min-evictable-idle-time-millis:指定一个空闲连接最少空闲多久后可被清除.
validation-query:指定获取连接时连接校验的sql查询语句.
test-While-Idle当连接空闲时,是否执行连接测试.
test-on-return:在连接归还到连接池时是否测试该连接.
pool-prepared-statements:指定是否池化statements
其他的看demo
mysql连接配置,url是一行的我分开显示的
url: jdbc:mysql://localhost:3306/bdshop?createDatabaseIfNotExist=true&useUnicode=true&useUnicode=true
&characterEncoding=utf8&autoReconnect=true&verifyServerCertificate=false&useSSL=false
&sessionVariables=sql_mode='NO_ENGINE_SUBSTITUTION'&jdbcCompliantTruncation=false
driver-class: com.mysql.jdbc.Driver
在访问数据库时指定编码方式是否使用userssl等等
抽取公共业务层:
这样重用率会好很多,业务层在一块,所有工具类在一块分类显示,这样整体结构不冗杂
下面细说一下抽取业务层:
BaseMapper<T>
public interface BaseMapper<T> {
int insert(int id);
}
BaseService<T>:继承BaseMapper<T>
public interface BaseService<T> extends BaseMapper<T> { }
BaseServiceImp<T>实现BaseService<T>,定义一个返回mapper接口的抽象方法等会有用
public abstract class BaseServiceImp<T> implements BaseService<T> {
protected abstract BaseMapper<T> getMapper();
public int insert(int id){
return getMapper().insert(id);
}
}
下面看一下模块层mapper继承公共BaseMapper,传入请求参数
public interface AMapper extends BaseMapper<User> { public User login(User user); }
service继承公共BaseService,传入请求参数,相当于继承了BaseMapper
public interface AService extends BaseService<User> { public User login(User user); }
imp继承BaseServiceImp,实现模块Service,向公共层传入参数,注意加上@Service,公共可以不加
BaseServiceImp没有实现getMapper() 方法,在这里实现,return指定模块的aMapper,这样就相当于是aMapper调用insert了
这个地方我一开始没注意,调用insert时在BaseServiceImp能传入参数,但是请求不了BaseMapper去查询数据库,一直报null
@Transactional @Service public class AServiceImp extends BaseServiceImp<User> implements AService { @Resource private AMapper aMapper; @Override protected BaseMapper<User> getMapper(){ return this.aMapper; } @Override public User login(User user) { System.out.println("imp--"+user); user= aMapper.login(user); return user; } }
AMapper.xml指定AMapper.java
这样controller不论调用login还是insert都可以进行查询了,清晰的结构还是蛮重要的
对于记录也是心得没多久,有不对地方多多指导,不好的地方多多包涵
码云地址:https://gitee.com/tickingbomb/tickingbomb/tree/mtgg/
相关文章推荐
- 解决spring boot中swagger-ui.html访问404以及配置全局header
- 快速搭建springboot框架以及整合ssm+shiro+安装Rabbitmq和Erlang、Mysql下载与配置
- Spring boot 默认静态资源路径与手动配置访问路径的方法
- SpringBoot+spring-date-jpa+Hibernate 整合mysql 与sqlserver 配置文件信息
- springboot读取自己定义的配置文件的方式以及使用joda_time来处理时间日期
- [置顶] spring boot项目实战之公共代码抽取
- [置顶] spring boot项目实战之公共代码抽取
- shiro在SSM以及与Springboot+Mybatis中的实践
- maven的Springboot项目的携程Apollo配置中心的配置以及使用
- Spring Boot基本配置和常见的运行时错误以及解决
- 详解SpringBoot初始教程之Tomcat、Https配置以及Jetty优化
- spring boot(二)spring data jpa以及事物配置
- Springboot 项目pom.xml 配置文件以及启动类的一些配置
- springBoot配置静态访问资源
- Spring Boot 揭秘与实战 附录 - Spring Boot 公共配置
- [置顶] spring boot项目实战之公共代码抽取
- spring boot 日志介绍 以及 logback配置示例
- 从零开发校园商铺平台(SSM到SpringBoot)三.Logback配置与使用
- Spring-boot 配置Aop获取controller里的request中的参数以及其返回值
- [置顶] spring boot项目实战之公共代码抽取