JDBC Spring 之JdbcTemplate 增删改查操作

之前简单介绍了JDBC CRUD的操作,接下来我为大家来讲解一下JDBC 使用spring框架来进行CURD(增删改查操作)使用Spring中的JdbcTemplate之前应该给一个数据源来获得连接。

[java]  view plain  copy
  1. package cn.itcast.jdbc;  
  2.   
  3. import java.io.InputStream;  
  4. import java.sql.Connection;  
  5.   
  6. import java.sql.ResultSet;  
  7. import java.sql.SQLException;  
  8. import java.sql.Statement;  
  9. import java.util.Properties;  
  10.   
  11. import javax.sql.DataSource;  
  12.   
  13. import org.apache.commons.dbcp.BasicDataSourceFactory;  
  14.   
  15. public final class JdbcUtils {  
  16.     private static String url = "jdbc:mysql://localhost:3306/JdbcTest";  
  17.     private static String user = "root";  
  18.     private static String password = "Qb393302+";  
  19.     private static DataSource myDataSource = null;  
  20.   
  21.     private JdbcUtils() {  
  22.   
  23.     }  
  24.   
  25.     static {  
  26.         try {  
  27.             // 1.注册  
  28.             Class.forName("com.mysql.jdbc.Driver");  
  29.             Properties prop = new Properties();  
  30.             InputStream is = JdbcUtils.class.getClassLoader().getResourceAsStream("dbcpconfig.properties");  
  31.             prop.load(is);  
  32.             //使用的是DBCP方式来加载数据库连接信息  
  33.             myDataSource = BasicDataSourceFactory.createDataSource(prop);  
  34.         } catch (Exception e) {  
  35.             throw new ExceptionInInitializerError(e);  
  36.         }  
  37.     }  
  38.   
  39.     //获得数据源  
  40.     public static DataSource getDataSource() {  
  41.         return myDataSource;  
  42.     }  
  43.     public static Connection getConnection() throws SQLException {  
  44.         // return DriverManager.getConnection(url,user,password);  
  45.         return myDataSource.getConnection();  
  46.           
  47.     }  
  48.   
  49.     public static void free(ResultSet rs, Statement st, Connection conn) {  
  50.         try {  
  51.             if (rs != null)  
  52.                 rs.close();  
  53.         } catch (SQLException e) {  
  54.             e.printStackTrace();  
  55.         } finally {  
  56.             try {  
  57.                 if (st != null)  
  58.                     st.close();  
  59.             } catch (SQLException e) {  
  60.                 e.printStackTrace();  
  61.             } finally {  
  62.                 if (conn != null)  
  63.                     try {  
  64.                         conn.close();  
  65.                     } catch (Exception e) {  
  66.                         e.printStackTrace();  
  67.                     }  
  68.             }  
  69.         }  
  70.     }  
  71. }  
然后接下来我们来使用JdbcTemplate这个Spring模板类来进行CRUD操作。(记得在此之前应该引入spring.jar架包)如图所示我所引入的包:


Spring -->CRUD操作:

[java]  view plain  copy
  1. <span style="font-size:24px;">package cn.itcast.jdbc.spring;  
  2.   
  3. import java.util.Date;  
  4.   
  5. import org.springframework.jdbc.core.BeanPropertyRowMapper;  
  6. import org.springframework.jdbc.core.JdbcTemplate;  
  7.   
  8. import cn.itcast.jdbc.JdbcUtils;  
  9. import cn.itcast.jdbc.domain.User;  
  10.   
  11. public class JdbcTemplateCreate {  
  12.   
  13.     //获取数据源(设置为static 是因为该jdbc多次被调用)  
  14.     static JdbcTemplate jdbc = new JdbcTemplate(JdbcUtils.getDataSource());  
  15.       
  16.     public static void main(String[] args) {  
  17.         // TODO Auto-generated method stub  
  18.         //这里为测试CRUD代码块  
  19.         User user = new User();  
  20. //      user.setName("小Q");  
  21. //      user.setBirthday(new Date());  
  22. //      user.setMoney(3000);  
  23. //      text1(user);  
  24.         user.setId(10);  
  25. //      user.setName("BB");  
  26. //      delete(user);  
  27.         user  = query(8);  
  28.         if (user == null) {  
  29.             System.out.println("查询失败");  
  30.         }else {  
  31.             System.out.println("查询成功");  
  32.         }  
  33.     }  
  34.       
  35.     //插入,增加  
  36.     public static void insert(User user) {  
  37.         String sql = "insert into user(name,birthday,money)values(?,?,?)";  
  38.         Object args[] = {user.getName(),user.getBirthday(),user.getMoney()};  
  39.         int temp = jdbc.update(sql, args);  
  40.         if (temp > 0) {  
  41.             System.out.println("插入成功!");  
  42.         }else{  
  43.             System.out.println("插入失败");  
  44.         }  
  45.     }  
  46.       
  47.     //删除  
  48.     public static void delete(int id) {  
  49.         String sql = "delete from user where id = ?";  
  50.         Object args[] = new Object[]{id};  
  51.         int temp = jdbc.update(sql,args);  
  52.         if (temp > 0) {  
  53.             System.out.println("删除成功");  
  54.         }else {  
  55.             System.out.println("删除失败");  
  56.         }  
  57.     }  
  58.       
  59.     //更新  
  60.     public static void update(User user) {  
  61.         String sql = "update user set name = ? where id = ?";  
  62.         Object args[] = new Object[]{user.getName(),user.getId()};  
  63.         int temp = jdbc.update(sql,args);  
  64.         if (temp > 0) {  
  65.             System.out.println("更新成功");  
  66.         }else {  
  67.             System.out.println("更新失败");  
  68.         }  
  69.           
  70.     }  
  71.       
  72.     //查询  
  73.     public static User query(int id) {  
  74.         String sql = "select * from user where id = ?";  
  75.         Object args[] = new Object[]{id};  
  76.         Object  user = jdbc.queryForObject(sql,args,new BeanPropertyRowMapper(User.class));  
  77.         return (User)user;  
  78.     }  
  79.   
  80. }  
  81. </span>  

上面的User类是事先已经创建好的。
[java]  view plain  copy
  1. package cn.itcast.jdbc.domain;  
  2.   
  3. import java.util.Date;  
  4.   
  5.   
  6. public class User {  
  7.     private int id;  
  8.     private String name;  
  9.   
  10.     private Date birthday;  
  11.     private float money;  
  12.   
  13.     public int getId() {  
  14.         return id;  
  15.     }  
  16.   
  17.       
  18.   
  19.     public String getName() {  
  20.         return name;  
  21.     }  
  22.   
  23.     public void setName(String name) {  
  24.         this.name = name;  
  25.     }  
  26.   
  27.     public Date getBirthday() {  
  28.         return birthday;  
  29.     }  
  30.   
  31.     public void setBirthday(Date birthday) {  
  32.         this.birthday = birthday;  
  33.     }  
  34.   
  35.     public float getMoney() {  
  36.         return money;  
  37.     }  
  38.   
  39.     public void setMoney(float money) {  
  40.         this.money = money;  
  41.     }  
  42.   
  43.     public void setId(int id) {  
  44.         this.id = id;  
  45.     }  
  46.   
  47.       
  48.   
  49. }  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值