JdbcTemplate使用总结建议收藏

SpringJdbcTemplate在数据库的操作中,每个业务方法都要得到连接,开启事务,提交事务,回滚,关闭连接等,我们可以把这些做成一个模版,这样,在业务代码中只需要关注业务逻辑即可。MyJdb

大家好,又见面了,我是全栈君,今天给大家准备了Idea注册码。

JdbcTemplate使用总结建议收藏此处内容已经被作者隐藏,请输入验证码查看内容
验证码:
请关注本站微信公众号,回复“”,获取验证码。在微信里搜索“”或者“”或者微信扫描右侧二维码都可以关注本站微信公众号。

Spring JdbcTemplate

在数据库的操作中,每个业务方法都要得到连接,开启事务,提交事务,回滚,关闭连接等,我们可以把这些做成一个模版,这样,在业务代码中只需要关注业务逻辑即可。

MyJdbcTemplte.java:

 1 package cn.itcast.gz.template;
 2 
 3 import java.sql.Connection;
 4 import java.sql.PreparedStatement;
 5 import java.sql.ResultSet;
 6 import java.sql.SQLException;
 7 import java.sql.Statement;
 8 
 9 import javax.sql.DataSource;
10 
11 
12 public class MyJdbcTemplte {
13    
14     DataSource dataSource = null;
15     Connection conn = null;
16     PreparedStatement ps = null;
17     
18     interface updateOperation{
19          void execute(Connection conn,PreparedStatement ps)throws Exception;
20     }    
21     
22     //由于这里用了dbcp数据源,所以不用关闭连接
23     public void executeUpdate(updateOperation operation)
24     {
25         try {
26             dataSource = DbcpUtil.getDataSource();
27             conn=dataSource.getConnection();
28             conn.setAutoCommit(false);
29             //关键是这一步,dao的每个方法在这里得到调用
30             //http://www.cnblogs.com/roucheng/
31             operation.execute(conn, ps);
32             conn.commit();
33         } catch (Exception e) {
34             try {
35                 conn.rollback();
36             } catch (SQLException e1) {
37                 e1.printStackTrace();
38             }
39             e.printStackTrace();
40         }
41     }
42 }

PersonDaoImplTemplte.java:

 1 package cn.itcast.gz.template;  2  3 import java.sql.Connection;  4 import java.sql.PreparedStatement;  5 import java.sql.Statement;  6  7 import cn.itcast.gz.template.MyJdbcTemplte.updateOperation;  8  9 public class PersonDaoImplTemplte implements IPersonDao { 10 11 private final MyJdbcTemplte jdbcTemplte = new MyJdbcTemplte(); 12 13  @Override 14 public void save (final Person person) throws Exception{ 15 16 jdbcTemplte.executeUpdate(new updateOperation() { 17  @Override 18 public void execute(Connection conn , PreparedStatement ps) throws Exception { 19 String sql = "insert into person(name,age) values(?,?)"; 20 ps =conn.prepareStatement(sql); 21 ps.setString(1, person.getName()); 22 ps.setInt(2, person.getAge()); 23  ps.executeUpdate(); 24  } 25  }); 26  } 27 28 29  @Override 30 public void delete(final Integer id) throws Exception{ 31 32 jdbcTemplte.executeUpdate(new updateOperation() { 33 34  @Override 35 public void execute(Connection conn , PreparedStatement ps) throws Exception { 36 37 String sql = "delete from person where id=?"; 38 ps = conn.prepareStatement(sql); 39 ps.setInt(1, id); 40  ps.executeUpdate(); 41  } 42  }); 43  } 44 45  @Override 46 public void updatePerson(final Person p,final Integer id) throws Exception{ 47 jdbcTemplte.executeUpdate(new updateOperation() { 48 49  @Override 50 public void execute(Connection conn , PreparedStatement ps) throws Exception { 51 52 String sql = "update person set name=?,age=? where id=?"; 53 ps = conn.prepareStatement(sql); 54 ps.setString(1, p.getName()); 55 ps.setInt(2, p.getAge()); 56 ps.setInt(3, id); 57  ps.executeUpdate(); 58  } 59  }); 60  } 61 }

 DbcpUtil.java:

 1 package cn.itcast.gz.template;  2  3 import java.io.IOException;  4 import java.util.Properties;  5  6 import javax.sql.DataSource;  7  8 import org.apache.commons.dbcp.BasicDataSourceFactory;  9 10 public class DbcpUtil { 11 12 private static DataSource dataSource = null; 13 14 static 15  { 16 try { 17 Properties properties = new Properties(); 18 properties.load(DbcpUtil.class.getClassLoader().getResourceAsStream("db.properties")); 19 dataSource = BasicDataSourceFactory.createDataSource(properties); 20 } catch (Exception e) { 21  e.printStackTrace(); 22  } 23  } 24 25 public static DataSource getDataSource() 26  { 27 return dataSource; 28  } 29 }

就这个分享。。。有几个意见说下 
1. MyJdbcTemplte中的数据源不能变,建议添加一个带数据源的构造方法这样实例化的时候可以有不同的数据源以应对需要连接过个数据库的项目。
2.
 MyJdbcTemplte 这个只能执行更新的语句么,查询之类的不行,查询的话还要考虑赋值之类的问题,想想泛型

另外。。spring里有spring jdbctemplate,它提供的肯定是非常棒的,又是开源。。。只是个人觉得他的jdbctemplate中方法这么多有点晕。。。还好我顶住了自己整理了一些我要用的。。。。推荐楼主去看看它的源码吧。。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/120760.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • css a标签去除下划线「建议收藏」

    css a标签去除下划线「建议收藏」cssa标签去除下划线a{text-decoration:none;}转载于:https://www.cnblogs.com/luckybaby519/p/10447146.html

  • 台式计算机网线插哪里,电脑主机网线插哪里?

    台式计算机网线插哪里,电脑主机网线插哪里?问:电脑主机网线插在哪里?答:这个需要根据你家的上网情况来决定,主要是看有没有用到路由器上网,下面进行详细说明。1、如果你家里没有用路由器,那么电脑主机上的网线,需要插在猫的网口/LAN口。温馨提示:没有用路由器的情况下,电脑要上网的话,你需要打开电脑中的“宽带连接”程序,然后填写你家的宽带账号、宽带密码,就能连接上网了。如果你不知道如何用“宽带连接”程序拨号上网,可以点击阅读下面的文章,查看详…

  • arping详解

    arping详解最近检测内网机器的ip占用问题,用到了arping,总结一下。版本arping主要干的活就是查看ip的MAC地址及IP占用的问题。arping有两个版本,一个版本是ThomasHabets这个人写的,这个版本有个好处是可以arping<MAC地址>,也就是说我们可以通过MAC地址得到IP。还有一个版本是Linuxiputilssui…

  • 在我一生中最猥琐的时候遇见你(1)

    在我一生中最猥琐的时候遇见你(1)【书名】在我一生最猥琐的时候遇见你【作者】无良某鸡【文案】当我还是一个光屁股天使的时候,有一天,我在凡间晃悠。  突然我看到前面那个头上长着红色山羊角的男人从他的黑色斗篷里落下了一个东西。  “嗨,先生,”我朝他喊,“您掉东西了!”  那人不仅没有回头,反而越走越快,转眼就消失在街角。  我走上前去捡起落在地上的东西,那是一本小说.  小说的封面,一男一女紧密相拥着。  …

  • vscode 设置 eclipse 快捷键

    vscode 设置 eclipse 快捷键【首选项】–&gt;【键盘快捷方式】–&gt;【用于高级自定义打开和编辑keybindings.json】[{"key":"alt+/","command":"editor.action.triggerSuggest","when":"editorTextFocus"},{"key":"ctrl

  • 基于Lucene3.5.0怎样从TokenStream获得Token

    基于Lucene3.5.0怎样从TokenStream获得Token

    2021年11月29日

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号