Mybatis如何通过注解开启使用二级缓存
这篇文章主要介绍了Mybatis基于注解开启使用二级缓存,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
本文主要是补充一下Mybatis中基于注解的二级缓存的开启使用方法。
1.在Mybatis的配置文件中开启二级缓存
开启缓存
2.领域类以及Dao
publicclassUserimplementsSerializable{
privateIntegeruserId;
privateStringuserName;
privateDateuserBirthday;
privateStringuserSex;
privateStringuserAddress;
privateListaccounts;
省略get和set方法......
}
importcom.example.domain.User;
importorg.apache.ibatis.annotations.*;
importorg.apache.ibatis.mapping.FetchType;
importjava.util.List;
@CacheNamespace(blocking=true)
publicinterfaceUserDao{
/**
*查找所有用户
*@return
*/
@Select("select*fromUser")
@Results(id="userMap",value={@Result(id=true,column="id",property="userId"),
@Result(column="username",property="userName"),
@Result(column="birthday",property="userBirthday"),
@Result(column="sex",property="userSex"),
@Result(column="address",property="userAddress"),
@Result(column="id",property="accounts",many=@Many(select="com.example.dao.AccountDao.findAccountByUid",fetchType=FetchType.LAZY))
})
ListfindAll();
/**
*保存用户
*@paramuser
*/
@Insert("insertintouser(username,birthday,sex,address)values(#{username},#{birthday},#{sex},#{address})")
voidsaveUser(Useruser);
/**
*更新用户
*@paramuser
*/
@Update("updateusersetusername=#{username},birthday=#{birthday},sex=#{sex},address=#{address}whereid=#{id}")
voidupdateUser(Useruser);
/**
*删除用户
*@paramid
*/
@Delete("deletefromuserwhereid=#{id}")
voiddeleteUser(Integerid);
/**
*查询用户根据ID
*@paramid
*@return
*/
@Select("select*fromuserwhereid=#{id}")
@ResultMap(value={"userMap"})
UserfindById(Integerid);
/**
*根据用户名称查询用户
*@paramname
*@return
*/
//@Select("select*fromuserwhereusernamelike#{name}")
@Select("select*fromuserwhereusernamelike'%${value}%'")
ListfindByUserName(Stringname);
/**
*查询用户数量
*@return
*/
@Select("selectcount(*)fromuser")
intfindTotalUser();
}
3.在对应的Dao类上面增加注释以开启二级缓存
@CacheNamespace(blocking=true)
4.测试
publicclassUserCacheTest{
privateInputStreamin;
privateSqlSessionFactorysqlSessionFactory;
@Before
publicvoidinit()throwsException{
in=Resources.getResourceAsStream("SqlMapConfig.xml");
sqlSessionFactory=newSqlSessionFactoryBuilder().build(in);
}
@After
publicvoiddestory()throwsException{
in.close();
}
@Test
publicvoidtestFindById(){
//第一查询
SqlSessionsqlSession1=sqlSessionFactory.openSession();
UserDaouserDao1=sqlSession1.getMapper(UserDao.class);
Useruser1=userDao1.findById(41);
System.out.println(user1);
//关闭一级缓存
sqlSession1.close();
//第二次查询
SqlSessionsqlSession2=sqlSessionFactory.openSession();
UserDaouserDao2=sqlSession2.getMapper(UserDao.class);
Useruser2=userDao2.findById(41);
System.out.println(user2);
sqlSession1.close();
System.out.println(user1==user2);
}
}
(1)未开启二级缓存时
(2)开启二级缓存时
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。