简介:

  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. 记录一个因sqlmap导致的错误

    <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE sqlMap PUBLIC "- ...

  2. Android学习之Activity跳转与传值

    Activity跳转与传值,主要是通过Intent类,Intent的作用是激活组件和附带数据. 一.Activity跳转 方法一 Intent intent = new Intent(A.this, ...

  3. B. Clique Problem(贪心)

    题目链接: B. Clique Problem time limit per test 2 seconds memory limit per test 256 megabytes input stan ...

  4. python中的赋值与拷贝(浅拷贝与深拷贝)

    1.赋值与拷贝 直接赋值(b=a)是传引用,b改动a也会改动. a = [1, 2, 3, 4] b = a b[1] = 999 print(a, b) #[1, 999, 3, 4] [1, 99 ...

  5. prefixfree.min.js 的用途

    简单而言,这东西就是自动加前缀的,在link中,或是style中,或是dom元素的style中书写CSS3 code,或是jQuery .css()方法此脚本会自动补上需要的前缀,让响应的浏览器支持该 ...

  6. (八)js函数二

    1.变量 a)局部变量:在所有函数内部定义的变量,或者在函数内部未使用var声明的变量也属于全局变量. b)全局变量:在所有函数外部定义的变量. eg: 1)     var a = 5,b = 4, ...

  7. HDU - 6333:Harvest of Apples (组合数前缀和&莫队)

    There are n n apples on a tree, numbered from 1 1 to n n . Count the number of ways to pick at most ...

  8. Log4j日志配置说明

    一.Log4j简介 Log4j有三个主要的组件:Loggers(记录器),Appenders (输出源)和Layouts(布局).这里可简单理解为日志类别,日志要输出的地方和日志以何种形式输出.综合使 ...

  9. 2018年总结和2019年的Flag

    ---恢复内容开始--- 目前截止到现在工作将近一年半了,今天工作上主要后端主要是用了两种语言,java和Python(2.7),今年完成主要的工作主要使用Python在写一些脚本来满足财务和人资部门 ...

  10. Linux C程序操作Mysql 调用PHP采集淘宝商品

    还是继续这个项目. 在上一篇Linux下利用Shell使PHP并发采集淘宝产品中,采用shell将对PHP的调用推到后台执行,模拟多线程. 此方法有一致命缺点,只能人工预判每个程序执行时间.如果判断时 ...