spring-boot-JdbcTemplate
添加依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
自定义数据源
spring-boot-starter-jdbc 默认使用tomcat-jdbc数据源
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.0.19</version>
</dependency>
数据源配置
spring.datasource.url = jdbc:mysql://localhost:3306/spring?useUnicode=true&characterEncoding=utf-8
spring.datasource.username = root
spring.datasource.password = root
spring.datasource.driver-class-name = com.mysql.jdbc.Driver
配置自己的数据源
@Autowired
private Environment env;
//destroy-method="close"的作用是当数据库连接不使用的时候,就把该连接重新放到数据池中,方便下次使用调用.
@Bean(destroyMethod = "close")
public DataSource dataSource() {
DruidDataSource dataSource = new DruidDataSource();
dataSource.setUrl(env.getProperty("spring.datasource.url"));
//用户名
dataSource.setUsername(env.getProperty("spring.datasource.username"));
//密码
dataSource.setPassword(env.getProperty("spring.datasource.password"));
dataSource.setDriverClassName(env.getProperty("spring.datasource.driver-class-name"));
//初始化时建立物理连接的个数。初始化发生在显示调用init方法,或者第一次getConnection时
dataSource.setInitialSize(2);
//最大连接池数量
dataSource.setMaxActive(20);
//最小连接池数量
dataSource.setMinIdle(0);
//获取连接时最大等待时间,单位毫秒。配置了maxWait之后,缺省启用公平锁,并发效率会有所下降,
//如果需要可以通过配置 useUnfairLock属性为true使用非公平锁。
dataSource.setMaxWait(60000);
//用来检测连接是否有效的sql,要求是一个查询语句,常用select 'x'。
//如果validationQuery为null,testOnBorrow、testOnReturn、testWhileIdle都不会其作用。
dataSource.setValidationQuery("SELECT 1");
//申请连接时执行 validationQuery检测连接是否有效,做了这个配置会降低性能。
dataSource.setTestOnBorrow(false);
//建议配置为true,不影响性能,并且保证安全性。申请连接的时候检测,
// 如果空闲时间大于timeBetweenEvictionRunsMillis,执行validationQuery检测连接是否有效。
dataSource.setTestWhileIdle(true);
//是否缓存preparedStatement,也就是PSCache。PSCache对支持游标的数据库性能提升巨大,
// 比如说oracle。在mysql下建议关闭。
dataSource.setPoolPreparedStatements(false);
return dataSource;
}
定义实体对象
public class LearnResouce {
private Long id;
private String author;
private String title;
private String url;
// SET和GET方法
}
定义dao接口
public interface LearnDao {
int add(LearnResouce learnResouce);
int update(LearnResouce learnResouce);
int deleteByIds(String ids);
LearnResouce queryLearnResouceById(Long id);
Page queryLearnResouceList(Map<String,Object> params);
}
定义 dao 实现
@Repository
public class LearnDaoImpl implements LearnDao {
@Autowired
private JdbcTemplate jdbcTemplate;
@Override
public int add(LearnResouce learnResouce) {
return jdbcTemplate.update("insert into learn_resource(author, title,url) values(?, ?, ?)",
learnResouce.getAuthor(), learnResouce.getTitle(), learnResouce.getUrl());
}
@Override
public int update(LearnResouce learnResouce) {
return jdbcTemplate.update("update learn_resource set author=?,title=?,url=? where id = ?",
new Object[]{learnResouce.getAuthor(), learnResouce.getTitle(), learnResouce.getUrl(),
learnResouce.getId()});
}
@Override
public int deleteByIds(String ids) {
return jdbcTemplate.update("delete from learn_resource where id in(" + ids + ")");
}
@Override
public LearnResouce queryLearnResouceById(Long id) {
List<LearnResouce> list = jdbcTemplate.query("select * from learn_resource where id = ?",
new Object[]{id}, new BeanPropertyRowMapper(LearnResouce.class));
if (null != list && list.size() > 0) {
LearnResouce learnResouce = list.get(0);
return learnResouce;
} else {
return null;
}
}
@Override
public Page queryLearnResouceList(Map<String, Object> params) {
StringBuffer sql = new StringBuffer();
sql.append("select * from learn_resource where 1=1");
if (!StringUtil.isNull((String) params.get("author"))) {
sql.append(" and author like '%").append((String) params.get("author")).append("%'");
}
if (!StringUtil.isNull((String) params.get("title"))) {
sql.append(" and title like '%").append((String) params.get("title")).append("%'");
}
Page page = new Page(sql.toString(), Integer.parseInt(params.get("page").toString()),
Integer.parseInt(params.get("rows").toString()), jdbcTemplate);
return page;
}
}
参考:
原始链接:http://tengj.top/2017/04/13/springboot8/
spring-boot-JdbcTemplate的更多相关文章
- spring boot(二): spring boot+jdbctemplate+sql server
前言 小项目或者做demo时可以使用jdbc+sql server解决即可,这篇就基于spring boot环境使用jdbc连接sql server数据库,和spring mvc系列保持一致. 在sp ...
- Spring Boot 2.x 学习专栏
Spring Boot 2.0 入门指南 Spring Boot 2.0 返回JSP页面实战 Spring Boot 2.0 热部署指南 Spring Boot 2.0 整合FreeMarker模板引 ...
- 最全spring boot视频系列,你值得拥有
================================== 从零开始学Spring Boot视频 ================================== àSpringBoot ...
- 1.spring boot起步之Hello World【从零开始学Spring Boot】
[视频&交流平台] àSpringBoot视频 http://study.163.com/course/introduction.htm?courseId=1004329008&utm ...
- 0. 前言【从零开始学Spring Boot】
[视频&交流平台] àSpringBoot视频 http://study.163.com/course/introduction.htm?courseId=1004329008&utm ...
- 0. 资料官网【从零开始学Spring Boot】
[视频&交流平台] àSpringBoot视频 http://study.163.com/course/introduction.htm?courseId=1004329008&utm ...
- 43. Spring Boot动态数据源(多数据源自动切换)【从零开始学Spring Boot】
[视频&交流平台] àSpringBoot视频 http://study.163.com/course/introduction.htm?courseId=1004329008&utm ...
- spring boot与jdbcTemplate的整合案例2
简单入门了spring boot后,接下来写写跟数据库打交道的案例.博文采用spring的jdbcTemplate工具类与数据库打交道. 下面是搭建的springbootJDBC的项目的总体架构图: ...
- spring boot + druid + 封装JdbcTemplate
本源码内容如下: spring boot项目 用的druid连接池 druid监控页面配置 数据操作用spring jdbctemplate 进一步封装spring jdbctemplate支持用对象 ...
- spring boot 系列之三:spring boot 整合JdbcTemplate
前面两篇文章我们讲了两件事情: 通过一个简单实例进行spring boot 入门 修改spring boot 默认的服务端口号和默认context path 这篇文章我们来看下怎么通过JdbcTemp ...
随机推荐
- 零拷贝Zero-Copy(NIO)
介绍 Java 的zero copy多在网络应用程序中使用.Java的libaries在linux和unix中支持zero copy,关键的api是java.nio.channel.FileChann ...
- 第89天:HTML5中 访问历史、全屏和网页存储API
一.访问历史 API 通过history对象实现前进.后退和刷新之类的操作 history新增的两个方法history.replaceState()和history.pushState()方法属于HT ...
- css 层加透明度后文字依然清晰
background: rgba(, , , !important; /*实现FF背景透明,文字不透明*/ filter: Alpha(opacity=); background: #0a0a0a; ...
- 【bzoj3533】[Sdoi2014]向量集 线段树+STL-vector维护凸包
题目描述 维护一个向量集合,在线支持以下操作:"A x y (|x|,|y| < =10^8)":加入向量(x,y);"Q x y l r (|x|,|y| < ...
- android面试(5)---SQL数据库
SQL基础: 1.如何查询table1从20到30条记录: select * from table1 limit 19,11 2.替换id=1,name =deman的记录? replace into ...
- NewCaffe
NewCaffe
- 51nod 1526 分配笔名(字典树+贪心)
题意: 班里有n个同学.老师为他们选了n个笔名.现在要把这些笔名分配给每一个同学,每一个同学分配到一个笔名,每一个笔名必须分配给某个同学.现在定义笔名和真名之间的相关度是他们之间的最长公共前缀.设笔名 ...
- Docker学习笔记二:Docker常用命令及提升拉取镜像的速度
一.Docker命令: 1.docker images //命令用来查看docker中所包含的镜像信息 2.docker ps -a //命令用来查看docker中所包含所有容器信息(运行状 ...
- (转载)Cobalt Strike tutorial下针对CVE-2017-0199利用
CVE-2017-0199利用OLE对象嵌入Word / RTF文档的方式,使得可以在没有用户交互的情况下执行其内容.OLE由许多不同的程序支持,OLE通常用于使在另一个程序中可用的程序中创建的内容. ...
- bzoj4753: [Jsoi2016]最佳团体(分数规划+树形依赖背包)
菜菜推荐的“水题”虐了我一天T T...(菜菜好强强qwq~ 显然是个分数规划题,二分答案算出p[i]-mid*s[i]之后在树上跑依赖背包,选k个最大值如果>0说明还有更优解. 第一次接触树形 ...