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

来源:互联网 发布:无锡紫光软件培训中心 编辑:程序博客网 时间:2024/06/18 08:49

最近因为公司框架的限制只能使用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.

原创粉丝点击