欢迎光临散文网 会员登陆 & 注册

Spring JDBC封装类JdbcTemplate基础案例

2023-05-05 16:26 作者:图难于易  | 我要投稿

一、JdbcTemplate类介绍

JdbcTemplate是spring框架中提供的一个对象,是对原始繁琐的Jdbc API对象的简单封装。spring框架为我们提供了很多的操作 模板类。例如:操作关系型数据的JdbcTemplate和HibernateTemplate,操作nosql数据库的RedisTemplate,操作消息队列的JmsTemplate等等。

二、JdbcTemplate常用方法

1、execute方法:可以用于执行任何SQL语句,一般用于执行DDL语句;
2、update方法及batchUpdate方法:update方法用于执行新增、修改、删除等语句;

3、batchUpdate方法用于执行批处理相关语句;
4、query方法及queryForXXX方法:用于执行查询相关语句;

5、call方法:用于执行存储过程、函数相关语句。

三、JdbcTemplate开发步骤
1、调用Spring JDBC类库,需要在Spring基础上导入spring-jdbc.jar、spring-tx.jar和mysql-connector-java-5.0.4-bin.jar

2、创建数据库表和实体
3、创建JdbcTemplate对象
4、执行数据库操作

四、案例开发

1、项目架构

图1 项目架构

2、数据库表结构

图2 数据表结构

3、显示数据表数据

图3 数据表数据

4、创建实体类,用于传递值

package lhs.pojo;

public class User {
   private int bh;
   private String name;
   private double cj;
   public int getBh() {
       return bh;
   }
   public void setBh(int bh) {
       this.bh = bh;
   }
   public String getName() {
       return name;
   }
   public void setName(String name) {
       this.name = name;
   }
   public double getCj() {
       return cj;
   }
   public void setCj(double cj) {
       this.cj = cj;
   }
}

5、创建Service类,实现调用JdbcTemplate类方法,完成新增数据、修改数据、删除数据、显示单个记录集、显示多个记录集。

package lhs.service;

import lhs.pojo.User;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowMapper;
import java.util.List;

public class UserService {
   private JdbcTemplate jdbcTemplate;
   //修改数据
   public void updateUser(User user){
       String sql="update user set name=?,cj=? where bh=?";
       jdbcTemplate.update(sql,user.getName(),user.getCj(),user.getBh());
       System.out.println("数据修改成功");
   }
   //新增数据
   public void addUser(User user){
       String sql="insert into user (name,cj) values (?,?)";
       jdbcTemplate.update(sql,user.getName(),user.getCj());
       System.out.println("数据新增成功");
   }

   //删除数据
   public void delUser(int bh){
       String sql="delete from user where bh=?";
       jdbcTemplate.update(sql,bh);
       System.out.println("数据删除成功");
   }
   //显示所有数据
   public List<User> showAllUser(){
       String sql="select bh,name,cj from user";
       List<User> list=jdbcTemplate.query(sql,new BeanPropertyRowMapper<>(User.class));
       return list;
   }

   /**
    * 1、使用BeanProperytRowMapper要求sql数据查询出来的列和实体属性需要一一对应。
    * 如果数据中列明和属性名不一致,在sql语句中需要用as重新取一个别名
    ** 2、使用JdbcTemplate对象不能获取关联对象
    */
   // 显示单个数据
   public User getUserByBh(int bh){
       String sql="select bh,name,cj from user where bh=?";
       RowMapper<User> rowMapper=new BeanPropertyRowMapper<>(User.class);
       User user=jdbcTemplate.queryForObject(sql,rowMapper,bh);

       return user;
   }
   public JdbcTemplate getJdbcTemplate() {
       return jdbcTemplate;
   }

   public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
       this.jdbcTemplate = jdbcTemplate;
   }
}

6、bean.xml文件配置,导入Spring 封装类

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
      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">
   <!-- 初始化数据源,JdbcTemplate框架实现 -->
   <bean class="org.springframework.jdbc.datasource.DriverManagerDataSource" id="dataSource">
       <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
       <property name="url" value="jdbc:mysql://localhost:3306/student"/>
       <property name="username" value="root"/>
       <property name="password" value="123456"/>
    </bean>
   <bean class="org.springframework.jdbc.core.JdbcTemplate" id="jdbcTemplate">
       <property name="dataSource" ref="dataSource"></property>
   </bean>
   <bean class="lhs.service.UserService" id="userService">
       <property name="jdbcTemplate" ref="jdbcTemplate"></property>
   </bean>
</beans>

7、实现测试类,调用Service,执行数据操作

package lhs.test;

import lhs.pojo.User;
import lhs.service.UserService;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import java.util.List;

public class TestUser {
   public static void main(String args[]){
       ApplicationContext factory=new ClassPathXmlApplicationContext("bean.xml");
       UserService userService=(UserService) factory.getBean("userService");
       try{
           //修改数据
           User user=new User();
           user.setBh(7);
           user.setName("千古");
           user.setCj(99);
           userService.updateUser(user);
           //新增数据
           User user1=new User();
           user1.setName("雷锋");
           user1.setCj(87);
           userService.addUser(user1);
           //删除数据
           int bh=10;
           userService.delUser(bh);
           //显示所有数据
           List<User> list=userService.showAllUser();
           for(int i=0;i<list.size();i++){
               User user2=list.get(i);
               System.out.println("编号是:"+user2.getBh());
               System.out.println("姓名是:"+user2.getName());
               System.out.println("成绩是:"+user2.getCj());
               System.out.println("===========");
           }
           //显示单个实体对象
           User user3=userService.getUserByBh(12);
           System.out.println("单个对象获取,姓名是--"+user3.getName()+"成绩是--"+user3.getCj());
       }catch (Exception e){
           e.printStackTrace();
       }
     }
}
8、执行结果

图4 案例执行结果


Spring JDBC封装类JdbcTemplate基础案例的评论 (共 条)

分享到微博请遵守国家法律