# Set root category priority to INFO and its only appender to CONSOLE.
#log4j.rootCategory=INFO, CONSOLE debug info warn error fatal
log4j.rootCategory=debug, CONSOLE, LOGFILE
# Set the enterprise logger category to FATAL and its only appender to CONSOLE.
log4j.logger.org.apache.axis.enterprise=FATAL, CONSOLE
# CONSOLE is set to be a ConsoleAppender using a PatternLayout.
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=%d{ISO8601} %-6r [%15.15t] %-5p %30.30c %x - %m\n
# LOGFILE is set to be a File appender using a PatternLayout.
log4j.appender.LOGFILE=org.apache.log4j.FileAppender
log4j.appender.LOGFILE.File=d:\axis.log
log4j.appender.LOGFILE.Append=true
log4j.appender.LOGFILE.layout=org.apache.log4j.PatternLayout
log4j.appender.LOGFILE.layout.ConversionPattern=%d{ISO8601} %-6r [%15.15t] %-5p %30.30c %x - %m\n
实例User
public class User implements Serializable {
private Integer id;
private String username;
private Date birthday;
private char sex;
private String address;
public User() {
}
public User(Integer id, String username, Date birthday, char sex, String address) {
this.id = id;
this.username = username;
this.birthday = birthday;
this.sex = sex;
this.address = address;
}
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 Date getBirthday() {
return birthday;
}
public void setBirthday(Date birthday) {
this.birthday = birthday;
}
public char getSex() {
return sex;
}
public void setSex(char sex) {
this.sex = sex;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
@Override
public String toString() {
return "User{" +
"id=" + id +
", username='" + username + '\'' +
", birthday=" + birthday +
", sex=" + sex +
", address='" + address + '\'' +
'}';
}
}
dao层UserDao
public interface UserDao {
/**
* 查询所有用户信息
* @return
*/
List<User> findAll();
/**
* 根据id查询用户信息
* @param id
* @return
*/
User findById(Integer id);
/**
* 修改用户
* @param user
*/
void update(User user);
}
dao层UserDao对应UserDao.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="cn.yh.dao.UserDao">
<!-- 开启二级缓存 -->
<cache/>
<!-- 查询所有用户信息 -->
<select id="findAll" resultType="User">
select * from user ;
</select>
<!-- 根据id查询用户信息 -->
<select id="findById" resultType="User" parameterType="int" useCache="true">
select * from user where id=#{id};
</select>
<!-- 修改用户信息 -->
<update id="update" parameterType="User">
update user set username=#{username},birthday=#{birthday},sex=#{sex},address=#{address}
where id=#{id}
</update>
</mapper>
测试类UserTest
public class UserTest {
private InputStream resourceAsStream;
private SqlSessionFactory build;
@Before
public void init() throws IOException {
resourceAsStream = Resources.getResourceAsStream("mybatis-config.xml");
SqlSessionFactoryBuilder sqlSessionFactory = new SqlSessionFactoryBuilder();
build = sqlSessionFactory.build(resourceAsStream);
}
@After
public void destory(){
if (resourceAsStream!=null){
try {
resourceAsStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
@Test
public void testFindAll(){
SqlSession sqlSession = build.openSession();
UserDao mapper = sqlSession.getMapper(UserDao.class);
User byId = mapper.findById(43);
System.out.println(byId);
// 清空一级缓存
sqlSession.clearCache();
SqlSession sqlSession1 = build.openSession();
UserDao mapper1 = sqlSession.getMapper(UserDao.class);
User byId1 = mapper1.findById(43);
System.out.println(byId1);
System.out.println(byId==byId1);
}
}