业务日志记录组件
1.本组件提供两类方法,记录日志与查询日志。
查询如果只返回List<map
有些数据可能需要转换格式,所以提供了一个把Map
所以接口设计如下:
public interface ILogService { /** * @param tableName * 数据表名 * @param viewOper * 显示方法名 * @param userId * 用户id * @param userName * 用户名 * @param extLog * Map<字段名,字段值> 日志显示附加信息 */ public void saveLog(String tableName, String viewOper, Long userId, String userName, Map<String, Object> extLog); /** * 查询日志,返回自定义类型T * @param tableName 表名 * @param param 参数 * @param beanCls 返回对象类型 * @return */ public <t> List<t> queryLog(String tableName, Map<String, Object> param, Class<t> beanCls); /** * 查询日志,返回ibatis原生的List<Map<String, Object>> * @param tableName 表名 * @param param 参数 * @return */ public List<Map<String, Object>> queryLog(String tableName, Map<String, Object> param); /** * 当需要对返回结果进行处理时,可先返回List<Map<String, Object>>,处理后再调用这个方法进行转换 * 把返回的Map<String, Object>转换为List<t> * @param listMap mybatis返回的Map<String, Object> * @param beanCls 转换的目标对象类类型 * @return 转换后的List */ public <t> List<t> convertMap(List<Map<String, Object>> listMap,Class<t> beanCls); }
2. 在项目里,可扩展的记录用户信息与分页方法。
对于保存方法中的用户名(userName),用户id(userId)一般有自己的统一获取的方式。另外显示时也需要分页显示。所以在自己的项目里,可写这两个方法:
public interface OperLogService extends ILogService{ /** * 保存日志 * @param tableName 表名 * @param viewOper 操作名 * @param extLog 附加信息 */ public void saveLog(String tableName,String viewOper,Map<String, Object> extLog); /** * 分页查询日志 * @param tableName 表名 * @param param 查询参数 * @param beanCls 返回类型 * @param pageSize 页号 * @param pageNum 每页行数 * @return */ public <t> List<t> queryPageLog(String tableName, Map<String, Object> param, Class<t> beanCls,Integer pageSize,Integer pageNum); }
3.数据表的创建。
表名需自定义,上面的方法参数也有这个表名,另外自定义的参数就写入Map参数.共用的字段,创建方法如下:
CREATE TABLE `t_log` ( `id` int(11) NOT NULL AUTO_INCREMENT, `log_time` datetime DEFAULT NULL COMMENT '记录时间', `user_id` int(11) DEFAULT NULL COMMENT '用户id', `user_name` varchar(45) DEFAULT NULL COMMENT '用户名称', `method_name` varchar(512) DEFAULT NULL COMMENT '源码方法名', `view_oper` varchar(128) DEFAULT NULL COMMENT '显示操作名', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8
另外说明一点,上面把Map转为Bean的规则是把字段名为aa_bb的转为aaBb这样的驼峰命名法,不是这个规则不能转换哦。
Quik Start
1.执行上面的sql
2.pom.xml增加以下配置
<dependency> <groupid>net.highersoft</groupid> <artifactid>operlog</artifactid> <version>1.1.3</version> </dependency>
3.mybatis配置中添加本组件的类,如下:
<bean id="mybatisSqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource"/> <property name="mapperLocations"> <list> <value>classpath*:sql/**/*.xml</value> <!-- highersoft业务日志组件sql文件 --> <value>classpath*:mapper/LogMapper.xml</value> </list> </property> </bean> <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <!-- highersoft业务日志组件Mapper类文件--> <property name="basePackage" value="com.xx.**.mapper,net.highersoft.operlog.mapper"/> <property name="sqlSessionFactoryBeanName" value="mybatisSqlSessionFactory"></property> </bean> <!--highersoft业务日志组件Service类文件--> <context:component-scan base-package="com.xx,net.highersoft.operlog"> </context:component-scan>4.在代码中需要记录日志的地方添加代码,如下:
@Autowired private LogService logService; logService.saveLog("t_log", "查询Match", 1l, "管理员", null);
相关阅读
评论:
↓ 广告开始-头部带绿为生活 ↓
↑ 广告结束-尾部支持多点击 ↑