简介:

  Srping毕竟是一站式框架,所以也有操作数据库的东西,那就是jdbcTemplate,介绍一下jdbcTemplate的简单使用。

除了要引入必要的包以外,还需要引入 spring-jdbc

直接使用:

//配置数据库连接
DriverManagerDataSource dataSource= new DriverManagerDataSource();
dataSource.setDriverClassName("com.mysql.jdbc.Driver");
dataSource.setUrl("jdbc:mysql://localhost:3306/temp_db");
dataSource.setUsername("root");
dataSource.setPassword("root");
//创建jdbcTemplate
JdbcTemplate jdbcTemplate = new JdbcTemplate();
jdbcTemplate.setDataSource(dataSource);
//执行sql
String sql="insert into users values(null,'张惠妹',17)";
jdbcTemplate.execute(sql);

和配置文件结合使用:

Book实体类和BookDao:

package com.zy.domain;

public class Book {
private int id;
private String name;
private double price; public int getId() {
return id;
} public void setId(int id) {
this.id = id;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public double getPrice() {
return price;
} public void setPrice(double price) {
this.price = price;
} @Override
public String toString() {
return "Book{" +
"id=" + id +
", name='" + name + '\'' +
", price=" + price +
'}';
}
}
public class BookDao {
private JdbcTemplate jdbcTemplate; //set方法
public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
this.jdbcTemplate = jdbcTemplate;
} //新增
public void addBook(Book book) {
String sql = "insert into book values(null,?,?)";
Object[] paramArr = {book.getName(), book.getPrice()};
jdbcTemplate.update(sql, paramArr);
} //修改
public void editBook(Book book) {
String sql = "update book set name=?, price=? where id=?";
Object[] paramArr = {book.getName(), book.getPrice(), book.getId()};
jdbcTemplate.update(sql, paramArr);
} //删除
public void delBook(int id) {
String sql = "delete form book where id=?";
jdbcTemplate.update(sql, id);
} // 查询书名
public String getNameById(int id){
String sql = "select name from book where id=?";
String bookname = jdbcTemplate.queryForObject(sql, String.class, id);
return bookname;
} // 查询总记录数
public int getCount() {
String sql = "select count(*) from book";
Integer count = jdbcTemplate.queryForObject(sql, Integer.class);
return count;
} // 查询某本书信息
public Book getBookById(int id) {
String sql = "select * from book where id=?";
Book book = jdbcTemplate.queryForObject(sql, ParameterizedBeanPropertyRowMapper.newInstance(Book.class), id);
return book;
} // 查询所有书集合
public List<Book> getAllBooks() {
String sql = "select * from book";
List<Book> bookList = jdbcTemplate.query(sql, ParameterizedBeanPropertyRowMapper.newInstance(Book.class));
return bookList;
}
}

添加数据库配置文件jdbc.properties

jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://127.0.0.1:3306/temp_db?useUnicode=true&characterEncoding=utf8&autoReconnect=true\
&allowMultiQueries=true
jdbc.username=root
jdbc.password=root

然后配置我们的spring配置文件 applicationContext.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
"> <!--1 引入jdbc配置文件-->
<context:property-placeholder location="classpath:jdbc.properties"></context:property-placeholder> <!--2 根据jdbc配置文件 配置c3po连接池-->
<bean id="c3poDataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass" value="com.mysql.jdbc.Driver"/>
<property name="jdbcUrl" value="jdbc:mysql://localhost:3306/temp_db"/>
<property name="user" value="root"/>
<property name="password" value="root"/>
</bean> <!--3 jdbc 模板-->
<bean id="jdbcTemplate123" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref="c3poDataSource"/>
</bean> <!--4 配置bookdao使用的jdbcTemplate-->
<bean id="bookDao" class="com.zy.dao.BookDao">
<property name="jdbcTemplate" ref="jdbcTemplate123"></property> <!--下面这个配置 在我们的BookDao继承了JdbcDaoSupport以后 可以直接略过第三步 直接给bookDao配置数据库连接-->
<!--<property name="dataSource" ref="c3poDataSource"></property>-->
</bean>
</beans>

测试:

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = "classpath:applicationContext.xml")
public class BookDaoTest {
@Value("#{bookDao}")
BookDao bookDao; @Test
public void setJdbcTemplate() throws Exception {
Book book = new Book();
book.setName("凌波微步");
book.setPrice(20); bookDao.addBook(book);
} @Test
public void getNameById() throws Exception {
String name = bookDao.getNameById(1);
System.out.println(name);
} @Test
public void getAllBooks() throws Exception {
List<Book> list = bookDao.getAllBooks();
for (Book book : list) {
System.out.println(book);
}
} }

--------------------------------------------------------------------以上。

Spring总结八:jdbcTemplate的简单使用的更多相关文章

  1. Spring MVC(八)--控制器接受简单列表参数

    有些场景下需要向后台传递一个数组,比如批量删除传多个ID的情况,可以使用数组传递,数组中的ID元素为简单类型,即基本类型. 现在我的测试场景是:要从数据库中查询minId<id<maxId ...

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

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

  3. Spring Boot之JdbcTemplate多数据源配置与使用

    之前在介绍使用JdbcTemplate和Spring-data-jpa时,都使用了单数据源.在单数据源的情况下,Spring Boot的配置非常简单,只需要在application.propertie ...

  4. Spring Boot(八):RabbitMQ详解

    Spring Boot(八):RabbitMQ详解 RabbitMQ 即一个消息队列,主要是用来实现应用程序的异步和解耦,同时也能起到消息缓冲,消息分发的作用. 消息中间件在互联网公司的使用中越来越多 ...

  5. spring boot: @Entity @Repository一个简单的数据读存储读取

    spring boot: @Entity @Repository一个简单的数据读存储读取 创建了一个实体类. 如何持久化呢?1.使用@Entity进行实体类的持久化操作,当JPA检测到我们的实体类当中 ...

  6. Spring Boot2 系列教程(十九)Spring Boot 整合 JdbcTemplate

    在 Java 领域,数据持久化有几个常见的方案,有 Spring 自带的 JdbcTemplate .有 MyBatis,还有 JPA,在这些方案中,最简单的就是 Spring 自带的 JdbcTem ...

  7. Spring Boot2 系列教程(二十)Spring Boot 整合JdbcTemplate 多数据源

    多数据源配置也算是一个常见的开发需求,Spring 和 SpringBoot 中,对此都有相应的解决方案,不过一般来说,如果有多数据源的需求,我还是建议首选分布式数据库中间件 MyCat 去解决相关问 ...

  8. JDBC(三)----Spring JDBC(JDBCTemplate)

    ##  Spring  JDBC *  Spring框架对JDBC的简单封装.提供了一个JDBCTemplate对象简化JDBC的开发 1.步骤 1.导入jar包 2.创建JDBCTemplate对象 ...

  9. Spring 系列之jdbcTemplate的使用

    Spring系列之 jdbcTemplate 啥是jdncTemplate? t他是spring框架中提供的一个对象,是对原始的jdbcAPI对象的简单封装,spring框架为我们提供了很多操作,模板 ...

随机推荐

  1. debounce与throttle区别

    在2011年,Twitter网站曾爆出一个问题:在主页往下滚动时,页面会变得缓慢以致没有响应.John Resig发表了一篇文章< a blog post about the problem&g ...

  2. 本站上线KMS服务~一句命令激活windows和office

    服务器地址:kms.luody.info 更新: 脚本维护更新:2016-09-29 服务端版本:vlmcsd-1108-2017-01-19-Hotbird64 服务作用:在线激活windows和o ...

  3. 设计模式之桥接(bridge)模式

    在现实生活中,我们常常会用到两种或多种类型的笔,比如毛笔和蜡笔.假设我们需要大.中.小三种类型的画笔来绘制12中不同的颜色,如果我们使用蜡笔,需要准备3*12=36支.但如果使用毛笔的话,只需要提供3 ...

  4. 51nod 1011 最大公约数GCD

    输入2个正整数A,B,求A与B的最大公约数. 收起   输入 2个数A,B,中间用空格隔开.(1<= A,B <= 10^9) 输出 输出A与B的最大公约数. 输入样例 30 105 输出 ...

  5. [BZOJ]4034: [HAOI2015]树上操作

    [HAOI2015]树上操作 传送门 题目大意:三个操作 1:a,b,c b节点权值+c 2:a,b,c 以b为根的子树节点权值全部+c 3:a,b 查询b到根路径的权值和. 题解:树链剖分 操作1 ...

  6. FastAdmin 一键 CRUD 生成时方法不存在的问题分析

    FastAdmin 一键 CRUD 生成时方法不存在的问题分析 有群友反馈 使用 一键 CRUD 生成时不成功. 我试了以下命令 php think crud -t test -u 1 是成功的. 再 ...

  7. Python学习系列(五)(文件操作及其字典)

    Python学习系列(五)(文件操作及其字典) Python学习系列(四)(列表及其函数) 一.文件操作 1,读文件      在以'r'读模式打开文件以后可以调用read函数一次性将文件内容全部读出 ...

  8. 30G 的redis 如何优化

    突然发现我们的redis 已经用了30G了,好吧这是个很尴尬的数字因为我们的缓存机器的内存目前是32G的,内存已经告竭.幸好上上周公司采购了90G的机器,现在已经零时迁移到其中的一台机器上了.(跑题下 ...

  9. Linux I2C设备驱动

    i2c设备:ts.camera.audio.gsensor.e2prom I2C基本协议: 写:开始 -> 设备地址 -> 写标志 -> 应答 -> 内部地址 -> 应答 ...

  10. switch控件的使用

    java中: public class MainActivity extends Activity implements OnCheckedChangeListener{ private Switch ...