public class Employee {
private Integer id;
private String last_name;
private String email;
private String gender;
@Override
public String toString ( ) {
return "Employee [id=" + id + ", last_name=" + last_name + ", email=" + email + ", gender=" + gender + "]" ;
}
public Integer getId ( ) {
return id;
}
public void setId ( Integer id) {
this . id = id;
}
public String getLast_name ( ) {
return last_name;
}
public void setLast_name ( String last_name) {
this . last_name = last_name;
}
public String getEmail ( ) {
return email;
}
public void setEmail ( String email) {
this . email = email;
}
public String getGender ( ) {
return gender;
}
public void setGender ( String gender) {
this . gender = gender;
}
}
public interface EmployeeMapper {
public Employee getEmpById ( Integer id) ;
}
@Intercepts ( {
@Signature ( type= StatementHandler. class ,
method= "parameterize" ,
args= java. sql. Statement. class )
} )
public class MyFirstPlugin implements Interceptor{
@Override
public Object intercept ( Invocation invocation) throws Throwable {
System. out. println ( "测试MyFirstPlugin的...intercept(),要拦截的目标方法为:" + invocation. getMethod ( ) ) ;
Object proceed = invocation. proceed ( ) ;
return proceed;
}
@Override
public Object plugin ( Object target) {
System. out. println ( "测试MyFirstPlugin的...plugin():mybatis将要包装的对象是:" + target) ;
Object wrap = Plugin. wrap ( target, this ) ;
return wrap;
}
@Override
public void setProperties ( Properties properties) {
System. out. println ( "测试MyFirstPlugin的...setProperties():拿到插件配置的信息为:" + properties) ;
}
}
public class MyBatisTest {
public SqlSessionFactory getSqlSessionFactory ( ) throws IOException {
String resource = "mybatis-config.xml" ;
InputStream inputStream = Resources. getResourceAsStream ( resource) ;
return new SqlSessionFactoryBuilder ( ) . build ( inputStream) ;
}
@Test
public void testPlugin ( ) throws IOException {
SqlSessionFactory sqlSessionFactory = getSqlSessionFactory ( ) ;
SqlSession openSession = sqlSessionFactory. openSession ( ) ;
try {
EmployeeMapper mapper = openSession. getMapper ( EmployeeMapper. class ) ;
Employee employee = mapper. getEmpById ( 3 ) ;
System. out. println ( employee) ;
} finally {
openSession. close ( ) ;
}
}
}
< ? 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 = "com.atguigu.mybatis.dao.EmployeeMapper" >
< select id= "getEmpById" resultType= "com.atguigu.mybatis.bean.Employee" >
select id, last_name, email, gender
from tbl_employee
where id = #{ id}
< / select>
< / mapper>
< ? xml version= "1.0" encoding= "UTF-8" ? >
< ! DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd" >
< configuration>
< ! -- plugins:注册插件 -- >
< plugins>
< plugin interceptor= "com.atguigu.mybatis.dao.MyFirstPlugin" >
< property name= "username" value= "root" / >
< property name= "password" value= "root" / >
< / plugin>
< / plugins>
< environments default = "development" >
< environment id= "development" >
< transactionManager type= "JDBC" / >
< dataSource type= "POOLED" >
< property name= "driver" value= "com.mysql.jdbc.Driver" / >
< property name= "url" value= "jdbc:mysql://localhost:3306/mybatis" / >
< property name= "username" value= "root" / >
< property name= "password" value= "root" / >
< / dataSource>
< / environment>
< / environments>
< mappers>
< mapper resource= "EmployeeMapper.xml" / >
< / mappers>
< / configuration>