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)) }) List findAll(); /** *保存用户 *@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}%'") List findByUserName(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(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。