Java-bug点滴记录(九)

1.全局配置文件头少写了字母等报错mybatis_config.xml

<?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">

<!-- mybatis的全局配置文件 -->

2.Foreach批量查询:id为1,2,3的数据

<select id="queryUsers2" parameterType="Integer" resultType="User">
 SELECT id,NAME,gender,regist_time as registTime
 FROM t_user
 where id in
 <foreach collection="list" open="(" separator="," close=")" item="id" index="ind">
     #{id}
 </foreach>
</select>
List<Integer> list = new ArrayList<>();
     list.add(1);
     list.add(2);
     list.add(3);
     List<User> users = userDAO.queryUsers2(list);
     for (User user : users) {
         System.out.println("user = " + user);
     }

List<Integer> add知识点出错,list.add(1);是向list集合中增加数据Integer泛型的数据。

System.out.println("list = " + list);
打印结果为:list = [1, 2, 3]

3.Foreach批量增加:

ArrayList<User> list = new ArrayList<>();
     User user = new User(null,"王老六",true,new Date());
     for (int i = 0; i < 10000; i++) {
         list.add(user);
         System.out.println(list.size());
     }
     userDAO.queryUsers3(list);
     sqlSession.commit();
     sqlSession.close();
<select id="queryUsers3" parameterType="java.util.List">
     insert into t_user (name,gender,regist_time) values
     <foreach collection="list" item="user" index="ind" close="" open="" separator=",">
         (#{user.name},#{user.gender},#{user.registTime})
     </foreach>
 </select>

在.xml文件中没有在表名后添加(name,gender,regist_time)

在foreach中没有使用#{user.属性名}中的"user."

4.二级缓存

1.开启:默认开启,但需要制定哪个DAO的Mapper需要使用二级缓存,定义一个 <cache>即可 .xml中<cache></cache>
2.提交第一个查询sql语句,使得结果放入二级缓存中:使用HashMap存储
List<User> query = userDAO.query();
  for (User user : query) {
      System.out.println("user = " + user);
  }
  sqlSession.commit();
  sqlSession.close();
  List<User> query1 = userDAO.query();
  for (User user : query1) {
      System.out.println("user = " + user);
  }

3.注意:二级缓存必须在`sqlSession.commit()` 或 `sqlSession.close()` 之后才生效
4.清除:sqlSession.rollback();//则查询的结果不会进入二级缓存
5.HashMap放入缓存:

(1)二级缓存存储位置:SqlSessionFactory;

同一个SqlSessionFactory创建的所有SQLSession发起的查询,查询结果都会缓存
在SQLSessionFactory内部;
有效范围:同一个SqlSessionFactory 

(2)二级缓存的存储的位置:

(3)二级缓存的存储的位置:

5.实现实体类序列化

6.缓存清除的时候

二级缓存是以 namespace 为单位组织的,当某个 namespace 中发生数据改动,则 namespace 中缓存的所有数据会被mybatis清除。

注意:
在多个二级缓存时,例如sql语句,角色,权限中时,使用的是同一个二级缓存区redis,因为是同一个项目,所以要放到一个缓存区,否则,权限设置不可使用!

7.Start tag has wrong closing tag 开始标记有错的结束标记

错误点在于复制依赖时,结束标记多了.有两个结束标记

8.在web.xml配置文件中:

Invalid content was found starting with element 'init-param'. One of '{"http://xmlns.jcp.org/xml/ns/javaee":enabled, "http://xmlns.jcp.org/xml/ns/javaee":async-supported, "http://xmlns.jcp.org/xml/ns/javaee":run-as, "http://xmlns.jcp.org/xml/ns/javaee":security-role-ref, "http://xmlns.jcp.org/xml/ns/javaee":multipart-config}' is expected.

错误原因是:<load-on-startup>在tomcat开启时立即加载的标签位置放到了<init-param>标签的前面导致顺序出错的bug

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值