您好,登錄后才能下訂單哦!
這篇文章主要介紹了springboot怎么嵌套子類的相關知識,內容詳細易懂,操作簡單快捷,具有一定借鑒價值,相信大家閱讀完這篇springboot怎么嵌套子類文章都會有所收獲,下面我們一起來看看吧。
在實際項目里,我們會使用到一個User用戶含有子類Address、這種嵌套子類在開發中會遇到很多問題,現在主要針對前臺和后臺的開發問題進行整理。
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方法 }
使用@Result注解,調用查詢子類數據。
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); }
在formmater里進行子類顯示
columns: [{ checkbox : true }, { field: 'userId', title: '用戶ID' }, { field: 'userName', title: '用戶姓名' }, { field: 'userAddress', title: '地址', formatter : function(value,row, index){ //主要配置在這里 return value.city; } } ]
解決辦法如下:
注意:
String jsonSting=JSON.toJSONString(result, SerializerFeature.DisableCircularReferenceDetect);
結果中出現$ref,先把JSONObject轉換成String,然后再轉換回JSONObject
@ResponseBody @RequestMapping("allUser") public String findALL(){ PageHelper.startPage(pageNumber,pageSize); List<User> userList= userService.findAll(); PageInfo<User> page=new PageInfo<>(userList); //取出查詢結果 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); //結果中出現$ref,先把JSONObject轉換成String,然后再轉換回JSONObject JSONObject json= JSON.parseObject(jsonSting); System.out.println(json.toJSONString()); }
@PermissionAop @Override public List<PoiPermission> getList() { List<PoiPermission> list = this.list(); return list; } @Override public void test(){ this.getList(); System.out.println(""); }
controller中調用test()方法,test方法中調用切面方法,切面不生效,無法進入切面。
使用如下方式可解決該問題(啟動類上需要添加
@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類實現的接口。
關于“springboot怎么嵌套子類”這篇文章的內容就介紹到這里,感謝各位的閱讀!相信大家對“springboot怎么嵌套子類”知識都有一定的了解,大家如果還想學習更多知識,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。