Spring JDBC封裝類JdbcTemplate基礎(chǔ)案例
一、JdbcTemplate類介紹
JdbcTemplate是spring框架中提供的一個對象,是對原始繁瑣的Jdbc API對象的簡單封裝。spring框架為我們提供了很多的操作 模板類。例如:操作關(guān)系型數(shù)據(jù)的JdbcTemplate和HibernateTemplate,操作nosql數(shù)據(jù)庫的RedisTemplate,操作消息隊列的JmsTemplate等等。
二、JdbcTemplate常用方法
1、execute方法:可以用于執(zhí)行任何SQL語句,一般用于執(zhí)行DDL語句;
2、update方法及batchUpdate方法:update方法用于執(zhí)行新增、修改、刪除等語句;
3、batchUpdate方法用于執(zhí)行批處理相關(guān)語句;
4、query方法及queryForXXX方法:用于執(zhí)行查詢相關(guān)語句;
5、call方法:用于執(zhí)行存儲過程、函數(shù)相關(guān)語句。
三、JdbcTemplate開發(fā)步驟
1、調(diào)用Spring JDBC類庫,需要在Spring基礎(chǔ)上導(dǎo)入spring-jdbc.jar、spring-tx.jar和mysql-connector-java-5.0.4-bin.jar
2、創(chuàng)建數(shù)據(jù)庫表和實體
3、創(chuàng)建JdbcTemplate對象
4、執(zhí)行數(shù)據(jù)庫操作
四、案例開發(fā)
1、項目架構(gòu)

2、數(shù)據(jù)庫表結(jié)構(gòu)

3、顯示數(shù)據(jù)表數(shù)據(jù)

4、創(chuàng)建實體類,用于傳遞值
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、創(chuàng)建Service類,實現(xiàn)調(diào)用JdbcTemplate類方法,完成新增數(shù)據(jù)、修改數(shù)據(jù)、刪除數(shù)據(jù)、顯示單個記錄集、顯示多個記錄集。
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;
? ?//修改數(shù)據(jù)
? ?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("數(shù)據(jù)修改成功");
? ?}
? ?//新增數(shù)據(jù)
? ?public void addUser(User user){
? ? ? ?String sql="insert into user (name,cj) values (?,?)";
? ? ? ?jdbcTemplate.update(sql,user.getName(),user.getCj());
? ? ? ?System.out.println("數(shù)據(jù)新增成功");
? ?}
? ?//刪除數(shù)據(jù)
? ?public void delUser(int bh){
? ? ? ?String sql="delete from user where bh=?";
? ? ? ?jdbcTemplate.update(sql,bh);
? ? ? ?System.out.println("數(shù)據(jù)刪除成功");
? ?}
? ?//顯示所有數(shù)據(jù)
? ?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數(shù)據(jù)查詢出來的列和實體屬性需要一一對應(yīng)。
? ? * 如果數(shù)據(jù)中列明和屬性名不一致,在sql語句中需要用as重新取一個別名
? ? ** 2、使用JdbcTemplate對象不能獲取關(guān)聯(lián)對象
? ? */
? ?// 顯示單個數(shù)據(jù)
? ?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文件配置,導(dǎo)入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">
? ?<!-- 初始化數(shù)據(jù)源,JdbcTemplate框架實現(xiàn) -->
? ?<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、實現(xiàn)測試類,調(diào)用Service,執(zhí)行數(shù)據(jù)操作
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{
? ? ? ? ? ?//修改數(shù)據(jù)
? ? ? ? ? ?User user=new User();
? ? ? ? ? ?user.setBh(7);
? ? ? ? ? ?user.setName("千古");
? ? ? ? ? ?user.setCj(99);
? ? ? ? ? ?userService.updateUser(user);
? ? ? ? ? ?//新增數(shù)據(jù)
? ? ? ? ? ?User user1=new User();
? ? ? ? ? ?user1.setName("雷鋒");
? ? ? ? ? ?user1.setCj(87);
? ? ? ? ? ?userService.addUser(user1);
? ? ? ? ? ?//刪除數(shù)據(jù)
? ? ? ? ? ?int bh=10;
? ? ? ? ? ?userService.delUser(bh);
? ? ? ? ? ?//顯示所有數(shù)據(jù)
? ? ? ? ? ?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、執(zhí)行結(jié)果
