jdbc访问数据库封装步骤。

文章介绍

jdbc链接数据库进行增删改查时,会出现许多冗余比较强,不够美观的代码。对代码进行合理的封装不仅利于查看,更对运行速度有很大的提升。
本片文章以插入操作为例,简单介绍了数据库操作时一些简单的封装,如果大家有更好的意见或建议,欢迎在讨论区交流。

插入封装

题目:我要往员工表里面插入一名员工数据,这名员工有以下属性:
name, idCard, gender, age, birth, profession, telephone, state

Person person = new Person(name, idCard, gender, age, birth, profession, telephone, state);

问题:假如我直接将学生的这些值作为参数去生成sql语句,那么就会造成数据冗余,并且代码看起来特别不整齐。还不利于sql语句的编写。

解决:将这些信息封装成一个数组对象,采取动态传参的形式,生成sql语句,进行数据库操作

//要插入的对象
Person person = new Person(name, idCard, gender, age, birth, profession, telephone, state);
//将对象的信息采用数组存起来。
	Object[] obj = { person.getName(), person.getIdcard(), person.getGender(), person.getAge(), person.getBirth(),
						person.getProfession(), person.getTelephone(), person.getState() };
//调用生成sql语句的方法
	boolean complete =serviceImpl.insertPerson(obj);
//sql语句生成方法    这里采用了动态传参
	public boolean insertPerson(Object...obj) {
		String sql="insert into person values(null,?,?,?,?,?,?,?,?)";
		//进行数据库操作
		return  daoImp.insertPerson(sql, obj);
	}
//进行数据库操作
public boolean insertPerson(String sql, Object... obj) {
	
		Connection con = null;
		PreparedStatement pstmt = null;

		con = UtilityC3P0.getConnection();
		try {
			pstmt = con.prepareStatement(sql);
			//通过使用for循环的方式,将sql的每一个未知属性值(就是?)赋值
			//注意:为sql属性值赋值时,从下表1开始
			for (int a = 0; a < obj.length; a++) {
				pstmt.setObject(a + 1, obj[a]);
			}
			int result = pstmt.executeUpdate();
			if (result > 0) {
				return true;
			} else {
				return false;
			}

		} catch (SQLException e) {
			
			e.printStackTrace();
		}finally {
		    //关闭数据库,此处也是采用了动态传参的方式
		    //原因:有时候需要获取结果值,有时候不需要,如果不采用动态传参,就得分别写不同的关闭数据库访问的方法,会非常的麻烦
			UtilityC3P0.closeAll(con,pstmt);
		}
		return false;

	}	
//关闭数据库访问方法的封装
UtilityC3P0类
public static void closeAll(AutoCloseable...closeables) {
	for(AutoCloseable closeable:closeables) {
		if(closeable!=null) {
			try {
				closeable.close();
			} catch (Exception e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
	}
	
}

AutoCloseable接口是一个释放数据库资源的方法,主要用于资源管理,在数据库释放资源方面可以减少许多代码的复用。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

See you !

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值