Apache DbUtils应用实例_idea 的dbutils使用详细示例

收集整理了一份《2024年最新物联网嵌入式全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升的朋友。
img
img

如果你需要这些资料,可以戳这里获取

需要这些体系化资料的朋友,可以加我V获取:vip1024c (备注嵌入式)

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人

都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

package david.apache.model;

import java.text.SimpleDateFormat;
import java.util.Date;

public class Visitor {
    
    private int id;
    private String name;
    private String email;
    private int status;
    private Date createTime;

    public Visitor() {
        // TODO Auto-generated constructor stub
        setCreateTime(new Date());
    }

    public Visitor(String name, String email) {
        this.setName(name);
        this.setEmail(email);
        this.setStatus(1);
        this.setCreateTime(new Date());
    }

    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 getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public int getStatus() {
        return status;
    }

    public void setStatus(int status) {
        this.status = status;
    }

    public Date getCreateTime() {
        return createTime;
    }

    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }
    
    @Override
    public String toString() {
        // TODO Auto-generated method stub
        return String.format("{Id: %d, Name: %s, Email: %s, CreateTime: %s}", getId(), getName(), getEmail(),
                new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(getCreateTime()));
    }
}

首先我们先新建一个获取Connection的方法:

private static Connection getConnection() {
    Connection conn = null;
    try {
        Class.forName(CONNECTION_DRIVER_STR);
        conn = DriverManager.getConnection(CONNECTION_STR, "root", "123456");
    } catch (Exception e) {
        e.printStackTrace();
    }
    return conn;
}

新建方法(对于里面的自增字段,我们可以采用变通的方法来插入,使用select last_insert_id()方法)

/*
 * 新增Visitor, ScalarHandler的demo
 */
public static void insertVisitor(Visitor visitor) {
    Connection conn = getConnection();
    QueryRunner qr = new QueryRunner();
    String sql = "insert into visitor (Name, Email, Status, CreateTime) values (?, ?, ?, ?)";
    try {
        int count = qr.update(conn, sql, visitor.getName(), visitor.getEmail(), 1, new Date());
        BigInteger newId = (BigInteger) qr.query(conn, "select last_insert_id()", new ScalarHandler<BigInteger>(1));
        visitor.setId(Integer.valueOf(String.valueOf(newId)));
        System.out.println("新增" + count + "条数据=>Id:" + newId);
    } catch (SQLException e) {
        e.printStackTrace();
    }
}

大家可以看到操作的步骤其实很简单,也是写SQL可以了,对于自增字段我们通过select last_insert_id()的方法利用ScalarHandler实体类来返回达到变通效果。

删除方法

public static void deleteVisitor(int id) {
    Connection conn = getConnection();
    QueryRunner qr = new QueryRunner();
    String sql = "delete from visitor where status>0 and id=?";
    try {
        int count = qr.update(conn, sql, id);
        System.out.println("删除" + count + "条数据。");
    } catch (SQLException e) {
        // TODO: handle exception
        e.printStackTrace();
    }
}

查询方法

public static Visitor retrieveVisitor(int id) {
    Connection conn = getConnection();
    Visitor visitor = null;
    QueryRunner qr = new QueryRunner();
    String sql = "select * from visitor where status>0 and id=?";        
    try {
        visitor = (Visitor) qr.query(conn, sql, new BeanHandler<Visitor>(Visitor.class), id);
        System.out.println(visitor);
        return visitor;
    } catch (Exception e) {
        e.printStackTrace();
    }
    return visitor;
}

更新操作

public static void updateVisitor(int id) {
    Visitor visitor = retrieveVisitor(id);
    System.out.println("更新前:" + visitor);
    Connection conn = getConnection();
    String updateFieldStr = visitor.getName();
    QueryRunner qr = new QueryRunner();
    String sql = "update visitor set Name = ?, Email = ?, Status = ?, CreateTime = ? where status>0 and Id = ?";
    if (updateFieldStr.contains("updated")) {
        updateFieldStr = updateFieldStr.substring(0, updateFieldStr.indexOf("updated"));
    } else {
        updateFieldStr = updateFieldStr + "updated";
    }
    visitor.setName(updateFieldStr);
    try {
        int count = qr.update(conn, sql, new Object[] { visitor.getName(), visitor.getName(), visitor.getStatus(),
                visitor.getCreateTime(), visitor.getId() });
        System.out.println("更新了" + count + "条数据");
        System.out.println("更新后:" + visitor);
    } catch (SQLException e) {
        // TODO: handle exception
        e.printStackTrace();
    }
}

BeanListHandler方法

public static void getVisitorList() {
    Connection conn = getConnection();
    QueryRunner qr = new QueryRunner();
    String sql = "select * from visitor where status>0";
    try {
        List<Visitor> ls = qr.query(conn, sql, new BeanListHandler<Visitor>(Visitor.class));
        for (Visitor visitor : ls) {


![img](https://img-blog.csdnimg.cn/img_convert/b050a032a0e3acf54ba294b33d148835.png)
![img](https://img-blog.csdnimg.cn/img_convert/a721cd3ed099ad0c65ba9bd455ba564a.png)

**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上物联网嵌入式知识点,真正体系化!**

**由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、电子书籍、讲解视频,并且后续会持续更新**

**需要这些体系化资料的朋友,可以加我V获取:vip1024c (备注嵌入式)**

**[如果你需要这些资料,可以戳这里获取](https://bbs.csdn.net/topics/618679757)**

验的小伙伴深入学习提升的进阶课程,涵盖了95%以上物联网嵌入式知识点,真正体系化!**

**由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、电子书籍、讲解视频,并且后续会持续更新**

**需要这些体系化资料的朋友,可以加我V获取:vip1024c (备注嵌入式)**

**[如果你需要这些资料,可以戳这里获取](https://bbs.csdn.net/topics/618679757)**

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1 对于数据表的读操作 他可以把结果转换成List Array Set等java集合 便于程序员操作; 2 对于数据表的写操作 也变得很简单(只需写sql语句) 3 可以使用数据源 使用JNDI 数据库连接池等技术来优化性能 重用已经构建好的数据库连接对象 而不像php asp那样 费时费力的不断重复的构建和析构这样的对象 DBUtils包括3个包: org apache commons dbutils org apache commons dbutils handlers org apache commons dbutils wrappers DBUtils封装了对JDBC的操作 简化了JDBC操作 可以少写代码 org apache commons dbutils DbUtils 关闭链接等操作 QueryRunner 进行查询的操作 org apache commons dbutils handlers ArrayHandler :将ResultSet中第一行的数据转化成对象数组 ArrayListHandler将ResultSet中所有的数据转化成List List中存放的是Object[] BeanHandler :将ResultSet中第一行的数据转化成类对象 BeanListHandler :将ResultSet中所有的数据转化成List List中存放的是类对象 ColumnListHandler :将ResultSet中某一列的数据存成List List中存放的是Object对象 KeyedHandler :将ResultSet中存成映射 key为某一列对应为Map Map中存放的是数据 MapHandler :将ResultSet中第一行的数据存成Map映射 MapListHandler :将ResultSet中所有的数据存成List List中存放的是Map ScalarHandler :将ResultSet中一条记录的其中某一列的数据存成Object org apache commons dbutils wrappers SqlNullCheckedResultSet :对ResultSet进行操作 改版里面的值 StringTrimmedResultSet :去除ResultSet中中字段的左右空格 Trim ">1 对于数据表的读操作 他可以把结果转换成List Array Set等java集合 便于程序员操作; 2 对于数据表的写操作 也变得很简单(只需写sql语句) 3 可以使用数据源 使用JNDI 数据库连接池等技术来优化性能 重用已经构建好的 [更多]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值