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