java第一篇:使用jdbc进行关联查询以及java开发常见问题

最近因为公司框架的限制只能使用jdbc,不能使用hibernate,所以只能使用jdbc进行关联查询,很久没搞java了,忘记了很多,
在这里对不懂的、遗忘的java内容做个纯粹的记录,好了,闲话不多说,方法大概如下:

    一对多关联查询:
    1.查询主表的所有记录List.
    2.遍历List,查询出所有的从表记录xqList,并在内部遍历xqList,讲xqList的记录add到List里面即可。

String sql = "select * from T_WDRZ t where t.name=? and t.rq like ? and t.is_deleted='0'";
    List<Wdrz> list = getBaseDBDAO().queryForList(sql, Wdrz.class, name, rq);
    if (list != null && list.size() > 0) {
        for (Wdrz wdrz : list) {
            String xqSql = "select * from T_WDRZ_XQ t where t.rzid = ?";
            List<WdrzXq> xqList = getBaseDBDAO().queryForList(xqSql,WdrzXq.class,wdrz.getId());
            if (xqList != null && xqList.size() > 0) {
                for (WdrzXq wdrzXq : xqList) {
                    wdrz.getWdrzXq().add(wdrzXq);
                }
            }
        }
    }

    注:Wdrz实体类中有个List<WdrzXq>集合。

java开发常见问题:

    1.java.sql.SQLException: 无效的列索引

“无效的列索引”其实是个低级的错误,原因无非几个:

    1、sql串的?号数目和提供的变量数目不一致:

例如:jdbcTemplate.update(sql, new Object[] {newState,oldState});
如果sql里面有1个?号,Object[]送了2个,就会报错。

    2、sql串里的?号书写不正确

英文?和中文?有时难以区分。

    3、sql串的?号用''括了起来。 把单引号去掉即可。

例如:sql=”UPDATE abc SET abc.name=’?’ WHERE abc.id=’?’”;
把”去掉就可以了。

    4,遇到这种情况select*from user where   info   like   %?%;  

虽然这是sql的写法,但是在jdbc 中需要改成 select*from user where info like ?;
如ps.setString(“%”+value+“%”);

    2.使用jdbc需要注意:
        1).代码中sql语句 ,注意点:

            ? 不能用单引号 括起来,否则会报 无效的列索引.?
            字段中有下划线 需要加下划线.is_deleted

        2).实体类中:

            数据库字段有下划线的,实体类中都采用驼峰命名法,如: private String isDeleted.
            如果没有下划线,在实体类中都使用小写,如下:

            数据库字段 实体类字段

            IS_DELETED isDeleted
            ISDELETED isdeleted

不管是jdbc还是hibernate,都是这个规则。

安卓前端也是这样的,同时安卓前端和后台实体类要一致,否则取不到值。

注意:如果使用的是hibernate进行查询,则在代码中写sql语句,可以不用加下划线,如:isDeleted.

猜你喜欢

转载自blog.csdn.net/hhy113835/article/details/78736343