try-with-resources的使用

try-with-resources实现JDBC查询操作

数据库准备

CREATE DATABASE `cloud_note`;
USE `cloud_note`;

DROP TABLE IF EXISTS `sys_user`;
CREATE TABLE `sys_user` (
  `user_id` INT(11) NOT NULL AUTO_INCREMENT,
  `user_name` VARCHAR(50) DEFAULT NULL,
  `user_pwd` VARCHAR(50) DEFAULT NULL,
  `nick` VARCHAR(50) DEFAULT NULL,
  `head` VARCHAR(100) DEFAULT NULL,
  `mood` VARCHAR(500) DEFAULT NULL,
  PRIMARY KEY (`user_id`)
) ENGINE=INNODB DEFAULT CHARSET=utf8;
数据库命名规则
  • 不要使用关键字作为字段、表名;对应的名称替换如下
    • user -> sys_user
    • create -> user_create
    • name -> user_name
    • password -> user_pwd

数据库表与字段的对应

建议以下划线转驼峰规则进行一一对应

public class User {
	public Integer userId;
	public String userName;
	public String userPwd;
	public String nick;
	public String head;
	public Stirng mood;
	// 构造器和getter & setter 方法
}

DAO层使用TWR实现的JDBC查询操作的资源自动关闭

public SysUser selectByName(String userName) {
        SysUser user = null;
        String sql = "select user_id, user_name, user_pwd, nick, head, mood " + 
            		 "from sys_user where user_name = ?";
        try (Connection con = JDBCUtil.getConnection();
             PreparedStatement ps = con.prepareStatement(sql)) {
            ps.setString(1, userName);
            try (ResultSet rs = ps.executeQuery()) {
                if (rs.next()) {
                    user = new SysUser(rs.getInt("user_id"),
                            rs.getString("user_name"),
                            rs.getString("user_pwd"),
                            rs.getString("nick"),
                            rs.getString("head"),
                            rs.getString("mood"));
                }
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return user;
    }

注意事项

  • 尽量使用try-with-resources的方法关闭资源,当然前提是资源实现了AutoCloseable接口
  • 尽管有些资源会因为某些资源的释放而释放,但保险还是自己释放所有资源,就如上述的ResultSet可能会自动释放
  • 尽量保证资源的申请和释放顺序相反
  • Note that the close methods of resources are called in the opposite order of their creation.
  • In a try-with-resources statement, any catch or finally block is run after the resources declared have been closed.
  • 在 try-with-resources 中,如果创建资源发生异常,即 try (…) 中小括号里的代码出现异常,以及 close 时发生异常,都是会在 catch 中捕捉到的
  • try()里面的变量会自动变成final

TWR与IO处理

。。。挖个坑

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值