栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

apache-DBUtis 工具类 + druid 完成对表的crud操作报错

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

apache-DBUtis 工具类 + druid 完成对表的crud操作报错

场景:

apache-DBUtis 工具类 + druid 完成对表的crud操作

public void testQueryMany() throws SQLException {
        Connection connection = JDBCUtilsByDruid.getConnection();
        QueryRunner queryRunner = new QueryRunner();
        String sql = "select * from actor where id >= ?";
        List list = queryRunner.query(connection, sql, new BeanListHandler<>(Actor.class), 1);
        for (Actor actor : list) {
            System.out.println(actor);
        }
        JDBCUtilsByDruid.close(null,null,connection);
    }
报错

分析原因

把select * from actor where id >= 1放到数据库中运行正常

将String sql = "select * from actor where id >= ?";
替换为 String sql = "select id, name from actor where id >= ?";
运行成功

直到添加到borndate又开始报错
String sql = "select id,name,sex,phone,borndate from actor where id >= ?";
确定了是数据库字段borndate的问题
borndate是datetime类型,而actor类的borndate是Date类型
但是用土方法去封装也能成功

public void testSelectToArrayList() {
        Connection connection = null;
        PreparedStatement preparedStatement = null;
        ResultSet set = null;
        String sql = "select * from actor where id >= ?";
        ArrayList list = new ArrayList<>();
        try {
            connection = JDBCUtilsByDruid.getConnection();
            System.out.println(connection.getClass());
            preparedStatement = connection.prepareStatement(sql);
            preparedStatement.setInt(1,1);
            set = preparedStatement.executeQuery();
            while (set.next()) {
                int id = set.getInt("id");
                String name = set.getString("name");
                String sex = set.getString("sex");
                Date borndate = set.getDate("borndate");
                String phone = set.getString("phone");
                list.add(new Actor(id,name,sex,borndate,phone));
            }
            System.out.println(list);
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            JDBCUtilsByDruid.close(set, preparedStatement, connection);
        }
    }


最后把数据库borndate的类型由datetime改为date

alter table actor
    modify  column borndate datetime;

成功运行

总结:使用apache-DBUtis 工具类 字段的Date类型必须和数据库字段的date对应

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/832236.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号