Mybatis

作者: 业余的猫 | 来源:发表于2017-03-31 10:28 被阅读18次
1.org.apache.ibatis.exceptions.TooManyResultsException

连表查询时常见的问题,这通常是由于mybatis对与多个数据中字段名称可能一样不能正确做出解析。

  • 解决方法1:
    重新建表:多个表中列名相同的加前缀加以区分(代价高,相信你不会这么做0.0)

  • 解决方法2:
    在写SQL语句的时候给相同列名的字段取别名。
    select u.id as u_id, u.name as u_name, o.id as o_id, o.name as o_name
    from tb_user as u, tb_order as o where u.id = o.user_id and u.id = #{id}
    当然这还不够,还需要在resultMap中修改字段映射,把column改成你的别名,就完事了。再次列上我的配置。
    <resultMap id="UserResult" type="User" >
    <id property="id" column="u_id"/>
    <result property="name" column="u_name"/>
    <collection property="orders" ofType="Order">
    <id property="id" column="o_id"/>
    <result property="name" column="o_name"/>
    </collection>
    </resultMap>
    <select id="findById" parameterType="java.lang.Integer" resultMap="UserResult">

    select u.id as u_id, u.name as u_name, o.id as o_id, o.name as o_name from
    tb_user as u, tb_order as o where u.id = o.user_id and u.id = #{id}
    </select>

相关文章

网友评论

    本文标题:Mybatis

    本文链接:https://www.haomeiwen.com/subject/kgbmottx.html