spring5学习笔记(11)—“jdbctemplate操作数据库(增删改)”(代码片段)

王祺灏 王祺灏     2022-12-13     332

关键词:

JdbcTemplate 操作数据库(增删改)

JdbcTemplate的增、删、改操作
均由JdbcTemplate 的 update 方法实现

该方法有两个参数:
1、sql(操作对应的sql语句)
2、 Object[ ] args (sql语句中对应的参数组成的数组)


一、准备工作

(1)在MySQL数据库中创建book表,其中有三列,分别对应bookid,bookname,bookstatus。

(2)创建如下项目结构

dao包:

//1.创建接口
public interface bookDao 
    //添加操作的抽象方法
    void add(book book);
    //删除操作抽象方法
    void delete(String id);
    //更新操作抽象方法
    void update(book book);

//2.创建接口实现类(其中写增删查操作的具体代码)
@Repository
public class bookDaoImple implements bookDao
    
   //(1)注入JdbcTemplate
   @Autowired
   private JdbcTemplate jdbcTemplate;

   //(2)重写接口里的添加方法
   @Override
   public void add(book book)
           
   
   //(3)重写接口里的删除方法
   @Override
   public void delete(String id) 
          
   
   //(4)重写接口里的更新方法
   @Override
   public void update(book book) 
          
   

entity包:

//1.创建book类
@Component
public class book 
	//三个属性分别对应数据库中三个表头
    private String bookid;
    private String bookname;
    private String bookstatus;

    public void setBookid(String bookid) 
        this.bookid = bookid;
    

    public void setBookname(String bookname) 
        this.bookname = bookname;
    

    public void setBookstatus(String bookstatus) 
        this.bookstatus = bookstatus;
    

    public String getBookid() 
        return bookid;
    

    public String getBookname() 
        return bookname;
    

    public String getBookstatus() 
        return bookstatus;
    

service包:

//编写bookService类
@Service
public class bookService 
    //1.注入dao
    @Autowired
    private bookDao bookdao;
    
    //2.添加的方法
    public void addbook(book book)
        bookdao.add(book);
    
    
    //3.删除的方法
    public void deletebook(String id)
        bookdao.delete(id);
    
    
    //4.更新方法
    public void updatebook(book book)
        bookdao.update(book);
    

Spring配置文件: bean1.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 http://www.springframework.org/schema/context/spring-context.xsd">
    <!--上方引入context名称空间-->

    <!--1.开启组件扫描-->
    <context:component-scan base-package="jdbcDemo1"></context:component-scan>
    <!--2.创建德鲁伊连接池对象-->
    <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"
          destroy-method="close">
        <property name="url" value="jdbc:mysql://localhost:3306/wangqihao" />
        <property name="username" value="root" />
        <property name="password" value="root" />
        <property name="driverClassName" value="com.mysql.cj.jdbc.Driver" />
    </bean>
    <!--3.创建jdbcTemplate对象,并注入连接池对象-->
    <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
        <property name="dataSource" ref="dataSource"></property>
    </bean>
</beans>

二、JdbcTemplate—增加操作(add)

(1)在bookDaoImple实现类中实现接口中的add方法

@Repository
    public class bookDaoImple implements bookDao
        //注入JdbcTemplate
        @Autowired
        private JdbcTemplate jdbcTemplate;

        //重写接口里的添加方法
        @Override
        public void add(book book)
        
            String sql = "insert into book values(?,?,?)";
            //注意:args里元素的顺序要和sql里参数的出现顺序相同!!
            Object[] args = book.getBookid(),book.getBookname(),book.getBookstatus();
            //通过jdbcTemplate.update()实现
            int update = jdbcTemplate.update(sql, args);
            System.out.println("add成功了:"+update+"条");
        
		
        //重写接口里的删除方法
        @Override
        public void delete(String id) 
           
        

        //重写接口里的更新方法
        @Override
        public void update(book book) 
         
         

(2)编写测试类testBook

public class testBook 
    public static void main(String[] args) 
        ApplicationContext context = new ClassPathXmlApplicationContext("jdbcDemo1/bean1.xml");
        
        //创建业务层bookService类的对象
        bookService bookservice = context.getBean("bookService", bookService.class);
        
        //创建book类对象(便于通过set方法设置属性值)
        book books = new book();

        //1.添加操作
        books.setBookid("3");
        books.setBookname("C开发指南");
        books.setBookstatus("售出");
        
        bookservice.addbook(books);
    

运行结果:

添加后的book表:


三、JdbcTemplate—删除操作(delete)

(1)在bookDaoImple实现类中实现接口中的delete方法

@Repository
    public class bookDaoImple implements bookDao
        //注入JdbcTemplate
        @Autowired
        private JdbcTemplate jdbcTemplate;

        //重写接口里的添加方法
        @Override
        public void add(book book)
          
        

        //重写接口里的删除方法
        @Override
        public void delete(String id) 
            String sql = "delete from book where bookid=?";
            //通过jdbcTemplate.update()实现
            int update = jdbcTemplate.update(sql, id);
            System.out.println("delete成功了:"+update+"条");
        

        //重写接口里的更新方法
        @Override
        public void update(book book) 
           
        

(2)编写测试类testBook

public class testBook 
    public static void main(String[] args) 
        ApplicationContext context = new ClassPathXmlApplicationContext("jdbcDemo1/bean1.xml");
        bookService bookservice = context.getBean("bookService", bookService.class);
        book books = new book();
        
        //2.删除操作
        bookservice.deletebook("3");
     
    

运行结果:

删除后的book表:


四、JdbcTemplate—更新操作(update)

(1)在bookDaoImple实现类中实现接口中的update方法

@Repository
    public class bookDaoImple implements bookDao
        //注入JdbcTemplate
        @Autowired
        private JdbcTemplate jdbcTemplate;

        //重写接口里的添加方法
        @Override
        public void add(book book)
          
        

        //重写接口里的删除方法
        @Override
        public void delete(String id) 
         
        

        //重写接口里的更新方法
        @Override
        public void update(book book) 
            String sql = "update book set bookname=?,bookstatus=? where bookid=?";
            //注意:args里元素的顺序要和sql里参数的出现顺序相同!!
            Object[] args = book.getBookname(),book.getBookstatus(),book.getBookid();
            int update = jdbcTemplate.update(sql, args);
            System.out.println("update成功了:"+update+"条");

        

(2)编写测试类testBook

public class testBook 
    public static void main(String[] args) 
        ApplicationContext context = new ClassPathXmlApplicationContext("jdbcDemo1/bean1.xml");
        bookService bookservice = context.getBean("bookService", bookService.class);
        book books = new book();
        
        //3.更新操作
        books.setBookid("1");
        books.setBookname("哈哈指南");
        books.setBookstatus("未售出");
        bookservice.updatebook(books);

    

运行结果:

更新后的book表:

spring5学习笔记(代码片段)

文章目录Spring5学习笔记1.简介1.1介绍1.2发展历程1.3理念1.4优点1.4组成1.4.1SpringCore1.4.2SpringContext1.4.3SpringAOP1.4.4SpringDAO1.4.5SpringORM1.4.6SpringWeb1.4.7SpringWebMVC1.5扩展2.控制反转2.1原型2.1.1`UserDao`2.1.2` 查看详情

spring5学习笔记(代码片段)

文章目录Spring5学习笔记1.简介1.1介绍1.2发展历程1.3理念1.4优点1.4组成1.4.1SpringCore1.4.2SpringContext1.4.3SpringAOP1.4.4SpringDAO1.4.5SpringORM1.4.6SpringWeb1.4.7SpringWebMVC1.5扩展2.控制反转2.1原型2.1.1`UserDao`2.1.2` 查看详情

spring5学习笔记(14)—“spring5声明式事务管理”(代码片段)

Spring5声明式事务管理一、事务操作1.事务概念2.搭建事务环境二、Spring事务管理介绍三、声明式事务管理(基于注解)四、声明式事务管理(参数配置)propagation:事务传播行为ioslation:事务隔离级别timeout&... 查看详情

spring5学习笔记(14)—“spring5声明式事务管理”(代码片段)

Spring5声明式事务管理一、事务操作1.事务概念2.搭建事务环境二、Spring事务管理介绍三、声明式事务管理(基于注解)四、声明式事务管理(参数配置)propagation:事务传播行为ioslation:事务隔离级别timeout&... 查看详情

spring5学习笔记—“java项目引入spring5(idea)”

Spring5入门小Demo环境:IDEA2021.1,java8,JDK1.81.先在idea中创建一个java项目2.创建成功后,右击项目名称,点击“添加框架支持…”勾选Spring,点击确定正在下载…3.创建Spring配置文件(src中又创建了两个类... 查看详情

spring5学习笔记—“springioc(控制反转)”(代码片段)

SpringIOC(控制反转)一、Spring—IOC概述1.什么是IOC​2.IOC底层3.Spring提供的IOC容器实现的两种方式(两个接口)二、IOC操作Bean管理(两种方法)1.什么是bean管理2.bean管理操作的两种方式3.IOC操作bean管理(... 查看详情

spring5学习笔记—“bean的作用域”(代码片段)

目前SpringBean的作用域/范围主要有五种:(常用:singleton,prototype)在Spring里面,默认情况下,bean是单实例对象;我们在Spring配置文件中使用bean标签创建对象时,可以使用scope属性来设置bean的作用域... 查看详情

spring5学习笔记—“工厂bean(factorybean)”(代码片段)

IOC操作Bean管理(FactoryBean)Spring有两种类型bean,一种普通bean,另外一种工厂bean:普通bean:在配置文件中定义bean类型就是返回类型工厂bean:在配置文件定义bean类型可以和返回类型不一样实例演示:1.创... 查看详情

spring5学习笔记—“aop操作—aspectj注解”(代码片段)

AOP相关操作:Spring框架一般都是基于AspectJ实现AOP操作,AspectJ不是Spring组成部分,独立AOP框架,一般把AspectJ和Spirng框架一起使用,进行AOP操作。(2)基于AspectJ实现AOP操作:基于xml配置文件实现基于... 查看详情

spring5学习笔记—“aop操作—aspectj注解”(代码片段)

AOP相关操作:Spring框架一般都是基于AspectJ实现AOP操作,AspectJ不是Spring组成部分,独立AOP框架,一般把AspectJ和Spirng框架一起使用,进行AOP操作。(2)基于AspectJ实现AOP操作:基于xml配置文件实现基于... 查看详情

spring5学习笔记—“springaop的概念相关术语”(代码片段)

SpringAOP(面向切面编程)1、AOP基本概念​(1)AOP—"面向切面编程",利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的... 查看详情

spring5学习笔记—“springaop的概念相关术语”(代码片段)

SpringAOP(面向切面编程)1、AOP基本概念​(1)AOP—"面向切面编程",利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的... 查看详情

spring5学习笔记—“springaop底层原理(动态代理)”(代码片段)

SpringAOP底层原理(动态代理)一、AOP底层使用“动态代理”动态代理有两种情况第一种:有接口情况,使用JDK动态代理第二种:无接口情况,使用CGLIB动态代理动态代理即为创建(被增强类/实现类的... 查看详情

spring5学习笔记—“springaop底层原理(动态代理)”(代码片段)

SpringAOP底层原理(动态代理)一、AOP底层使用“动态代理”动态代理有两种情况第一种:有接口情况,使用JDK动态代理第二种:无接口情况,使用CGLIB动态代理动态代理即为创建(被增强类/实现类的... 查看详情

spring5学习笔记(代码片段)

文章目录Spring5学习笔记1.简介1.1介绍1.2发展历程1.3理念1.4优点1.4组成1.4.1SpringCore1.4.2SpringContext1.4.3SpringAOP1.4.4SpringDAO1.4.5SpringORM1.4.6SpringWeb1.4.7SpringWebMVC1.5扩展2.控制反转2.1原型2.1.1`UserDao`2.1.2`UserDaoMysqlImpl`2.1.3`UserDaoOr... 查看详情

spring5学习笔记—“ioc操作bean管理(基于xml)”(代码片段)

IOC操作Bean管理1.什么是bean管理2.bean管理操作的两种方式3.IOC操作bean管理(基于xml)3.1基于xml创建对象3.2基于xml注入属性(1)使用`set方法`注入(2)使用`有参构造`注入(3)`P名称空... 查看详情

spring5学习笔记—“ioc操作bean管理(基于注解)”(代码片段)

IOC操作Bean管理(基于注解方式)​一、什么是注解​(1)注解是代码特殊标记格式:@注解名称(属性名称=属性值,属性名称=属性值…)​(2)使用注解,注解作用在类上面,方法上面,属性上... 查看详情

spring5学习笔记—“ioc操作bean管理(基于注解)”(代码片段)

IOC操作Bean管理(基于注解方式)​一、什么是注解​(1)注解是代码特殊标记格式:@注解名称(属性名称=属性值,属性名称=属性值…)​(2)使用注解,注解作用在类上面,方法上面,属性上... 查看详情