首先 dao层:

dao

  -bookdao(interface)

  -bookdaoimpl

service层:

  bookService

实体类对象

  entiry-book

测试类 Test-TestBook

结构如图所示:

xml配置:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd">
<context:component-scan base-package="com"></context:component-scan>
<!-- 数据库连接池 -->
<!-- <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"-->
<!-- destroy-method="close">-->
<!-- <property name="url" value="jdbc:mysql:///user_db" />-->
<!-- <property name="username" value="root" />-->
<!-- <property name="password" value="110120" />-->
<!-- <property name="driverClassName" value="com.mysql.jdbc.Driver" />-->
<!-- </bean>-->
<context:property-placeholder location="jdbc.properties"/>
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
<property name="driverClassName" value="${prop.driverClassName}"/>
<property name="url" value="${prop.url}"/>
<property name="username" value="${prop.username}"/>
<property name="password" value="${prop.password}"/>

</bean>
<!--jdbcTemplate -->
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<!-- 注入datasource-->
<property name="dataSource" ref="dataSource"/>
</bean>
</beans>
jdbc的配置文件:
  
#prop.url=jdbc:mysql://localhost:3306/user_db?rewriteBatchedStatements=true
prop.url=jdbc:mysql://localhost:3306/user_db?useUnicode=true&characterEncoding=utf-8
prop.username=root
prop.password=110120
prop.driverClassName=com.mysql.jdbc.Driver

initialSize=10
maxActive=20
maxWait=1000
filters=wall

所需要jar包:

下面为具体代码:

dao层代码:

package com.dao;

import com.entiry.Book;

import java.util.List;

public interface bookDAO {
void add(Book book) ;

void update(Book book);
void delById(String Id);

int selectCount();

Book selectBook(String id);

List<Book> findList();

void addBatchList(List<Object[]> list);

void batchUpdateBook(List<Object[]> lists);

void batchDel(List<Object[]> list);
}

  

package com.dao;

import com.entiry.Book;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Repository;

import java.util.Arrays;
import java.util.List;

@Repository
public class bookDAOImpl implements bookDAO{
//注入jdbcTemplate
@Autowired
private JdbcTemplate jdbcTemplate;
//添加的方法
@Override
public void add(Book book) {
String sql = "insert into book values(?,?,?)";
int update = jdbcTemplate.update(sql, book.getUserId(), book.getUsername(), book.getUstatus());
if (update == 1){
System.out.println("添加成功");
}else {
System.out.println("添加失败");
}
}

@Override
public void update(Book book) {
String sql = "update book set username = ?,usatus = ? where user_id = ?";
int update = jdbcTemplate.update(sql, book.getUsername(), book.getUstatus(), book.getUserId());
if (update == -1){
System.out.println("修改成功");
}else {
System.out.println("修改失败");
}
}

@Override
public void delById(String Id) {
String sql = "delete from book where user_id = ?";

int update = jdbcTemplate.update(sql, Id);
if (update == 1){
System.out.println("删除成功");
}else {
System.out.println("删除失败");
}

}

@Override
public int selectCount() {
String sql = "select count(*) from book";
Integer integer = jdbcTemplate.queryForObject(sql, Integer.class);
return integer;

}

@Override
public Book selectBook(String id) {
String sql = "select * from book where user_id = ?";
Book book = jdbcTemplate.queryForObject(sql, new BeanPropertyRowMapper<Book>(Book.class), id);

return book;
}

@Override
public List<Book> findList() {
String sql = " select * from book";
List<Book> bookList = jdbcTemplate.query(sql, new BeanPropertyRowMapper<Book>(Book.class));
return bookList;
}

@Override
public void addBatchList(List<Object[]> list) {
String sql = "insert into book values(?,?,?)";
int[] ints = jdbcTemplate.batchUpdate(sql,list);
System.out.println(Arrays.toString(ints));
}

@Override
public void batchUpdateBook(List<Object[]> lists) {
String sql = "update book set username =?,usatus = ? where user_id = ?";
int[] ints = jdbcTemplate.batchUpdate(sql, lists);
System.out.println(Arrays.toString(ints));
}

@Override
public void batchDel(List<Object[]> list) {
String sql ="delete from book where user_id = ?";
int[] ints = jdbcTemplate.batchUpdate(sql, list);
System.out.println(Arrays.toString(ints));
}
}
service层:
package com.service;

import com.dao.bookDAO;
import com.entiry.Book;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class BookService {
//注入dao
@Autowired
private bookDAO bookdao;
//添加
public void addBook(Book book){
bookdao.add(book);
}
//修改
public void update(Book book){
bookdao.update(book);
}
//删除
public void delById(String Id){
bookdao.delById(Id);
}
//查询返回某个值
public int FindCount(){
return bookdao.selectCount();
}
//查询返回某个对象
public Book findBook(String id){
return bookdao.selectBook(id);
}
//返回多个对象
public List<Book> findList(){
return bookdao.findList();
}
//批量添加
public void BatchAdd(List<Object[]> list){
bookdao.addBatchList(list);

}
//批量修改
public void batchUpdateBook(List<Object []> lists){
bookdao.batchUpdateBook(lists);
}
//批量删除
public void batchDel(List<Object []> list){
bookdao.batchDel(list);

}
}
entiry层:
  
package com.entiry;

public class Book {
private String userId;
private String username;
private String ustatus;

public Book() {
}

public Book(String userId, String username, String ustatus) {
this.userId = userId;
this.username = username;
this.ustatus = ustatus;
}

public void setUserId(String userId) {
this.userId = userId;
}

public void setUsername(String username) {
this.username = username;
}

public void setUstatus(String ustatus) {
this.ustatus = ustatus;
}

public String getUserId() {
return userId;
}

public String getUsername() {
return username;
}

public String getUstatus() {
return ustatus;
}

@Override
public String toString() {
return "Book{" +
"userId='" + userId + '\'' +
", username='" + username + '\'' +
", ustatus='" + ustatus + '\'' +
'}';
}
}
测试类:
  
package com.Test;

import com.entiry.Book;
import com.service.BookService;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import java.util.ArrayList;
import java.util.List;

public class TestBook {
/**
* 测试jdbc 的add 方法
*/
@Test
public void testADD (){
ApplicationContext context = new ClassPathXmlApplicationContext("bean.xml");
BookService bookService = context.getBean("bookService", BookService.class);
bookService.addBook(new Book("3","Tom","a"));
}
/**
* 测试修改功能
*/
@Test
public void testUpdate(){
ApplicationContext context = new ClassPathXmlApplicationContext("bean.xml");
BookService bookService = context.getBean("bookService", BookService.class);
bookService.update(new Book("1","Rose1","atuguig"));
}
/**
* 测试删除功能
*/
@Test
public void testDel(){
ApplicationContext context = new ClassPathXmlApplicationContext("bean.xml");
BookService bookService = context.getBean("bookService", BookService.class);
bookService.delById("1");
}
/**
* 测试查询个数的功能
*/
@Test
public void testSelectCount(){
ApplicationContext context = new ClassPathXmlApplicationContext("bean.xml");
BookService bookService = context.getBean("bookService", BookService.class);
int count = bookService.FindCount();
System.out.println(count);
}
/**
* 测试查询单个对象的功能
*/
@Test
public void testSelectOneBook(){
ApplicationContext context = new ClassPathXmlApplicationContext("bean.xml");
BookService bookService = context.getBean("bookService", BookService.class);
Book book = bookService.findBook("1");
System.out.println(book.toString());

}
/**
* 测试查询多个对象的功能
*/
@Test
public void testSelectAllBook(){
ApplicationContext context = new ClassPathXmlApplicationContext("bean.xml");
BookService bookService = context.getBean("bookService", BookService.class);
List<Book> list = bookService.findList();
System.out.println(list);

}
/**
* 测试批量添加多个对象的功能
*/
@Test
public void testAddSomeBook(){
ApplicationContext context = new ClassPathXmlApplicationContext("bean.xml");
BookService bookService = context.getBean("bookService", BookService.class);
List<Object[]> list = new ArrayList<>();
Object [] o1 = {"4","javac","a"};
Object [] o2 = {"5","c","b"};
Object [] o3 = {"6","c++","a"};
list.add(o1);
list.add(o2);
list.add(o3);
bookService.BatchAdd(list);

}
/**
* 测试批量修改多个对象的功能
*/
@Test
public void testModifySomeBook(){
ApplicationContext context = new ClassPathXmlApplicationContext("bean.xml");
BookService bookService = context.getBean("bookService", BookService.class);
List<Object[]> list = new ArrayList<>();
Object [] o1 = {"javac1","a","4"};
Object [] o2 = {"c1","b","5"};
Object [] o3 = {"c++1","a","6"};
list.add(o1);
list.add(o2);
list.add(o3);
bookService.batchUpdateBook(list);

}
/**
* 测试批量删除多个对象的功能
*/
@Test
public void testDelSomeBook(){
ApplicationContext context = new ClassPathXmlApplicationContext("bean.xml");
BookService bookService = context.getBean("bookService", BookService.class);
List<Object[]> list = new ArrayList<>();
Object [] o1 = {"4"};
Object [] o2 = {"5"};
Object [] o3 = {"6"};
list.add(o1);
list.add(o2);
list.add(o3);
bookService.batchDel(list);

}
}
数据库表格:
  

测试结果均可!

spring框架-jdbcTemplate的更多相关文章

  1. Spring框架 JdbcTemplate类 @Junit单元测试,可以让方法独立执行 如:@Test

    package cn.zmh.PingCe; import org.junit.Test; import org.springframework.jdbc.core.BeanPropertyRowMa ...

  2. 设计模式(十五)——命令模式(Spring框架的JdbcTemplate源码分析)

    1 智能生活项目需求 看一个具体的需求 1) 我们买了一套智能家电,有照明灯.风扇.冰箱.洗衣机,我们只要在手机上安装 app 就可以控制对这些家电工作. 2) 这些智能家电来自不同的厂家,我们不想针 ...

  3. Spring框架之使用JdbcTemplate开发Dao层程序

    简介: JdbcTemplate开发dao层程序     由Spring框架给我们提供,Spring提供的很多操作数据源(关系型数据库,二维表格模型,有明确的行和列(mysql/orcal等) 非关系 ...

  4. 使用spring框架的JdbcTemplate实现对Oracle数据库的简单操作实例

    最近实现了一个小功能,针对Oracle数据库两张关联表进行查询和修改,因为比较简单,所以选择了spring框架里的JdbcTemplate.JdbcTemplate算是老古董了,是当年spring为了 ...

  5. Spring框架针对dao层的jdbcTemplate操作crud之delete删除数据库操作 Spring相关Jar包下载

    首先,找齐Spring框架中IoC功能.aop功能.JdbcTemplate功能所需的jar包,当前13个Jar包 1.Spring压缩包中的四个核心JAR包,实现IoC控制反转的根据xml配置文件或 ...

  6. Spring框架针对dao层的jdbcTemplate操作crud之query查询数据操作

    查询目标是完成3个功能: (1)查询表,返回某一个值.例如查询表中记录的条数,返回一个int类型数据 (2)查询表,返回结果为某一个对象. (3)查询表,返回结果为某一个泛型的list集合. 一.查询 ...

  7. Spring框架针对dao层的jdbcTemplate操作crud之update修改数据库操作

    使用jdbcTemplate 原理是把加载驱动Class.forName("com.mysql.jdbc.Driver"); 和连接数据库Connection conn=Drive ...

  8. Spring框架针对dao层的jdbcTemplate操作crud之add添加数据库操作

    使用jdbcTemplate 原理是把加载驱动Class.forName("com.mysql.jdbc.Driver"); 和连接数据库Connection conn=Drive ...

  9. Spring框架之JdbcTemplate

    Spring框架之JdbcTemplate 一.JdbcTemplate简介 Spring对数据库的操作在jdbc上面做了深层次的封装,使用spring的注入功能,可以把DataSource注册到Jd ...

随机推荐

  1. Vue3中插槽(slot)用法汇总

    Vue中的插槽相信使用过Vue的小伙伴或多或少的都用过,但是你是否了解它全部用法呢?本篇文章就为大家带来Vue3中插槽的全部用法来帮助大家查漏补缺. 什么是插槽 简单来说就是子组件中的提供给父组件使用 ...

  2. silk-GUI图形界面开发一个词典

    了解使用的库 Silk内置了一些GUI类库供使用者开发MacOS上的图形界面程序,只需引用gui.si即可 准备 首先要知道app需要什么功能,这里我要的是查询单词,可以听语音,还可以存储生词! 那么 ...

  3. C++一些新的特性的理解(二)

    1 C++11多线程thread 重点: join和detach的使用场景 thread构造函数参数 绑定c函数 绑定类函数 线程封装基础类 互斥锁mutex condition notify.wai ...

  4. dotnet 设计规范 · 抽象定义

    严格来说,只有一个类被其他的类继承,那么这个类就是基类.在很多时候,基类的定义是提供足够的抽象和通用方法和属性.默认实现.在继承关系中,基类定义在上层抽象和底层自定义之间. 他们充当抽象实现的实现帮助 ...

  5. Android Kotlin Annotation Processer

    Annotation Processer 注解处理器(Annotation Processer)是javac内置的注解处理工具,可以在编译时处理注解,让我们自己做相应的处理.比如生成重复度很高的代码, ...

  6. Go 语言入门 1-管道的特性及实现原理

    入坑 go 也快一年了,从今天开始会定期分享一下 Go 语言学习过程中的一些基础知识. go 语言中的管道, 主要是用于协程之间的通信, 比 UNIX 的管道更加轻量和易用. 我们先看一下管道的数据结 ...

  7. C语言怎么给函数添加形参的默认值

    以下内容为本人的著作,如需要转载,请声明原文链接微信公众号「englyf」https://www.cnblogs.com/englyf/p/16637890.html 如果不是机缘巧合,当年转到C++ ...

  8. Linux 常用脚本命令

    Linux 常用(脚本)命令 1. 统计目录下文件个数 ll |grep "^-"|wc -1 解释 grep "^-"表示抓取以-开头的行(其他忽略)

  9. 数据库基础操作-part2

    单表和多表查询 单表查询 记录详细操作: 增 insert into t1(字段1, 字段2, 字段3) values (值1, 值2, 值3), (值1, 值2, 值3), (值1, 值2, 值3) ...

  10. 【Vue项目笔记】—— 父子组件之间传递参数和子组件执行父组件中的方法

    父组件(MyBlog.vue) <template> <!-- Delete Modal --> <!-- 注意:这里的@deleteBlog中的deleteBlog要和 ...