JavaWeb 使用DBUtils实现增删改查方式

 更新时间:2021年12月04日 09:20:55   作者:「已注销」  
这篇文章主要介绍了JavaWeb 使用DBUtils实现增删改查方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

JavaWeb 使用DBUtils实现增删改查

1、创建C3p0Utils类

创建cn.itcast.jdbc.utils包

代码如下:

package cn.itcast.jdbc.utils;
import javax.sql.DataSource;
import com.mchange.v2.c3p0.ComboPooledDataSource;
public class C3p0Utils {
	private static DataSource ds;
	static {
		ds = new ComboPooledDataSource();
	}
	public static DataSource getDataSource() {
		return ds;
	}
}

2、创建DBUtilsDao类

在src目录下,创建一个cn.itcast.jdbc.demo的包,在该包下创建一个DBUtilsDao类

代码如下:

package cn.itcast.jdbc.demo;
import java.sql.SQLException;
import java.util.List;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanHandler;
import org.apache.commons.dbutils.handlers.BeanListHandler;
import cn.itcast.chapter10.example.User;
import cn.itcast.jdbc.utils.C3p0Utils;
public class DBUtilsDao {
	// 查询所有,返回List集合
	public List findAll() throws SQLException {
		// 创建QueryRunner对象
		QueryRunner runner = new QueryRunner(C3p0Utils.getDataSource());
		// 写SQL语句
		String sql = "select * from user";
		// 调用方法
		List list = (List) runner.query(sql,
                     new BeanListHandler(User.class));
		return list;
	}
	// 查询单个,返回对象
	public User find(int id) throws SQLException {
		// 创建QueryRunner对象
		QueryRunner runner = new QueryRunner(C3p0Utils.getDataSource());
		// 写SQL语句
		String sql = "select * from user where id=?";
		// 调用方法
		User user = (User) runner.query(sql, 
                 new BeanHandler(User.class), new Object[] { id });
		return user;
	}
	// 添加用户的操作
	public Boolean insert(User user) throws SQLException {
		// 创建QueryRunner对象
		QueryRunner runner = new QueryRunner(C3p0Utils.getDataSource());
		// 写SQL语句
		String sql = "insert into user (name,password) values (?,?)";
		// 调用方法
		int num = runner.update(sql,
				new Object[] { user.getName(), user.getPassword() });
		if (num > 0)
			return true;
		return false;
	}
	// 修改用户的操作
	public Boolean update(User user) throws SQLException {
		// 创建QueryRunner对象
		QueryRunner runner = new QueryRunner(C3p0Utils.getDataSource());
		// 写SQL语句
		String sql = "update  user set name=?,password=? where id=?";
		// 调用方法
		int num = runner.update(sql, new Object[] { user.getName(),
                     user.getPassword(),user.getId() });
		if (num > 0)
			return true;
		return false;
	}
	// 删除用户的操作
	public Boolean delete(int id) throws SQLException {
		// 创建QueryRunner对象
		QueryRunner runner = new QueryRunner(C3p0Utils.getDataSource());
		// 写SQL语句
		String sql = "delete from user where id=?";
		// 调用方法
		int num = runner.update(sql, id);
		if (num > 0)
			return true;
		return false;
	}
}

3、创建测试类

在cn.itcast.jdbc.demo包中创建测试类DBUtilsDaoTest类

代码如下:

package cn.itcast.jdbc.demo;
import java.sql.SQLException;
import java.util.List;
import cn.itcast.chapter10.example.User;
public class DBUtilsDaoTest1 {
	private static DBUtilsDao dao = new DBUtilsDao();	
	public static void testInsert() throws SQLException {
		User user = new User();
		user.setName("zhaoliu");
		user.setPassword("666666");
		boolean b = dao.insert(user);
		System.out.println("testInsert:"+b);
	}
	
	public static void testupdate() throws SQLException {
		User user = new User();
		user.setName("zhaoqi");
		user.setPassword("666777");
		user.setId(1);
		boolean b = dao.update(user);
		System.out.println("testupdate:"+b);
	}
	
	public static void testdelete() throws SQLException {
		boolean b = dao.delete(4);
		System.out.println("testdelete:"+b);
	}
	
	public static void testfindById() throws SQLException {
		User user = dao.find(2);
		System.out.println(user.getId() + "," + user.getName() + ","
				+ user.getPassword());
	}
	
	public static void testfindAll() throws SQLException {
		List<User> list = dao.findAll();
		for(User user : list) {
		System.out.println(user.getId() + "," + user.getName() + ","
				+ user.getPassword());
		}
	}
	public static void main(String[] args) throws SQLException {
		testInsert();
		testupdate();
		testdelete();
		testfindById();
		testfindAll();
	}
}

以上代码由多个测试函数组成,依次为:插入、修改、删除、根据id查询、查询所有

4、执行测试类

1.数据表user原始数据如下:

执行后结果如下:

之中插入和删除都是针对第四个数据进行的操作,所以没有显现

Java DBUtils技术访问数据库

DBUtils

Dbutils是操作数据库的组件,对传统操作数据库的类进行二次封装,可以把结果集转化成List。

介绍

DBUtils相对以往的连接数据库得到结果集的模式,代码更加简洁,访问更加迅速,这里我对一个我自级设计的Cuisine表做一个简单的例子。

Cuisine表

对数据库的查询语句的代码

对已有的菜系表Cuisine查找对应菜系编号cuid的全部数据.

1、菜系表的实体类

// 菜系表的实体类
public class Cuisine {
	private static final long serialVersionUID = 1L;	
	private int cuid;	
	private String cuname;	
	public Cuisine() {
		super();
		// TODO Auto-generated constructor stub
		this.cuid = 0;
		this.cuname = "";
	}
	public Cuisine(int cuid, String cuname) {
		super();
		this.cuid = cuid;
		this.cuname = cuname;
	}
	public int getCuid() {
		return cuid;
	}
	public void setCuid(int cuid) {
		this.cuid = cuid;
	}
	public String getCuname() {
		return cuname;
	}
	public void setCuname(String cuname) {
		this.cuname = cuname;
	}
	@Override
	public String toString() {
		return "Cuisine [cuid=" + cuid + ", cuname=" + cuname + "]";
	}	
}

2、实现数据查询的方法

// 实现数据查询
	public Cuisine getCuisine(Cuisine cu) {//得到对应菜系的信息
		// TODO Auto-generated method stub
		QueryRunner queryRunner = new QueryRunner();
		if(cu.getCuid() != 0){
			String sql = "select * from cuisine where cuid = ?";
			try {
				return queryRunner.query(DBUtilsPro.getConnection(),sql,cu.getCuid(),new BeanHandler(Cuisine.class));
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e1.printStackTrace();
			}
		}
		return null;
	}

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 分享Java8中通过Stream对列表进行去重的实现

    分享Java8中通过Stream对列表进行去重的实现

    本文主要介绍了分享Java8中通过Stream对列表进行去重的实现,包括两种方法,具有一定的参考价值,感兴趣的可以了解一下
    2023-11-11
  • Java实现自定义LinkedList类的示例代码

    Java实现自定义LinkedList类的示例代码

    LinkedList类跟ArrayList类不同,它通过指针以及结点的操作对链表进行增删改查。本文就来和大家分享下Java如何为实现自定义LinkedList类,需要的可以参考一下
    2022-08-08
  • java数据结构与算法之插入算法实现数值排序示例

    java数据结构与算法之插入算法实现数值排序示例

    这篇文章主要介绍了java数据结构与算法之插入算法实现数值排序的方法,结合简单实例形式分析了插入算法的节点操作与排序相关实现技巧,需要的朋友可以参考下
    2016-08-08
  • java如何使用正则表达式限制特殊字符的个数

    java如何使用正则表达式限制特殊字符的个数

    这篇文章主要介绍了java如何使用正则表达式限制特殊字符的个数,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-11-11
  • mybatis模糊查询之bind标签和concat函数用法详解

    mybatis模糊查询之bind标签和concat函数用法详解

    大家都知道bind 标签可以使用 OGNL 表达式创建一个变量井将其绑定到上下文中,接下来通过本文给大家介绍了mybatis模糊查询——bind标签和concat函数用法,需要的朋友可以参考下
    2022-08-08
  • java配置多个过滤器优先级以及几个常用过滤器操作

    java配置多个过滤器优先级以及几个常用过滤器操作

    这篇文章主要介绍了java配置多个过滤器优先级以及几个常用过滤器的操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-07-07
  • Java面试题之HashSet的实现原理

    Java面试题之HashSet的实现原理

    这篇文章主要介绍了Java面试题之HashSet的实现原理,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-01-01
  • java循环删除List元素报错的原因分析与解决

    java循环删除List元素报错的原因分析与解决

    大家在工作中应该都会遇到从List集合中删除某一个或多个元素的业务场景,相信大家都会避开在循环里面删除元素,使用其他方式处理,这是为什么呢,下面小编就来和大家详细聊聊
    2023-11-11
  • Springboot详解RocketMQ实现广播消息流程

    Springboot详解RocketMQ实现广播消息流程

    RocketMQ作为一款纯java、分布式、队列模型的开源消息中间件,支持事务消息、顺序消息、批量消息、定时消息、消息回溯等,本篇我们了解如何实现广播消息
    2022-06-06
  • springboot中的RestTemplate使用详解

    springboot中的RestTemplate使用详解

    这篇文章主要介绍了springboot中的RestTemplate使用详解,RestTemplate继承自InterceptingHttpAccessor并且实现了RestOperations接口,其中RestOperations接口定义了基本的RESTful操作,这些操作在RestTemplate中都得到了实现,需要的朋友可以参考下
    2023-09-09

最新评论