springboot嵌套子類使用方式—前端與后臺(tái)開發(fā)的注意事項(xiàng)
springboot嵌套子類使用
在實(shí)際項(xiàng)目里,我們會(huì)使用到一個(gè)User用戶含有子類Address、這種嵌套子類在開發(fā)中會(huì)遇到很多問題,現(xiàn)在主要針對前臺(tái)和后臺(tái)的開發(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);
}前臺(tái)使用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;
? ? ? ? ? ? }
? ? ? ? }
? ? ? ? ]后臺(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);
? ? ? ? //取出查詢結(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)入切面。
使用如下方式可解決該問題(啟動(dòng)類上需要添加
@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)的接口。
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
如何從官網(wǎng)下載Hibernate jar包的方法示例
這篇文章主要介紹了如何從官網(wǎng)下載Hibernate jar包的方法示例,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2019-04-04
Java中checkbox實(shí)現(xiàn)跨頁多選的方法
最近做了一個(gè)項(xiàng)目其中遇到這樣的需求,要實(shí)現(xiàn)checkbox跨頁多選功能,經(jīng)過小編整理,順利解決,今天小編給大家分享Java中checkbox實(shí)現(xiàn)跨頁多選的方法,需要的的朋友參考下2017-01-01
idea中提示Class 'xxx' is never us
這篇文章主要介紹了idea中提示Class 'xxx' is never used的解決方案,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-01-01
Java實(shí)現(xiàn)KFC點(diǎn)餐系統(tǒng)過程解析
這篇文章主要介紹了Java實(shí)現(xiàn)KFC點(diǎn)餐系統(tǒng)過程解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-10-10
Java實(shí)現(xiàn)一個(gè)簡單計(jì)算器
這篇文章主要介紹了Java實(shí)現(xiàn)一個(gè)簡單計(jì)算器,文章我圍繞實(shí)現(xiàn)簡單計(jì)算器的相關(guān)代碼展現(xiàn)全文,具有一定的參考價(jià)值,需要的小伙伴可以參考一下,2022-01-01

