jdbc增删改查有哪些步骤_JDBC打造通用增删改方法

【JDBC】打造通用增删改方法原创

简介:在我们学习JDBC的时候或者编写简单的Servlet程序的时候,经常需要增删改查等操作,很多小伙伴的做法是:增删改查各写一个方法,这样写虽然可以实现我们想要的功能,但是写了很多重复的代码(垃圾代码),今天带大家一起来编写一个通过的CRUD方法。

实体类(用户类)

BaseDao(链接数据库方法)

CrudUtils(增删改查工具类)

TestDemo(测试功能)

1、实体类

public class User {

private int id;

private String name;

private String password;

public int getId() {

return id;

}

public void setId(int id) {

this.id = id;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public String getPassword() {

return password;

}

public void setPassword(String password) {

this.password = password;

}

2、BaseDao(链接数据库方法)

public class BaseDao {

String driver="com.mysql.jdbc.Driver";

String url="jdbc:mysql://127.0.0.1/cart";

String dbName="root";

String dbPwd="root";

Connection conn;

PreparedStatement ps;

ResultSet rs;

/**

* 获取数据库链接

* @return

*/

public Connection getConnection(){

try {

Class.forName(driver);

conn=DriverManager.getConnection(url, dbName, dbPwd);

} catch (ClassNotFoundException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

return conn;

}

/**

* 释放资源

*/

public void getClose(){

if(rs!=null){

try {

rs.close();

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

if(ps!=null){

try {

ps.close();

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

if(conn!=null){

try {

conn.close();

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

3、CrudUtils(增删改查工具类)

public class CrudUtils extends BaseDao{

public void getUtils(String sql,Object []values){

//获取数据库链接

conn=getConnection();

try {

//预编译

ps=conn.prepareStatement(sql);

//获取ParameterMetaData()对象

ParameterMetaData pmd=ps.getParameterMetaData();

//获取参数个数

int number=pmd.getParameterCount();

//循环设置参数值

for (int i = 1; i <=number; i++) {

ps.setObject(i, values[i-1]);

}

ps.executeUpdate();

} catch (SQLException e) {

e.printStackTrace();

}finally{

getClose();

}

}

}

讲解:大家都知道,增删改其实没什么太多的区别,无非就是sql语句不一样和参数不一样,此方法中有两个值,一个是sql,还有一个是数组类型的,首先需要我们创建一个名为ParameterMetaData()对象,关于ParameterMetaData()对象的使用请大家查询api,通过ParameterMetaData()中的getParameterCount()方法可以获取我们的参数个数,在以往的情况下,我们如果执行添加操作,首先要创建对象,使用set依次进行赋值,如果属性过多,写起来也是比较费力气的,这边我们使用for循环,依次对属性进行赋值操作,在赋值的过程中,很多属性我们并不知道他是什么类型,但又要做到通用,此时我们使用Object类型更为妥当。

4、测试增删改

public class Demo01{

public static void main(String[] args) {

//增

new CrudUtils().getUtils("insert into user values(null,?,?)",new Object[]{"bbbbbb","123456"});

//删

new CrudUtils().getUtils("delete from user where id=?", new Object[]{27});

//改

new CrudUtils().getUtils("update user set name=?,password=? where id=?",new Object[]{"lililili","258369",2});

}

}

讲解:当我们需要做增删改操作的时候,直接调用以上方法即可,CrudUtils中需要传入两个参数,一个是sql语句,另一个是参数值,例如以上写法。

总结:此方法大大简化了我们的代码量,使得增删改更加的方便!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值