添加依赖

<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的更多相关文章

  1. spring boot(二): spring boot+jdbctemplate+sql server

    前言 小项目或者做demo时可以使用jdbc+sql server解决即可,这篇就基于spring boot环境使用jdbc连接sql server数据库,和spring mvc系列保持一致. 在sp ...

  2. Spring Boot 2.x 学习专栏

    Spring Boot 2.0 入门指南 Spring Boot 2.0 返回JSP页面实战 Spring Boot 2.0 热部署指南 Spring Boot 2.0 整合FreeMarker模板引 ...

  3. 最全spring boot视频系列,你值得拥有

    ================================== 从零开始学Spring Boot视频 ================================== àSpringBoot ...

  4. 1.spring boot起步之Hello World【从零开始学Spring Boot】

    [视频&交流平台] àSpringBoot视频 http://study.163.com/course/introduction.htm?courseId=1004329008&utm ...

  5. 0. 前言【从零开始学Spring Boot】

    [视频&交流平台] àSpringBoot视频 http://study.163.com/course/introduction.htm?courseId=1004329008&utm ...

  6. 0. 资料官网【从零开始学Spring Boot】

    [视频&交流平台] àSpringBoot视频 http://study.163.com/course/introduction.htm?courseId=1004329008&utm ...

  7. 43. Spring Boot动态数据源(多数据源自动切换)【从零开始学Spring Boot】

    [视频&交流平台] àSpringBoot视频 http://study.163.com/course/introduction.htm?courseId=1004329008&utm ...

  8. spring boot与jdbcTemplate的整合案例2

    简单入门了spring boot后,接下来写写跟数据库打交道的案例.博文采用spring的jdbcTemplate工具类与数据库打交道. 下面是搭建的springbootJDBC的项目的总体架构图: ...

  9. spring boot + druid + 封装JdbcTemplate

    本源码内容如下: spring boot项目 用的druid连接池 druid监控页面配置 数据操作用spring jdbctemplate 进一步封装spring jdbctemplate支持用对象 ...

  10. spring boot 系列之三:spring boot 整合JdbcTemplate

    前面两篇文章我们讲了两件事情: 通过一个简单实例进行spring boot 入门 修改spring boot 默认的服务端口号和默认context path 这篇文章我们来看下怎么通过JdbcTemp ...

随机推荐

  1. i18n实现前端国际化(实例)

    在今日的需求中需要利用 i18n 这个框架来实现前端的国家化操作,下图是实现效果: 点击选择框实现网页上语言的切换: 下面开始实现过程: 所需工具:    - jquery-3.3.1.js 下载地址 ...

  2. 按位与&、按位或|、按位异或^

    与1进行位与&运算,值保持不变: 与0进行位与&运算,值清0: 按位与&常用于将整型变量中某些位清0,而其他位保持不变. 与1进行位或|运算,值置1: 与0进行位或|运算,值保 ...

  3. floyd最短路

    floyd可以在O(n^3)的时间复杂度,O(n^2)的空间复杂度下求解正权图中任意两点间的最短路长度. 本质是动态规划. 定义f[k][i][j]表示从i出发,途中只允许经过编号小于等于k的点时的最 ...

  4. BZOJ3714 PA2014Kuglarz(最小生成树)

    每次询问所获得的可以看做是两个前缀和的异或.我们只要知道任意前缀和的异或就可以得到答案了.并且显然地,如果知道了a和b的异或及a和c的异或,也就知道了b和c的异或.所以一次询问可以看做是在两点间连边, ...

  5. C++解析(2):进化后的 const 分析

    0.目录 1.C语言中的const 2.C++中的const 3.对比 3.1 C语言与C++中的const 3.2 C++中的const与宏定义 4.小结 1.C语言中的const const修饰的 ...

  6. CIR,CBS,EBS,PIR,PBS 名词解释 令牌桶应用

    为了达到上述目的,我们需要对进入网络的流量进行监督,实现CAR(Committed Access Rate). CAR:将进入网络的用户流量的速率限制在约定的范围之内,从而避免引起网络拥塞. CIR( ...

  7. 降雨量 HYSBZ - 1067(RMQ)

    F.A.Qs Home Discuss ProblemSet Status Ranklist Contest 入门OJ Login Register 捐赠本站 Notice:1:注册本OJ方式请见ht ...

  8. 安装lighttpd

    依赖包: zlib,pcre,cronolog,bzip2, 1: 将lighttpd的原码包.以土豆现用lighttpd配置文件为基础的lighttpd.conf文件.日志轮循工具cronolog  ...

  9. IntelJ 快捷键

    1.在IntelJ中和Eclipse中稍有不同,在Eclipse中,输入main再按Alt+/即可自动补全main函数,但是在IntellJ中则是输入psvm,选中即可 2.在方法体内部有for循环, ...

  10. iframe在ios上不能滚动问题解决

    同这篇文章一样,用到了-webkit-overflow-scrolling: touch;属性.主要解决方案是在iframe外层添加一个div,然后设置-webkit-overflow-scrolli ...