/spring-ioc-v4/src/main/java/entity/SysLog.java
package entity;
import java.io.Serializable;
import java.util.Date;
/**
* POJO:日志实体对象 封装系统的日志信息 实现序列化接口,便于网络传输
*/
public class SysLog implements Serializable {
private static final long serialVersionUID = -496934815638734874L;
private Integer id;
/**
* 操作用户
*/
private String username;
/**
* 执行的操作
*/
private String operation;
/**
* 执行这个操作的方法
*/
private String method;
/**
* 调用方法传入的参数
*/
private String params;
/**
* 方法的执行时间
*/
private Long time;
/**
* 用户的ip地址
*/
private String ip;
/**
* 这个日志的创建时间
*/
private Date createdTime;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getOperation() {
return operation;
}
public void setOperation(String operation) {
this.operation = operation;
}
public String getMethod() {
return method;
}
public void setMethod(String method) {
this.method = method;
}
public String getParams() {
return params;
}
public void setParams(String params) {
this.params = params;
}
public Long getTime() {
return time;
}
public void setTime(Long time) {
this.time = time;
}
public String getIp() {
return ip;
}
public void setIp(String ip) {
this.ip = ip;
}
public Date getCreatedTime() {
return createdTime;
}
public void setCreatedTime(Date createdTime) {
this.createdTime = createdTime;
}
@Override
public String toString() {
return "SysLog [id=" + id + ", username=" + username + ", operation=" + operation + ", method=" + method
+ ", params=" + params + ", time=" + time + ", ip=" + ip + ", createdTime=" + createdTime + "]";
}
}
/spring-ioc-v4/src/main/java/dao/SysLogDao.java
package dao;
import java.util.List;
import org.apache.ibatis.annotations.Param;
import entity.SysLog;
/**
* DAO:数据访问对象
* 定义访问数据库的相关方法
*/
public interface SysLogDao {
/**
* 按条件分页查询指定日志信息
* @param username 查询条件(哪个用户的操作日志)
* @param startIndex 当前查询的起始位置
* @param pageSize 当前页面大小(每页最多显示多少条记录)
* @return
* 说明
* @param 注解为mybatis中的一个修饰参数的注解
* 当dao方法中的参数多于一个时,建议使用此注解进行修饰,
* 在映射文件中就可以使用#{username}等方式获取参数值
* 假如没有使用这个注解修饰,在映射文件中获取参数时
* 就可以使用#{0},#{1},#{2}或者
* #{param1},#{param2},#{param3}
* 的方式进行获取
*/
List<SysLog>findPageObjects(@Param("username")String username,@Param("startIndex")Integer startIndex,@Param("pageSize")Integer pageSize);
}
/spring-ioc-v4/src/test/java/test/TestBase.java
package test;
import org.junit.After;
import org.junit.Before;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class TestBase {
protected ClassPathXmlApplicationContext ctx;
@Before
public void init(){
ctx=new ClassPathXmlApplicationContext("spring-configs.xml");
}
@After
public void close(){
ctx.close();
}
}
/spring-ioc-v4/src/test/java/test/TestDaoSys.java
package test;
import java.util.List;
import org.junit.Assert;
import org.junit.Test;
import dao.SysLogDao;
import entity.SysLog;
public class TestDaoSys extends TestBase {
@Test
public void testFindPageObjects(){
/**
* 获取dao对象
*/
SysLogDao dao = ctx.getBean("sysLogDao",SysLogDao.class);
/**
* 执行dao对象方法
*/
List<SysLog> list = dao.findPageObjects("admin",0,5);
Assert.assertNotEquals(null, list);
for (SysLog sysLog : list) {
System.out.println(sysLog);
}
}
}
/spring-ioc-v4/src/main/resources/mapper/sys/SysLogMapper.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="dao.SysLogDao">
<select id="findPageObjects" resultType="entity.SysLog">
select * from sys_logs
where username like concat('%',#{username},'%')
order by createdTime desc
limit #{startIndex},#{pageSize}
</select>
</mapper>
/spring-ioc-v4/src/main/resources/config.properties
jdbcDriver=com.mysql.jdbc.Driver
jdbcUrl=jdbc:mysql:///jtsys?useUnicode=true&characterEncoding=utf-8
jdbcUsername=root
jdbcPassword=123456
MapperScanner
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="BasePackage" value="**.dao"/>
<property name="SqlSessionFactoryBeanName" value="sqlSessionFactory" />
</bean>
/spring-ioc-v4/src/main/resources/spring-configs.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans
xmlns="http://www.springframework.org/schema/beans"
xmlns:p="http://www.springframework.org/schema/p" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:aop="http://www.springframework.org/schema/aop" xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:util="http://www.springframework.org/schema/util" xmlns:jpa="http://www.springframework.org/schema/data/jpa"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.3.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-4.3.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-4.3.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-4.3.xsd
http://www.springframework.org/schema/util
http://www.springframework.org/schema/util/spring-util-4.3.xsd
http://www.springframework.org/schema/data/jpa
http://www.springframework.org/schema/data/jpa/spring-jpa-1.3.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-4.3.xsd">
<util:properties id="cfg" location="classpath:config.properties"></util:properties>
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"
init-method="init" destroy-method="close" lazy-init="false">
<property name="driverClassName" value="#{cfg.jdbcDriver}"></property>
<property name="url" value="#{cfg.jdbcUrl}"></property>
<property name="username" value="#{cfg.jdbcUsername}"></property>
<property name="password" value="#{cfg.jdbcPassword}"></property>
<!-- 配置获取连接等待超时的时间 -->
<property name="maxWait" value="1800" />
<property name="MaxActive" value="10" />
</bean>
<!-- 配置dao接口扫描。底层会基于接口创建这个接口的代理对象,这个代理对象的内部会通过mybatis访问数据库 -->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="BasePackage" value="**.dao"/>
<!--下面这行可以不写,但是有多个 sqlSessionFactory会报错 -->
<property name="SqlSessionFactoryBeanName" value="sqlSessionFactory" />
</bean>
<!--整合SqlSessionFactoryBean对象(通过此对象创建SqlSession) -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean" lazy-init="true">
<property name="dataSource" ref="dataSource"></property>
<property name="mapperLocations" value="classpath:mapper/sys/*Mapper.xml"/>
</bean>
</beans>
pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.gq</groupId>
<artifactId>spring-ioc-v4</artifactId>
<version>0.0.1-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>4.3.9.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>4.3.9.RELEASE</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>1.3.1</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.40</version>
</dependency>
<!-- 整合junit -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
<!-- 整合mybatis依赖 -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.2.8</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.0.23</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.5.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
</plugins>
</build>
</project>