最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

springboot嵌套子類使用方式—前端與后臺開發(fā)的注意事項(xiàng)

 更新時間:2022年03月24日 14:58:50   作者:鯨魚姐  
這篇文章主要介紹了springboot嵌套子類使用方式—前端與后臺開發(fā)的注意事項(xiàng),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

springboot嵌套子類使用

在實(shí)際項(xiàng)目里,我們會使用到一個User用戶含有子類Address、這種嵌套子類在開發(fā)中會遇到很多問題,現(xiàn)在主要針對前臺和后臺的開發(fā)問題進(jìn)行整理。

實(shí)際Bean類

User類里含有Address類

public class User {
?? ?private int userId;
?? ?private String userName;
?? ?private Address userAddress;
}
public class Address?
{
?? ?private int addressId;
?? ?private String city;
//忽略get、set方法
}

UserMapper.java  對于一對一

使用@Result注解,調(diào)用查詢子類數(shù)據(jù)。

public interface UserMapper
{
?? ?//one to one?
?? ?@Select("select * from user where userId = #{userId}")
?? ?@Results({
?? ??? ?@Result(id=true,column="userId",property="userId"),
?? ??? ?@Result(column="userName",property="userName"),
@Result(column="userId",property="userAddress",one=@One(select="com.whale.mapper.AddressMapper.getAddressByUserId",fetchType= FetchType.EAGER))
})
public interface AddressMapper?
{
?? ?@Select("select * from address where userId=#{userId}")
?? ?public Address getAddressByUserId(int userId);
}

前臺使用bootstrap-table進(jìn)行解析顯示

在formmater里進(jìn)行子類顯示

columns: [{
? ? ? ? ? ? checkbox : true
? ? ? ? }, {
? ? ? ? ? ? field: 'userId',
? ? ? ? ? ? title: '用戶ID'
? ? ? ? }, {
? ? ? ? ? ? field: 'userName',
? ? ? ? ? ? title: '用戶姓名'
? ? ? ? }, {
? ? ? ? ? ? field: 'userAddress',
? ? ? ? ? ? title: '地址',
? ? ? ? ? ? formatter : function(value,row, index){ ? //主要配置在這里
? ? ? ? ? ? ? ? return value.city;
? ? ? ? ? ? }
? ? ? ? }
? ? ? ? ]

后臺Controller轉(zhuǎn)換成Json會出現(xiàn) $ref

解決辦法如下:

注意:

String jsonSting=JSON.toJSONString(result, SerializerFeature.DisableCircularReferenceDetect); 

結(jié)果中出現(xiàn)$ref,先把JSONObject轉(zhuǎn)換成String,然后再轉(zhuǎn)換回JSONObject

? @ResponseBody
? ? @RequestMapping("allUser")
? ? public String findALL(){ ? ??
? ? ? ? PageHelper.startPage(pageNumber,pageSize);
? ? ? ? List<User> userList= userService.findAll();
? ? ? ? PageInfo<User> page=new PageInfo<>(userList);
? ? ? ? //取出查詢結(jié)果
? ? ? ? List<User> rows = page.getList();
? ? ? ? JSONObject result = new JSONObject();
?
? ? ? ? int total = (int) page.getTotal();
? ? ? ? result.put("total",total);
? ? ? ? result.put("rows",rows);
? ? ? ? String jsonSting=JSON.toJSONString(result, SerializerFeature.DisableCircularReferenceDetect); ?//結(jié)果中出現(xiàn)$ref,先把JSONObject轉(zhuǎn)換成String,然后再轉(zhuǎn)換回JSONObject
? ? ? ? JSONObject json= JSON.parseObject(jsonSting);
? ? ? ? System.out.println(json.toJSONString());
}

注解在嵌套方法不生效問題

例如在service中方法如下

? ? @PermissionAop
? ? @Override
? ? public List<PoiPermission> getList() {
? ? ? ? List<PoiPermission> list = this.list();
? ? ? ? return list;
? ? }
? ? @Override
? ? public void test(){
? ? ? ? this.getList();
? ? ? ? System.out.println("");
? ? }

controller中調(diào)用test()方法,test方法中調(diào)用切面方法,切面不生效,無法進(jìn)入切面。

使用如下方式可解決該問題(啟動類上需要添加

@EnableAspectJAutoProxy(exposeProxy = true))
? ? @PermissionAop
? ? @Override
? ? public List<PoiPermission> getList() {
? ? ? ? List<PoiPermission> list = this.list();
? ? ? ? return list;
? ? }
?
? ? @Override
? ? public void test(){
? ? ? ? IPoiPermissionService service = (IPoiPermissionService) AopContext.currentProxy();
? ? ? ? service.getList();
? ? ? ? System.out.println("");
? ? }

其中IPoiPermissionService為該service類實(shí)現(xiàn)的接口。

以上為個人經(jīng)驗(yàn),希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • ?Java數(shù)據(jù)結(jié)構(gòu)的十大排序

    ?Java數(shù)據(jù)結(jié)構(gòu)的十大排序

    這篇文章主要介紹了?Java數(shù)據(jù)結(jié)構(gòu)的十大排序,排序算法分為比較類排序和非比較類排序,具體的內(nèi)容,需要的朋友參考下面思維導(dǎo)圖及文章介紹,希望對你有所幫助
    2022-01-01
  • Java?Stream排序的實(shí)現(xiàn)方式面試精講

    Java?Stream排序的實(shí)現(xiàn)方式面試精講

    這篇文章主要為大家介紹了Java?Stream排序的實(shí)現(xiàn)方式面試精講,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-09-09
  • 淺析Java隨機(jī)數(shù)與定時器

    淺析Java隨機(jī)數(shù)與定時器

    本篇文章給大家分析了Java隨機(jī)數(shù)與定時器的實(shí)現(xiàn)原理以及代碼分享,有需要的讀者參考下吧。
    2018-02-02
  • Java之jpa入門教程講解

    Java之jpa入門教程講解

    這篇文章主要介紹了Java之jpa入門教程講解,本篇文章通過簡要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-08-08
  • 基于ElasticSearch Analyzer的使用規(guī)則詳解

    基于ElasticSearch Analyzer的使用規(guī)則詳解

    這篇文章主要介紹了基于ElasticSearch Analyzer的使用規(guī)則,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • Tomcat+JDK安裝和配置教程

    Tomcat+JDK安裝和配置教程

    這篇文章主要為大家詳細(xì)介紹了Tomcat+JDK安裝和配置教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-03-03
  • 深入淺析JSON在java中的使用

    深入淺析JSON在java中的使用

    這篇文章主要介紹了JSON在java中的使用,包括javaBean和json的互轉(zhuǎn),List 和 json 的互轉(zhuǎn)及map 和 json 的互轉(zhuǎn),本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2021-04-04
  • Mybatis加載策略的實(shí)現(xiàn)方法

    Mybatis加載策略的實(shí)現(xiàn)方法

    Mybatis中一對一,一對多,多對多關(guān)系的配置及實(shí)現(xiàn),可以實(shí)現(xiàn)對象的關(guān)聯(lián)查詢。實(shí)際開發(fā)過程中很多時候我們并不需要總是在加載用戶信息時就一定要加載他的訂單信息,這是就是我們常說的延時加載,本文給大家詳細(xì)介紹實(shí)現(xiàn)方法,一起看看吧
    2022-02-02
  • Java8使用lambda實(shí)現(xiàn)Java的尾遞歸

    Java8使用lambda實(shí)現(xiàn)Java的尾遞歸

    這篇文章主要介紹了Java8使用lambda實(shí)現(xiàn)Java的尾遞歸的相關(guān)資料,需要的朋友可以參考下
    2017-10-10
  • 友盟 微信第三方登錄示例

    友盟 微信第三方登錄示例

    這篇文章主要介紹了友盟 微信第三方登錄示例的相關(guān)資料,需要的朋友可以參考下
    2016-10-10

最新評論

沾益县| 永登县| 河北区| 文成县| 屯昌县| 东光县| 普兰店市| 安仁县| 年辖:市辖区| 利辛县| 博白县| 南充市| 水城县| 梁山县| 姜堰市| 丰城市| 阿拉善盟| 霍林郭勒市| 舒城县| 耿马| 阿巴嘎旗| 安宁市| 马鞍山市| 额济纳旗| 得荣县| 北碚区| 耿马| 禄丰县| 宜州市| 定远县| 册亨县| 临江市| 来宾市| 会同县| 青铜峡市| 广宁县| 临汾市| 沙田区| 兴和县| 麻江县| 中超|