精华内容
下载资源
问答
  • 需要通过resultMap来实现 有一个对象InHosPatient ,它里面还有一个对象Patient ,那么通过resultMap可以实现将查询出的数据,组装到InHosPatient 中的 Patient 中 public class InHosPatient { /** * 住院日期...

    需要通过resultMap来实现  有一个对象InHosPatient ,它里面还有一个对象Patient ,那么通过resultMap可以实现将查询出的数据,组装到InHosPatient 中的 Patient 中

    public class InHosPatient {

    /**
    * 住院日期.
    */
    private Long _id;
    private Date _inDate;
    private Date _outDate;
    private String _diagName;
    private String _diagCode;
    private String _orgCode;
    /**
    * 机构名称.
    */
    private String _orgName;
    private String _deptCode;

    private Patient patient;

    }

    public class Patient{

    prvate String _patientName;

    private String _sex;

    }


    有两种实现方式:

    1、通过association 来配置

    <resultMap type="InHosPatient" id="patient">
    <result column="id" property="id"/>
    <result column="sex" property="sex"/>
    <result column="inDate" property="inDate"/>

     <association property="patient1" javaType="com.changx.doctor.domain.Patient1">  
            <result column="patientName" property="patientName"/>  
     </association>  
    </resultMap>


    2、通过成员对象变量名点上属性名

    <resultMap type="InHosPatient" id="patient">
    <result column="id" property="id"/>
    <result column="sex" property="sex"/>
    <result column="inDate" property="inDate"/>
     <result column="patientName" property="patient.patientName"/> 
    </resultMap>


    展开全文
  • mysql中有种可以通过join相关操作进行表与表之间的方式查询不同结果集,但是在的情况下,关键查询结果条的.例如:班级和学习的关系,我想很直观的看到班级和学生的情况,列表显示出班级的信息和班级的男生...

    使用场景

    mysql中有种可以通过join相关操作进行表与表之间的方式查询不同结果集,但是在一对多的情况下,关键查询的结果是多条的.例如:班级和学习的关系,我想很直观的看到班级和学生的情况,列表显示出班级的信息和班级的男生女生姓名,通过关联查询肯定是无法实现的.

    解决方式

    1首先我们了解上述相关使用场景之后,结合相关如下相关示例

    单个列表中,需要显示不同快递公司的配送区域,相关表中存储是的对应的地区id字段
    2主表中记录相关业务数据,然后关联相地址表处理结果集,就可以得到我们需要的结果
    原数据
    这是原数据
    最终需要的数据
    这是我们要显示的最终数据
    执行的SQL如下

        SELECT 
        template.templete_id, template.is_transport, template.is_take_order, template.is_stop,
       	GROUP_CONCAT(region.region_name) province, template.first_heavy_price, 
       	template.first_heavy_cost, template.first_heavy_weight, 
       	template.continued_heavy_base, template.continued_heavy_price, 
       	template.continued_heavy_cost, template.weight_unit 
        FROM kd_up_freight_template template LEFT JOIN kd_up_express up
        ON template.up_express_id = up.up_express_id
        LEFT JOIN kd_region region ON FIND_IN_SET(region.region_id, template.province) 
        WHERE template.isdel = 0 
        GROUP BY template.templete_id
    

    实现思路

    可能业务场景不太一样,最终的处理方式也不一样
    上面的SQL主要是通过主表中的地址ID集合关联地址表
    关联方式通过FIND_IN_SET()函数处理
    然后通过主表的ID进行分组
    处理返回数据中通过GROUP_CONCAT()函数进行地址名称处理

    FIND_IN_SET()
    功能:FIND_IN_SET函数是IN函数的升级版.功能类似.区别在于:如果是常量,则可以直接用IN, 否则要用FIND_IN_SET()函数
    语法:MySQL中原型为:FIND_IN_SET(str,strlist)。 假如字符串str 在由N 子链组成的字符串列表strlist 中,则返回值的范围在 1 到 N 之间.
    我们通过这个函数使主表和地址表关联起来

    GROUP_CONCAT()
    功能:将group by产生的同一个分组中的值连接起来,返回一个字符串结果。
    语法:group_concat( [distinct] 要连接的字段 [order by 排序字段 asc/desc ] [separator ‘分隔符’] )
    这里我们直接不用做任何处理,直接连接地址名称就可以了

    展开全文
  • 最近我自己做项目,发现也需要实现一个类似的业务,百度了很,博客也看了不少,发现,类似的文章很少,有也不是我想要的,特此分享,供遇到问题的朋友参考。如有问题可联系我,联系方式最下面。   2、数据...

    1、业务描述:之前一位好友问,如何实现,分页查询所有用户信息,并且查询的用户信息里,每一条包含此用户所携带的所有工具,每个工具也是一条数据。

    最近我自己做项目,发现也需要实现一个类似的业务,百度了很多,博客也看了不少,发现,类似的文章很少,有也不是我想要的,特此分享,供遇到问题的朋友参考。如有问题可联系我,联系方式最下面。

     

    2、数据(以下数据仅是自己所造,仅供参考)

    数据库可能是这种格式

    查询出来的格式可能是这样的

    3、如何解决,此处参考所参考的业务及解决方案,乃是本人遇到的业务。

    项目国际化,一个按钮或者菜单有很多种语言,这些语言都存于数据库。在语言管理页面。数据展示类表,只显示中文和英文,其它语言都在详情中以类表的形式展示。

    例如:数据库部分可能是这样的

              

    前端界面是这样的,页面数据仅供参考

    详情弹框:

     

    实现方案:子查询

    我重新写了一个实体类来作为返回给前端

    public class LanguageVO {
        private String code;
        private String zhLanguage;    //中文
        private String cnLanguage;    //英文
        private List<TLanguageIta> list;   //其它语言

        get  set方法略.....

    }

    原实体类:

    public class LanguageI {
        private String id;

        private String code;
        
        private String languageType;

        private String content;

       get  set方法略..

    }

    方案一: 直接在类中用注解方式实现:

        @Select("select code from language  group by code")
        @Results({
             @Result(property = "code", column = "code"),
             @Result(property = "list", column = "code",
                 many  =@Many(select ="com.mapper.TLanguageItaMapper.getLanguageListByCode")),
             @Result(property = "zhLanguage", column = "code",
                  one =@One(select ="com.mapper.TLanguageItaMapper.getZhLanguage")),
             @Result(property = "cnLanguage", column = "code",
                   one =@One(select ="com.mapper.TLanguageItaMapper.getCnLanguage"))
             })
        List<LanguageVO> getLanguageListByPage();

        @Select("select t.id,t.code,t.language_type as languageType,"
                + "t.content,t.remark from language t where t.code = #{code}")
        List<TLanguageIta> getLanguageListByCode(@Param("code")String code);
        @Select("select t.content from language t where t.code = #{code} and t.language_type = '1'")
        String getZhLanguage(@Param("code")String code);
        @Select("select t.content from language t where t.code = #{code} and t.language_type = '2'")
          String getCnLanguage(@Param("code")String code);

    方案二:在xml中实现

      <resultMap type="com.vo.TLanguageVO" id="getLanguageList">
           <result column="code" property="code"/>
           <association property="zhLanguage"
                         select="getZhLanguage"
                         column="code"/>
         <association property="cnLanguage"
                         select="getCnLanguage"
                         column="code"/>
         <collection property="list"
                        select="getLanguageListByCode"
                        column="code"/>           
      </resultMap>
      <select id="getLanguageListByPage" resultMap="getLanguageList" >

      <select id="getZhLanguage" resultType="String">
          select t.content from language t where t.code = #{code} and t.language_type = '1'
      </select>
        <select id="getCnLanguage" resultType="String">
          select t.content from language t where t.code = #{code} and t.language_type = '2'
      </select>
      <select id="getLanguageListByCode" resultMap="BaseResultMap">
          select t.id,t.code,t.language_type,t.content,t.remark from  language t 
          where t.code = #{code}
      </select>

     

    结语:本人所有文章都立志写的简单易懂,戳中问题点。 当然了,简单的同时可能忽略了很多细节与详细,如有不足的地方,还请谅解并指出。  如对文章或实现技术上有问题,可联系我:qq: 1226500260     邮箱:654868284@qq.com

     

    展开全文
  • 比如第一个查询有100条两列,第二个查询结果也为160条两列,故使用union all之后,可以将这两个结果合并成一个,变成260行两列。 描述 MySQL UNION 操作符用于连接两个以上的 SELECT 语句的结果组合到一个结果集合...

    MySQL UNION 和 UNION all 操作符将两个结果集合并一个表

    比如第一个查询有100条两列,第二个查询结果也为160条两列,故使用union all之后,可以将这两个结果合并成一个,变成260行两列。

    描述

    MySQL UNION 操作符用于连接两个以上的 SELECT 语句的结果组合到一个结果集合中。多个 SELECT 语句会删除重复的数据。

    语法

    MySQL UNION 操作符语法格式:

    SELECT expression1, expression2, ... expression_n
    FROM tables
    [WHERE conditions]
    UNION [ALL | DISTINCT]
    SELECT expression1, expression2, ... expression_n
    FROM tables
    [WHERE conditions];

    参数

    • expression1, expression2, ... expression_n: 要检索的列。

    • tables: 要检索的数据表。

    • WHERE conditions: 可选, 检索条件。

    • DISTINCT: 可选,删除结果集中重复的数据。默认情况下 UNION 操作符已经删除了重复数据,所以 DISTINCT 修饰符对结果没啥影响。

    • ALL: 可选,返回所有结果集,包含重复数据。


    演示数据库

    在本教程中,我们将使用 RUNOOB 样本数据库。

    下面是选自 "Websites" 表的数据:

    mysql> SELECT * FROM Websites;
    +----+--------------+---------------------------+-------+---------+
    | id | name         | url                       | alexa | country |
    +----+--------------+---------------------------+-------+---------+
    | 1  | Google        | https://www.google.cm/    | 1     | USA     |
    | 2  | 淘宝           | https://www.taobao.com/   | 13    | CN      |
    | 3  | 菜鸟教程        | http://www.runoob.com/    | 4689  | CN      |
    | 4  | 微博           | http://weibo.com/         | 20    | CN      |
    | 5  | Facebook      | https://www.facebook.com/ | 3     | USA     |
    | 7  | stackoverflow | http://stackoverflow.com/ |   0 | IND     |
    +----+---------------+---------------------------+-------+---------+

    下面是 "apps" APP 的数据:

    mysql> SELECT * FROM apps;
    +----+------------+-------------------------+---------+
    | id | app_name   | url                     | country |
    +----+------------+-------------------------+---------+
    |  1 | QQ APP     | http://im.qq.com/       | CN      |
    |  2 | 微博 APP    | http://weibo.com/       | CN      |
    |  3 | 淘宝 APP    | https://www.taobao.com/ | CN      |
    +----+------------+-------------------------+---------+
    3 rows in set (0.00 sec)
    

    一、SQL UNION 实例

    下面的 SQL 语句从 "Websites" 和 "apps" 表中选取所有不同的country(只有不同的值):

    实例

    SELECT country FROM Websites
    UNION
    SELECT country FROM apps
    ORDER BY country;

    执行以上 SQL 输出结果如下:

    注释:UNION 不能用于列出两个表中所有的country。如果一些网站和APP来自同一个国家,每个国家只会列出一次。UNION 只会选取不同的值。请使用 UNION ALL 来选取重复的值!

    二、SQL UNION ALL 实例

    下面的 SQL 语句使用 UNION ALL 从 "Websites" 和 "apps" 表中选取所有的country(也有重复的值):

    实例

    SELECT country FROM Websites
    UNION ALL
    SELECT country FROM apps
    ORDER BY country;

    执行以上 SQL 输出结果如下:

     

    三、带有 WHERE 的 SQL UNION ALL

    下面的 SQL 语句使用 UNION ALL 从 "Websites" 和 "apps" 表中选取所有的中国(CN)的数据(也有重复的值):

    实例

    SELECT country, name FROM Websites
    WHERE country='CN'
    UNION ALL
    SELECT country, app_name FROM apps
    WHERE country='CN'
    ORDER BY country;

    执行以上 SQL 输出结果如下:

    总之:

    UNION 语句:用于将不同表中相同列中查询的数据展示出来;(不包括重复数据)

    UNION ALL 语句:用于将不同表中相同列中查询的数据展示出来;(包括重复数据)

    使用形式如下:

    SELECT 列名称 FROM 表名称 UNION SELECT 列名称 FROM 表名称 ORDER BY 列名称;
    SELECT 列名称 FROM 表名称 UNION ALL SELECT 列名称 FROM 表名称 ORDER BY 列名称;

    四、我的例子如下:

     

    mysql> select * from product;
    +------+--------+
    | id   | amount |
    +------+--------+
    |    1 |    100 |
    |    2 |    200 |
    |    3 |    300 |
    |    4 |    400 |
    +------+--------+
    4 rows in set (0.00 sec)

    mysql> select a.* from product a ;
    +------+--------+
    | id   | amount |
    +------+--------+
    |    1 |    100 |
    |    2 |    200 |
    |    3 |    300 |
    |    4 |    400 |
    +------+--------+
    4 rows in set (0.00 sec)

    mysql> select a.id a_id from product a ;
    +------+
    | a_id |
    +------+
    |    1 |
    |    2 |
    |    3 |
    |    4 |
    +------+
    4 rows in set (0.00 sec)

    mysql> select a.id as a_id from product a ;
    +------+
    | a_id |
    +------+
    |    1 |
    |    2 |
    |    3 |
    |    4 |
    +------+
    4 rows in set (0.01 sec)

    mysql> select a.id as a_id,a.amount a_amout from product a ;
    +------+---------+
    | a_id | a_amout |
    +------+---------+
    |    1 |     100 |
    |    2 |     200 |
    |    3 |     300 |
    |    4 |     400 |
    +------+---------+
    4 rows in set (0.00 sec)

    mysql> select a.id as a_id,a.amount a_amout from product a  union select b.id as b_id,b.amount b_amout from product b;
    +------+---------+
    | a_id | a_amout |
    +------+---------+
    |    1 |     100 |
    |    2 |     200 |
    |    3 |     300 |
    |    4 |     400 |
    +------+---------+
    4 rows in set (0.00 sec)

    mysql> select a.id as a_id,a.amount a_amout from product a  union all  select b.id as b_id,b.amount b_amout from product b;
    +------+---------+
    | a_id | a_amout |
    +------+---------+
    |    1 |     100 |
    |    2 |     200 |
    |    3 |     300 |
    |    4 |     400 |
    |    1 |     100 |
    |    2 |     200 |
    |    3 |     300 |
    |    4 |     400 |
    +------+---------+
    8 rows in set (0.01 sec)

    mysql> select a.id as a_id from product a  union all  select concat(b.amount,b.id,'#') from product b;
    +-------+
    | a_id  |
    +-------+
    | 1     |
    | 2     |
    | 3     |
    | 4     |
    | 1001# |
    | 2002# |
    | 3003# |
    | 4004# |
    +-------+
    8 rows in set (0.00 sec)

    mysql> select a.id as a_id from product a  union all  select concat_ws('#',b.amount,b.id) from product b;
    +-------+
    | a_id  |
    +-------+
    | 1     |
    | 2     |
    | 3     |
    | 4     |
    | 100#1 |
    | 200#2 |
    | 300#3 |
    | 400#4 |
    +-------+
    8 rows in set (0.00 sec)

    参考:http://www.runoob.com/mysql/mysql-union-operation.html

    展开全文
  • 首先需要在mapper.xml中映射一个resultmap,column为类中的属性也就是表中所对应的字段。 代码如下: &lt;resultMap id="seeShare" type="com.example.demo.entity.Diary"&gt; &...
  • 最近在做一个统计功能,其中有根据一张表中的一个字段的不同状态统计,输出时将同一笔业务的多个数据集合成一条数据进行展示。 数据库是MYSQL,直接上代码,实例如下:   建表语句: CREATE TABLE `TB_TABLE` ...
  • 避免id相同,然后在resultMapExtral中添加其它表的字段,若多个表中的字段名相同,要对查询结果和resultMapExtral中相同的字段另起别名,最后另外定义一个实体bean接收结果。 定义结果集: &lt;resultMap id=&...
  • 前段时间在工作中遇到需要关联查询的情况,百度了好久遇到各种坑,所以在此记录一下,话不说直接开始 首先,先建几测试类,主子表通过grade_id关联,具体属性注释我就省略不写了,大家能看懂 主表 @...
  • SQL查询结果返回实体结果集

    千次阅读 2014-10-27 11:13:51
    事先要用zhujie声明@Override public List getDashboardData() throws Exception{ Session session = sessionFactory.getCurrentSession(); if (session == null) { session = sessionFac
  • mysql 返回多个函数计算结果

    千次阅读 2014-02-13 16:51:00
    我想值得记录的sql 语句,以前没写过, ...虽然查的是数据库表,返回的计算结果,不是字段,且是两值,故用集合接收。 code :public List getVipCount(int yyryid) {  String sql = "SELECT count(id) 
  • Mybatis查询语句返回对象和泛型集合

    千次阅读 2017-06-14 14:57:25
    Mybatis查询语句返回对象和泛型集合
  • JDBC获取数据库返回多个结果

    千次阅读 2019-01-09 09:49:46
    问题描述:有时使用JDBC进行数据库查询时会返回多个结果集,但是PreparedStatement方式只能接收第一个结果集。 例如在SQL Server中执行sp_help 'test.student',该语句会返回至少7个结果集。 1、使用...
  • 关键字:string_agg('' , '')例如: select string_agg(name||'' , ',') from sys_user
  • 提问 select userid,username,price,vol from table_a … select userid,...要让这两句形成一个结果集。怎么办? 解答 select userid,username,price,vol from table_a … union all select userid,username,...
  • 像图1这种情况,前面的字段内容全部都一样,只有其中一个字段的内容不一样,就可以把这些字段的数据整在一查询结果的字段里: sql语句: select uid,LXR,等等其他字段,GROUP_CONCAT(clcpmc separator'、') group ...
  • 一个语句的查询字段结果作为另一个语句的查询字段并返回查询的值 SELECT PJ_JFSf FROM tg_zb_zbkzb WHERE zbuuid=v_zbuuid) --case when sum(fm) &gt; 0 then sum(fz)/sum(fm) ELSE 0 end create or ...
  • 1.查询的数据对象 @Data public class JdOrder implements Serializable{ private Long orderId; private Long finishTime; private Integer orderEmt; private Long orderTime; private Long pare...
  • 在工作中同事遇到问题问我,我竟然时还真不知道怎么处理,问题如下所示: 描述:有积分表,用于记录用户的一些积分情况,其中有两字段,score用于记录用户当前积分,totalscore用于记录用户的历史总积分...
  • MySQL UNION 用于把来自多个 SELECT 语句的结果组合到一个结果集合中。语法为: SELECT column,... FROM table1 UNION [ALL] SELECT column,... FROM table2 ... 在多个 SELECT 语句中,对应的列应该具有相同...
  • 》在进行查询时,有时会出现当主表对象()的子表属性项()的数目为0时,查询结果却显示主表对象中有条子表对象数据(子表对象的其 中某项属性有值,其他各项包括id属性都为null...
  •    最近在开发web(持久层框架用的是mybatis)时遇到一个小问题 : 需要查询对象列表返回到页面,每一个对象中有一个属性是list,我需要获取这个list中的值显示在页面上。 2. 解决方案    使用collection解决,...
  • 假如一个教室里有上万个学生,教室和学生是一对的映射关系,通过学生id返回教室对象,但返回的教室对象所包含的学生对象确实全部的学生,自然性能比较低下,改进代码如下。 通过criteria进行查询criteria....
  • Spring Data JPA 查询结果返回至自定义实体

    万次阅读 热门讨论 2018-07-18 23:46:16
    本人在实际工作中使用Spring Data Jpa框架时,一般查询结果返回对应的Entity实体。... 类型,即多个Object数组的List集合,然后通过解析获取需要的数据,比较麻烦。 于是,开始考虑能否将查询结果返回至...
  • Mybatis查询多条记录并返回List集合

    千次阅读 2019-06-19 16:44:19
    https://blog.csdn.net/u014268482/article/details/80570508
  • 我有个需求如下图 表的结构关系 ...for xml path('')的作用是将字符串先拼成一个 SELECT *, RLCD = (select ',' + RLCD from WQ_USERROLE_B WHERE URCD=WQ_USER_B.URCD for xml path('')),
  • IT、编程案例、资料请联系QQ:1280023003 百战不败,依不自称常胜,百败不颓,依能奋力前行。——这才是真正的堪称强大!! 开发工具eclipse package com.echo.demo; import java.util.ArrayList; import ...
  • SpringDataJpa查询返回集合

    千次阅读 2019-10-12 10:23:54
    当我们使用SpringDataJpa写sql查询数组时,如果数据库查询出来的数据为空,结果会是怎样的呢 接口类 public interface Dao extends PagingAndSortingRepository { @Query("select eneity from table") List<...
  • 昨天有同事让我帮着看一个问题,mybatis主从表联合查询返回的对象封装集合属性。我先将出现的问题记录一下,然后再讲处理方法也简单说明一下: VersionResult为接收返回数据对象,get\set方法我这里就省略了。 ...
  • Spring中,JdbcTemplate的query方法的参数中实现RowMapper接口,可以将查询结果的每行映射为数据库表对应的EntityBean,并最终返回List&lt;EntityBean&gt;,这属于基本运用,但实际应用往往是表查询返回...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 917,783
精华内容 367,113
关键字:

多个查询结果返回一个结果集合