JavaWeb|JavaWeb 使用DBUtils实现增删改查方式
目录
- JavaWeb 使用DBUtils实现增删改查
- 1、创建C3p0Utils类
- 2、创建DBUtilsDao类
- 3、创建测试类
- 4、执行测试类
- Java DBUtils技术访问数据库
- 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 = "updateuser 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 {Listlist = 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查询、查询所有
【JavaWeb|JavaWeb 使用DBUtils实现增删改查方式】
4、执行测试类
1.数据表user原始数据如下:
文章图片
执行后结果如下:
文章图片
之中插入和删除都是针对第四个数据进行的操作,所以没有显现
Java DBUtils技术访问数据库
DBUtils
Dbutils是操作数据库的组件,对传统操作数据库的类进行二次封装,可以把结果集转化成List。
介绍
DBUtils相对以往的连接数据库得到结果集的模式,代码更加简洁,访问更加迅速,这里我对一个我自级设计的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 stubthis.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 stubQueryRunner 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 blocke1.printStackTrace(); }}return null; }
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
推荐阅读
- 由浅入深理解AOP
- 【译】20个更有效地使用谷歌搜索的技巧
- mybatisplus如何在xml的连表查询中使用queryWrapper
- MybatisPlus|MybatisPlus LambdaQueryWrapper使用int默认值的坑及解决
- MybatisPlus使用queryWrapper如何实现复杂查询
- iOS中的Block
- Linux下面如何查看tomcat已经使用多少线程
- 使用composer自动加载类文件
- android|android studio中ndk的使用
- 使用协程爬取网页,计算网页数据大小