IBATIS + Oracle 时要注意:ibatis语句文件中的SQL不能带分号
38963.68
我在使用 AppFuse_1.9.3_SpringMVC_IBatis 时发现了一些Bug,现在我把这些bug给出来,并提供个人的解决办法。不过,有的BUG我在处理时只记录了解决办法,却没有记录问题,不好意思…… Bug1: 不记得了…… 解决办法:UserDaoiBatis.java文件中有句话 List userRoles = getSqlMapClientTemplate().queryForList("getUserRoles", user.getUsername()); 其中的getUsername()应改为 getId() 或者直接去掉这句话,因为它没有任何作用 Bug2:在后台为某用户分配多个角色,结果该用户只获得了所选角色中的第一个 解决办法:在UserDaoiBatis.java文件中找到 if (userRoles.isEmpty()) { getSqlMapClientTemplate().update("addUserRole", newRole); } 然后去掉这个 if条件 Bug3:admin menu按权限显示时出莫名奇妙的问题 解决办法:将struts-menu版本升级到 2.4.3,并将cssHorizontalMenu.vm 和 cssVerticalMenu.vm替换为 appFuse2.0中的版本。 Bug4:不记得了…… 解决办法:UserFormController中的 return new ModelAndView(new …
正式的业务系统里用不上这个功能,应移除。具体办法: 去掉fileUploadController这个bean及其相应的class 、url 、jsp和validation.xml
原版本中的sql是mysql风格的,它和Oracle数据库不太兼容。 主要问题有: 1. 自增主键问题。Oracle中没有自增主键,须自定义Sequence。具体有: a. 新增一个专用于权限子系统的sequence CREATE SEQUENCE security_sequence INCREMENT BY 1 — 每次加几个 START WITH 1 — 从1开始计数 NOMAXVALUE — 不设置最大值 NOCYCLE — 一直累加,不循环 CACHE 10; b.修改UserSql.xml中的addUser,应用这个sequence 2. sql语句的分号问题。使用Ibatis + Oracle时,sql中不能使用分号。因此应去掉ibatis sql文件中各语句的分号
AppFuse提供的某些功能和在某方面表现出来的风格使它不像一个典型的业务系统,我们应该裁减、修改一些东西,使它符合我们的习惯。本文谨介绍一下本人在应用AppFuse所做的改动,包括改动的功能和改动的方法。 1. 用户属性重新配置 a. 调整User的属性。去掉User Bean及User表中的非必要属性,只保留一些最基本的属性,并新增一个fullName属性作为用户真实姓名 b. 禁止删除用户:去掉UserManager中的 removeUser方法,去掉userForm.jsp中的 “删除”按钮 c. 禁止修改用户名:修改userForm.jsp d. 用户中的enable, expired,locked 三个属性中只要使用enable一个就行了。其他的两个应从userForm.jsp 中抹除,不过,下层代码和数据库不必修改 2. 二级或多级管理员体系 一个业务系统里应设置两级或两级以上后台管理员,较低级管理员执行日常的、不太危险的管理操作,较高级管理员则有权执行危险性较高的操作,而且只在必要的情况下动手。在用户数年较多的系统中,较低级的管理员可以有多个,较高级管理员则控制在一两个之内。个人认为这是平衡操作风险与管理工作量的较好模式。 若在AppFuse中采用这种模式,则需要修改的地方包括且不限于:security.xml 、 UserSecurityAdvice.java 和 menu-config.xml 另外,我还建议将用户管理权限的判断放到 UserSecurityAdvice代码中,而不是通过 Spring-Bean "userManagerSecurity" (见security.xml)来实现。这样做的好处是免于在security.xml中重载userManager