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

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

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

springboot嵌套子類(lèi)使用

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

實(shí)際Bean類(lèi)

User類(lèi)里含有Address類(lèi)

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  對(duì)于一對(duì)一

使用@Result注解,調(diào)用查詢(xún)子類(lèi)數(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);
}

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

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

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

后臺(tái)Controller轉(zhuǎn)換成Json會(huì)出現(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);
? ? ? ? //取出查詢(xún)結(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());
}

注解在嵌套方法不生效問(wèn)題

例如在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)用切面方法,切面不生效,無(wú)法進(jìn)入切面。

使用如下方式可解決該問(wèn)題(啟動(dòng)類(lèi)上需要添加

@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類(lèi)實(shí)現(xiàn)的接口。

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

相關(guān)文章

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

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

    這篇文章主要介紹了?Java數(shù)據(jù)結(jié)構(gòu)的十大排序,排序算法分為比較類(lèi)排序和非比較類(lèi)排序,具體的內(nèi)容,需要的朋友參考下面思維導(dǎo)圖及文章介紹,希望對(duì)你有所幫助
    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ù)與定時(shí)器

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

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

    Java之jpa入門(mén)教程講解

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

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

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

    Tomcat+JDK安裝和配置教程

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

    深入淺析JSON在java中的使用

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

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

    Mybatis中一對(duì)一,一對(duì)多,多對(duì)多關(guān)系的配置及實(shí)現(xiàn),可以實(shí)現(xiàn)對(duì)象的關(guān)聯(lián)查詢(xún)。實(shí)際開(kāi)發(fā)過(guò)程中很多時(shí)候我們并不需要總是在加載用戶(hù)信息時(shí)就一定要加載他的訂單信息,這是就是我們常說(shuō)的延時(shí)加載,本文給大家詳細(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

最新評(píng)論

芦山县| 分宜县| 北流市| 七台河市| 沛县| 沛县| 沛县| 澄城县| 鲁甸县| 沅江市| 枣阳市| 张家界市| 海淀区| 类乌齐县| 织金县| 海兴县| 府谷县| 天峻县| 佛冈县| 锡林郭勒盟| 红安县| 土默特左旗| 广汉市| 班玛县| 武城县| 库尔勒市| 苏尼特左旗| 当阳市| 固原市| 瓮安县| 惠州市| 遵化市| 洛隆县| 茌平县| 洛阳市| 乐都县| 德钦县| 凤城市| 冷水江市| 兴安盟| 定安县|