spring5 框架【第四节JdbcTemplate】

四、JdbcTemplate

1、JdbcTemplate概念及使用

1.1、什么是JdbcTemplate

Spring 框架对 JDBC 进行封装,使用 JdbcTemplate 方便实现对数据库操作

1.2、准备工作

- (1)引入jar包

在这里插入图片描述

- (2)引入数据库连接池
  <!--    引入外部属性文件jdbc.properites-->
    <context:property-placeholder location="classpath:jdbc.properties"/>


    <!--    数据库连接池-->
    <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" destroy-method="close">
<!--        <property name="url" value="jdbc:mysql://localhost:3306/jdbc?characterEncoding=utf-8&amp;serverTimezone=UTC " />-->
<!--        <property name="username" value="root" />-->
<!--        <property name="password" value="root" />-->
<!--        <property name="driverClassName" value="com.mysql.jdbc.Driver" />-->
        <property name="driverClassName" value="${driverClass}"/>
        <property name="url" value="${url}"/>
        <property name="username" value="${name}"/>
        <property name="password" value="${password}"/>
    </bean>

- (3)配置 JdbcTemplate 对象,注入 DataSource
<!--JdbcTemplate对象-->
    <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
        <!--   注入dataSoiure属性set方法-->
        <property name="dataSource" ref="dataSource">
        </property>
    </bean>
- (4)配置文件
  • jdbc.properties资源文件
    driverClass=com.mysql.cj.jdbc.Driver
    url=jdbc:mysql://localhost:3306/jdbc?characterEncoding=utf-8&serverTimezone=UTC
    name=root
    password=root
    
  • 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:component-scan base-package="Spring5_6"/>
    
        <!--    引入外部属性文件jdbc.properites-->
        <context:property-placeholder location="classpath:jdbc.properties"/>
        
        <!--    数据库连接池-->
        <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" destroy-method="close">
    <!--        <property name="url" value="jdbc:mysql://localhost:3306/jdbc?characterEncoding=utf-8&amp;serverTimezone=UTC " />-->
    <!--        <property name="username" value="root" />-->
    <!--        <property name="password" value="root" />-->
    <!--        <property name="driverClassName" value="com.mysql.jdbc.Driver" />-->
            <property name="driverClassName" value="${driverClass}"/>
            <property name="url" value="${url}"/>
            <property name="username" value="${name}"/>
            <property name="password" value="${password}"/>
        </bean>
    
        <!--JdbcTemplate对象-->
        <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
            <!--   注入dataSoiure属性set方法-->
            <property name="dataSource" ref="dataSource">
            </property>
        </bean>
    </beans>
    

2、JdbcTemplate操作数据库(添加、修改、删除)

2.1、添加操作

 //添加的方法
	    @Override
	    public void add(Book book){
	        //1.创建sql语句
	       String sql=" insert  into jdbc.book(id, name, password) VALUES(?,?,?)";
	
	        //2.调用方法实现
	        Object[] args={book.getId(),book.getName(),book.getPassword()};
	        int update=jdbcTemplate.update(sql,args);
	        System.out.println(update);
	        
	    }

2.2、修改操作

//修改的方法
	    @Override
	    public void update(Book book){
	        //1.创建sql语句
	        String sql="update jdbc.book set name=?,password=? where id=?";
	
	        //2.调用方法实现
	        Object[] args={book.getName(),book.getPassword(),book.getId()};
	        int update=jdbcTemplate.update(sql,args);
	        System.out.println(update);
	    }

2.3、删除操作

   //删除的方法
	    @Override
	    public void delete(int id){
	        //1.创建sql语句
	        String sql=" delete from jdbc.book where id=?";
	
	        //2.调用方法实现
	        Object[] args={id};
	        int update=jdbcTemplate.update(sql,args);
	        System.out.println(update);
	    }

2.4、实现案例

- (5)创建 service 类,创建 dao 类,在 dao 注入 jdbcTemplate 对象
  • *配置文件

     <!--    组件扫描 -->
        <context:component-scan base-package="Spring5_6"/>
    
  • dao层接口

    	public interface BookDao {
        //添加方法
        void add(Book book);
    
        //修改方法
        void update(Book book);
    
        //删除方法
       void delete(int id);
    }
    
    • dao层实现接口
    @Repository
    public class BookDaoImpl implements BookDao{
    
        //注入JdbcTemlate
        @Autowired
        private JdbcTemplate jdbcTemplate;
    
        //添加的方法
        @Override
        public void add(Book book){
            //1.创建sql语句
           String sql=" insert  into jdbc.book(id, name, password) VALUES(?,?,?)";
    
            //2.调用方法实现
            Object[] args={book.getId(),book.getName(),book.getPassword()};
            int update=jdbcTemplate.update(sql,args);
            System.out.println(update);
            
        }
        //修改的方法
        @Override
        public void update(Book book){
            //1.创建sql语句
            String sql="update jdbc.book set name=?,password=? where id=?";
    
            //2.调用方法实现
            Object[] args={book.getName(),book.getPassword(),book.getId()};
            int update=jdbcTemplate.update(sql,args);
            System.out.println(update);
        }
    
        //删除的方法
        @Override
        public void delete(int id){
            //1.创建sql语句
            String sql=" delete from jdbc.book where id=?";
    
            //2.调用方法实现
            Object[] args={id};
            int update=jdbcTemplate.update(sql,args);
            System.out.println(update);
        }
    
    }
    
    
    • 实体类
    //表数据属性实体类
    public class Book {
    
        private int id;
        private String name;
        private  String password;
    
    
    
        public void setId(int id) {
            this.id = id;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public void setPassword(String password) {
            this.password = password;
        }
    
        public int getId() {
            return id;
        }
        public String getName() {
            return name;
        }
        public String getPassword() {
            return password;
        }
    }
    
    
  • Service层

    @Service
    public class BookService {
        //注入dao
        @Autowired
        private BookDao bookDao;
    
        //添加操作
        public void addBook(Book book) {
            bookDao.add(book);
    
        }
    
        //修改操作
        public  void updateBook(Book book){
            bookDao.update(book);
        }
    
        //删除操作
        public  void deleteBook(int id){
            bookDao.delete(id);
        }
    
    }
    	
    
- (6)测试

	public class Test_demo1 {
	    @Test
	    public void test(){
	        ApplicationContext context=new ClassPathXmlApplicationContext("xml/Spring5_6/spring5_demo1.xml");
	        BookService bookService=context.getBean("bookService", BookService.class);
	
	
	        Book book=new Book();
	//        //添加
	//        book.setId(11);
	//        book.setName("ljf12");
	//        book.setPassword("ljf1112");
	//        bookService.addBook(book);
	
	//        //修改
	//        book.setId(11);
	//        book.setName("ljf123");
	//        book.setPassword("ljf11123");
	//        bookService.updateBook(book);
	
	//        //删除
	
	        bookService.deleteBook(11);
	    }
	}

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3、JdbcTemplate操作数据库(查询返回某个值)

  • 1、查询表里面有多条记录,返回某个值
  • 2、使用JdbcTemplate实现查询返回某个值的代码

-blog.csdnimg.cn/20210605204300106.png)

queryForObject方法中:
	jdbcTemplate.queryForObject(sql,Integer.class)
	第一个参数:sql语句
	第二个参数:第二个参数代表--返回类型class 
	第三个参数:sql 语句值
//查询表中的记录
    @Override
    public int select(){
        //1.创建sql语句
        String sql="select count(*) from jdbc.book";
        //2.调用方法实现
        int update=jdbcTemplate.queryForObject(sql,Integer.class);
        return update;
    }

4、JdbcTemplate操作数据库(查询返回对象)

  • 1.场景:查询图书详情

  • 2.JdbcTemplate实现查询返回对象
    在这里插入图片描述

      queryForObject方法中:
      	jdbcTemplate.query(sql,new BeanPropertyRowMapper<Book>(Book.class),id);
      	第一个参数:sql语句
      	第二个参数:RowMapper 是接口,针对返回不同类型数据,使用这个接口里面 实现类 完成数据封装 new BeanPropertyRowMapper<Book>(Book.class)
      	第三个参数:sql 语句值
    
 //查询返回对象
    @Override
    public Book findBookInfo(int id){
        //1.创建sql语句
        String sql="select * from jdbc.book  where id=?";

        //2.调用方法实现
        Book bookList= (Book) jdbcTemplate.query(sql,new BeanPropertyRowMapper<Book>(Book.class),id);
        return bookList;
    }

5、JdbcTemplate操作数据库(查询返回集合)

  • 1.场景:查询图书详情
  • 2.JdbcTemplate实现查询返回对象集合

在这里插入图片描述在这里插入图片描述

queryForObject方法中:
	jdbcTemplate.queryForObject(sql,new BeanPropertyRowMapper<Book>(Book.class),{1,”12”})
		第一个参数:sql语句
		第二个参数:RowMapper 是接口,针对返回不同类型数据,使用这个接口里面 实现类 完成数据封装 new BeanPropertyRowMapper<Book>(Book.class)
		第三个参数:sql 语句值
 //查询返回集合
    @Override
    public List<Book> listAll(){
        //1.创建sql语句
        String sql="select * from jdbc.book ";

        //2.调用方法实现
        //List<Book> bookAll= (List<Book>) jdbcTemplate.queryForObject(sql,new BeanPropertyRowMapper<Book>(Book.class));
        List<Book> bookAll=jdbcTemplate.query(sql,new BeanPropertyRowMapper<>(Book.class));
        return bookAll;

    }

6、查询案例

  • 接口

public interface BookDao {
    //添加方法
    void add(Book book);

    //修改方法
    void update(Book book);

    //删除方法
   void delete(int id);

   //查询表中记录
    int select();

    //查询返回对象
    Book findBookInfo(int id);

    //查询返回集合
    List<Book> listAll();
}

-实现接口

 //查询表中的记录
    @Override
    public int select(){
        //1.创建sql语句
        String sql="select count(*) from jdbc.book";
        //2.调用方法实现
        int update=jdbcTemplate.queryForObject(sql,Integer.class);
        return update;
    }

    //查询返回对象
    @Override
    public Book findBookInfo(int id){
        //1.创建sql语句
        String sql="select * from jdbc.book  where id=?";

        //2.调用方法实现
        Book bookList= (Book) jdbcTemplate.query(sql,new BeanPropertyRowMapper<Book>(Book.class),id);
        return bookList;
    }


    //查询返回集合
    @Override
    public List<Book> listAll(){
        //1.创建sql语句
        String sql="select * from jdbc.book ";

        //2.调用方法实现
        //List<Book> bookAll= (List<Book>) jdbcTemplate.queryForObject(sql,new BeanPropertyRowMapper<Book>(Book.class));
        List<Book> bookAll=jdbcTemplate.query(sql,new BeanPropertyRowMapper<>(Book.class));
        return bookAll;
    }
  • 测试

public class Test_demo1_select {
    //查询表中数据记录
    @Test
    public void test1(){

        ApplicationContext context=new ClassPathXmlApplicationContext("xml/Spring5_6/spring5_demo1.xml");
        BookService bookService=context.getBean("bookService", BookService.class);
        int count=bookService.selectBook();
        System.out.println(count);
    }

    //查询返回对象
    @Test
    public void test2(){

        ApplicationContext context=new ClassPathXmlApplicationContext("xml/Spring5_6/spring5_demo1.xml");
        BookService bookService=context.getBean("bookService", BookService.class);
        Book book =bookService.selectFindBook(2);
        System.out.println(book.toString());
    }

    //查询返回集合
    @Test
    public void test3(){
        ApplicationContext context=new ClassPathXmlApplicationContext("xml/Spring5_6/spring5_demo1.xml");
        BookService bookService=context.getBean("bookService", BookService.class);
        List<Book> bookList=bookService.selectListAllBook();
        System.out.println(bookList);
    }
}

7、JdbcTemplate操作数据库(批量操作)

批量操作:操作表中多条记录

7.1、JdbcTemplate------批量添加

在这里插入图片描述

queryForObject方法中:
	int[] ints=jdbcTemplate.batchUpdate(sql,object);
			第一个参数:sql语句
			第二个参数:List集合,添加多条记录数据
 //批量添加
    public  void batchAdd(List<Object[]> object){
        //1.创建sql语句
        String sql="insert into jdbc.book values (?,?,?)";

        //2.调用方法实现
        int[] ints=jdbcTemplate.batchUpdate(sql,object);
        System.out.println(Arrays.toString(ints));
    }
   //批量添加
    @Test
    public void test2() {
        ApplicationContext context = new ClassPathXmlApplicationContext("xml/Spring5_6/spring5_demo1.xml");
        BookService bookService = context.getBean("bookService", BookService.class);
        //批量添加
        List<Object[]> objects=new ArrayList<>();
        Object[] o1={21,"java","a"};
        Object[] o2={22,"c","b"};
        Object[] o3={23,"C++","c"};
        objects.add(o1);
        objects.add(o2);
        objects.add(o3);
        bookService.batchAddBook(objects);
    }

在这里插入图片描述

7.2、JdbcTemplate------批量修改、删除

   //批量修改
    @Override
    public void batchUpdata(List<Object[]> object) {

        //1.创建sql语句
        String sql="update  jdbc.book set name=?,password=? where id=?";

        //2.调用方法实现
        int[] ints=jdbcTemplate.batchUpdate(sql,object);
        System.out.println(Arrays.toString(ints));

    }

    //批量删除
    @Override
    public void batchDelet(List<Object[]> object) {

        //1.创建sql语句
        String sql="delete from jdbc.book where id=?";

        //2.调用方法实现
        int[] ints=jdbcTemplate.batchUpdate(sql,object);
        System.out.println(Arrays.toString(ints));

    }
  //批量修改
    @Test
    public void test2() {
        ApplicationContext context = new ClassPathXmlApplicationContext("xml/Spring5_6/spring5_demo1.xml");
        BookService bookService = context.getBean("bookService", BookService.class);

        //批量修改
        List<Object[]> objects=new ArrayList<>();
        Object[] o1={"java01","a01",21};
        Object[] o2={"c01","b01",22};
        Object[] o3={"C++01","c01",23};
        objects.add(o1);
        objects.add(o2) ;
        objects.add(o3);
        bookService.batchUpdatBook(objects);
    }
    //批量删除
    @Test
    public void test2() {
        ApplicationContext context = new ClassPathXmlApplicationContext("xml/Spring5_6/spring5_demo1.xml");
        BookService bookService = context.getBean("bookService", BookService.class);

        //批量删除
        List<Object[]> objects=new ArrayList<>();
        Object[] o1={21};
        Object[] o2={22};

        objects.add(o1);
        objects.add(o2) ;

        bookService.batchDeletBook(objects);
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值