List userIncludeOrder();
TUser findUserById(Integer id);
List findAll();
void deleteById(Integer id);
}
UserMapper.xml
SELECT * from t_user
SELECt * from t_order where uid=#{id}
SELECt * from t_user
SELECt * FROM t_user where id=#{id}
SELECt * from t_user
DELETe from t_user WHERe id=#{id}
pom.xml
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”> 4.0.0 groupId dome02 1.0-SNAPSHOT org.mybatis mybatis 3.4.6 mysql mysql-connector-java 5.1.47 junit junit 4.12 log4j log4j 1.2.14 sqlMapConfig.xml log4j.properties log4j.rootLogger=DEBUG, stdout log4j.logger.org.mybatis.example.BlogMapper=TRACE log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n TOrder.java package com.xbj.po; import java.io.Serializable; import java.util.List; public class TUser implements Serializable { private int id; private String username; private String password; private Integer age; private List tOrders; public List gettOrders() { return tOrders; } public void settOrders(List tOrders) { this.tOrders = tOrders; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } @Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; TUser tUser = (TUser) o; if (id != tUser.id) return false; if (username != null ? !username.equals(tUser.username) : tUser.username != null) return false; if (password != null ? !password.equals(tUser.password) : tUser.password != null) return false; if (age != null ? !age.equals(tUser.age) : tUser.age != null) return false; return true; } @Override public int hashCode() { int result = id; result = 31 * result + (username != null ? username.hashCode() : 0); result = 31 * result + (password != null ? password.hashCode() : 0); result = 31 * result + (age != null ? age.hashCode() : 0); return result; } @Override public String toString() { return “TUser{” + “id=” + id + “, username=’” + username + ‘’’ + “, password=’” + password + ‘’’ + “, age=” + age + ‘}’; } } TUser.java package com.xbj.po; import java.io.Serializable; import java.util.List; public class TUser implements Serializable { private int id; private String username; private String password; private Integer age; private List tOrders; public List gettOrders() { return tOrders; } public void settOrders(List tOrders) { this.tOrders = tOrders; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } @Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; TUser tUser = (TUser) o; if (id != tUser.id) return false; if (username != null ? !username.equals(tUser.username) : tUser.username != null) return false; if (password != null ? !password.equals(tUser.password) : tUser.password != null) return false; if (age != null ? !age.equals(tUser.age) : tUser.age != null) return false; return true; } @Override public int hashCode() { int result = id; result = 31 * result + (username != null ? username.hashCode() : 0); result = 31 * result + (password != null ? password.hashCode() : 0); result = 31 * result + (age != null ? age.hashCode() : 0); return result; } @Override public String toString() { return “TUser{” + “id=” + id + “, username=’” + username + ‘’’ + “, password=’” + password + ‘’’ + “, age=” + age + ‘}’; } } test.java import org.apache.ibatis.io.Resources; import org.apache.ibatis.session.SqlSessionFactoryBuilder; import org.junit.Before; import org.junit.Test; import com.xbj.mapper.UserMapper; import com.xbj.po.TUser; import java.io.IOException; import java.io.InputStream; import java.util.List; public class test { private UserMapper userMapper; @Before public void init() throws IOException { InputStream is= Resources.getResourceAsStream(“sqlMapConfig.xml”); userMapper=new SqlSessionFactoryBuilder().build(is).openSession(true).getMapper(UserMapper.class); } //测试延迟加载 @Test public void t1(){ List infos=userMapper.userIncludeOrder(); System.out.println(infos); } //测试一级缓存 @Test public void t2(){ TUser user1=userMapper.findUserById(1); TUser user2=userMapper.findUserById(1); } /在进行增、改、删操作的时候会清空缓存/ @Test public void t3(){ userMapper.findAll(); userMapper.deleteById(4); userMapper.findAll(); } } Test02.java import com.xbj.mapper.UserMapper; import com.xbj.po.TUser; import org.apache.ibatis.io.Resources; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder; import org.junit.Before; import org.junit.Test; import java.io.IOException; import java.io.InputStream; public class Test02 { private SqlSessionFactory factory; private UserMapper userMapper; private UserMapper userMapper2; @Before public void init() throws IOException { InputStream is= Resources.getResourceAsStream(“sqlMapConfig.xml”); factory=new SqlSessionFactoryBuilder().build(is); userMapper=factory.openSession(true).getMapper(UserMapper.class); userMapper2=factory.openSession(true).getMapper(UserMapper.class); } /测试在不同的mapper会话中,是访问不同的缓存区/ @Test public void t1(){ TUser user1=userMapper.findUserById(1); TUser user2=userMapper2.findUserById(1); } /在进行增、改、删操作的时候会清空缓存/ @Test public void t2(){ userMapper.findAll(); userMapper.deleteById(4); userMapper.findAll(); } /测试二级缓存的时候,需要将第一个查询操作先关闭,否则程序不会进入缓存里面查找数据/ @Test public void t3(){ SqlSession sqlSession1=factory.openSession(true); SqlSession sqlSession2=factory.openSession(true); sqlSession1.selectOne(“findUserById”,1); sqlSession1.close(); //第一个人 调用后 会话结束 写入缓存 sqlSession2.selectOne(“findUserById”,1); } } sql.sql SET FOREIGN_KEY_CHECKS=0; – Table structure for t_item DROP TABLE IF EXISTS t_item; CREATE TABLE t_item (



