日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

BOS12——多对多添加方法,多对多页面需要字段问题(不多的话直接提供get方法),修改Realm中授权方法(查询数据库),缓存Java对象的方法,加载左侧菜单(ztree提供pId)...

發布時間:2023/11/29 java 41 豆豆

?1、多對多添加方法

@Override public void add(Role model, String functionIds) {// 1.先將角色保存到數據庫roleDao.save(model);// 2.為角色添加權限(一定要堅持映射文件中是否inverse)if (StringUtils.isNotBlank(functionIds)){String[] functionIdList = functionIds.split(",");for (String fid : functionIdList) {// 可以自己new一個Function對象,也可以用functionId獲取Function對象Function function = new Function();function.setId(fid);model.getFunctions().add(function);}}}

2、多對多頁面需要字段問題(不多的話直接提供get方法)

在多對多關系時,由于比較復雜,所以我們可以為頁面指定的字段加上一個get方法

3、修改Realm中授權方法(查詢數據庫)

多對多連表查詢

1 //授權方法 2 protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principals) { 3 4 SimpleAuthorizationInfo info = new SimpleAuthorizationInfo(); 5 6 // 獲取用戶對象 7 TUser user = (TUser) SecurityUtils.getSubject().getPrincipal(); 8 // TUser user2 = (TUser) principals.getPrimaryPrincipal(); 9 // System.out.println(user1 == user2); 10 11 List<Function> functionList = null; 12 if (user.getUsername().equals("admin")){ 13 DetachedCriteria dc = DetachedCriteria.forClass(Function.class); 14 functionList = functionDao.findAll(dc); 15 }else{ 16 functionList = functionDao.findByUserId(user.getId()); 17 } 18 19 20 for (Function f: functionList) { 21 info.addStringPermission(f.getCode()); 22 } 23 // 直接(不查數據庫)為用戶授權 24 // info.addStringPermission("staff-list"); 25 26 return info; 27 } BOSRealm 1 @Override 2 public List<Function> findByUserId(String id) { 3 4 // distinct==》去重 5 String hql = "select distinct f from Function f inner join f.roles r inner join r.users u where u.id=?"; 6 7 List<Function> list = (List<Function>) super.getHibernateTemplate().find(hql,id); 8 9 return list; 10 } FunctionDao

但這樣有一個缺陷,每次訪問一個頁面都會重新進行數據庫查詢;所以要整一個緩存

4、ehcache是專門緩存插件,可以緩存Java對象,提高系統性能。

第一步:在pom.xml文件中引入ehcache的依賴

第二步:在項目中提供ehcache的配置文件

<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../config/ehcache.xsd"><diskStore path="java.io.tmpdir"/><defaultCachemaxElementsInMemory="10000"eternal="false"timeToIdleSeconds="120"timeToLiveSeconds="120"overflowToDisk="true"maxElementsOnDisk="10000000"diskPersistent="false"diskExpiryThreadIntervalSeconds="120"memoryStoreEvictionPolicy="LRU"/> </ehcache>

第三步:在spring配置文件中配置緩存管理器對象,并注入給安全管理器對象

?

1 <!--配置安全管理器--> 2 <bean name="securityManager" class="org.apache.shiro.web.mgt.DefaultWebSecurityManager"> 3 <property name="realm" ref="bosRealm"/> 4 <!--注入緩存管理器--> 5 <property name="cacheManager" ref="cacheManager"/> 6 </bean> 7 8 <!--注冊緩存管理器--> 9 <bean name="cacheManager" class="org.apache.shiro.cache.ehcache.EhCacheManager"> 10 <!--注入ehcache配置文件--> 11 <property name="cacheManagerConfigFile" value="classpath:ehcache.xml"/> 12 </bean> View Code

5、加載左側菜單

?

轉載于:https://www.cnblogs.com/x54256/p/8612776.html

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的BOS12——多对多添加方法,多对多页面需要字段问题(不多的话直接提供get方法),修改Realm中授权方法(查询数据库),缓存Java对象的方法,加载左侧菜单(ztree提供pId)...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。