hibernate/ssh 实现多表连接查询 查询结果映射到自定义类中

背景

1、项目(ssh框架或者就是hibernate框架)

2、有两张表,post(帖子表) ,user(用户表),

3、需要实现的功能

    post表和user表中含有共同的属性user_id

   查看帖子详情的时候(根据post_id查询post表对应的数据)

   同时也需要根据post表中user_id属性来查找对应的user表中的其他某个属性

4、一次查看数据库就可以把想要的结果放在一个自定义类的集合里面,方便前台显示


可用的方案

一、使用连接查询

优点:不用做复杂的操作

确定:返回的是Object[]类型,不方便前台显示数据

    String sql="select a,b.userlogo from AnswerPost  a , User b where  a.answer_name=b.username and a.post_id=?";

二、增加一个映射类如AnswerUser

操作

1、新建一个实体类,里面有你想要查询的数据属性(有user表,有post表的属性,名称可以变,但是变了的话,如果后期有对list集合数据进行操作,会晕掉的)

2、给这个实体类添加set和get方法,无参构造器,一个有参的构造器

3、一个映射文件如   实体类名.hbm.xml

4、sql语句的查询要和有参构造器的属性顺序一值


优缺点

优点:query.list()的返回值List中的值都是UsersVoGoods型的,方便前台读取数据。

缺点:增加一个类,还有映射文件,麻烦

hibernate/ssh 实现多表连接查询 查询结果映射到自定义类中_第1张图片

sql语句如下

    String sql="select new AnswerUser(b.userlogo, a.answer_id,a.post_id,a.answer_content,a.answer_name,a.byanswer_name,a.byanswer_content,a.answer_time) from AnswerPost  a , User b where  a.answer_name=b.username and a.post_id=?";

读取结果如下

hibernate/ssh 实现多表连接查询 查询结果映射到自定义类中_第2张图片


 

你可能感兴趣的:(sql,三大框架整合)