安平谁做网站好,专业响应式网站制作,手机版企业网站,新网站百度搜不到1. 动态 sqlmybatis select 元素总结#xff1a;一般下执行完commit操作都需要刷新缓存#xff0c;flushCachetrue表示刷新缓存#xff0c;这样可以避免数据库脏读。注意#xff1a;(1)当为select语句时#xff1a;flushCache默认为false#xff0c;表示任何时候语句被调…1. 动态 sqlmybatis select 元素总结一般下执行完commit操作都需要刷新缓存flushCachetrue表示刷新缓存这样可以避免数据库脏读。注意(1)当为select语句时flushCache默认为false表示任何时候语句被调用都不会去清空本地缓存和二级缓存。useCache默认为true表示会将本条语句的结果进行二级缓存。(2)当为insert、update、delete语句时flushCache默认为true表示任何时候语句被调用都会导致本地缓存和二级缓存被清空。useCache属性在该情况下没有。当为select语句的时候如果没有去配置flushCache、useCache那么默认是启用缓存的所以如果有必要那么就需要人工修改配置3.对应的pojo实现序列化(implements Serializable)4.mybatis自身实现二级缓存弊端在于只能作用于数据库此时需要我们引用第三方库作为缓存库这样缓存更具有扩展性。。。(待mybatis中还可以配置userCache和flushCache等配置项userCache是用来设置是否禁用二级缓存的useCachefalse禁用当前select语句的二级缓存即每次查询都会发出sql去查询默认情况是true即该sql使用二级缓存。flushCache”true”默认情况下为true即刷新缓存如果改成false则不会刷新。使用缓存时如果手动修改数据库表中的查询数据会出现脏读。注意开启缓存的弊端是数据没有实时性当数据库中的数据一旦修改查询的数据还是缓存中的数据没有实时性对于某些需要实时性显示数据的接口我们可以设置useCachefalse,设置该属性后该接口每次查询出来都是去执行sql查询出实时性数据。https://mybatis.org/mybatis-3/zh/sqlmap-xml.html官方文档赏析https://mybatis.org/mybatis-3/zh/java-api.html如何获取最后一次插入的 IDuseGenerateKeys 只支持 mysql sql server 这种如果 用 mysql order 要设置 为 after 而 Oracle 则是 设置 为 before 因为 Oracle 是先拿到 id 再插入到数据 mysql 则是插入后 自动生成的。mybatis 动态 sql 用法如果所有 的 if 都不成功 不会加 where如果只有一个 if 成功就删除 where 后面的 那一个 andmybatis 动态 sql 部分更新但是 以上写法有问题 最后一个 if 没有成功前面 if 成功了 会 加个 逗号于是就出问题了set 标签 会把最后一个 if 的逗号 去掉这样 sql 更新就不会出问题了。。。上面 的 where set 分别解决 查询 和 更新问题 还有一个 插入问题也是用来解决多一个逗号的标签triminsert 只能用 trim 实现动态 sqlforeach 标签 用于解决 数组参数遍历问题mybatis 使用批量操作的实现1. 使用 foreach 标签 批量执行2. jdbc标准 jdbc本来就支持批量操作 【mybatis 也可以使用 jdbc的批量操作】之后 executeBatch() 返回数组即 每条 sql 影响的 行数Choose 和 when 的基本使用这个 是 最重要的 ddd ,最后 最重要的为什么要配合 choose when 来使用不知道 有没有经历过这种处境1. 一张表有多个 属性可以推导出 表中的某一行比如1. 我使用自增主键 可以推到 那一行的数据2. 比如我可以使用 学校 Id 个人学号 ID 推导出 那一行数据3. 我可以使用 微信的 unionId 唯一确定 表中的那个数据4. 我可以使用 微信 的 openID 唯一确定表中的那一行数据5. 我还可以使用 身份证 唯一确定表中的那行数据6. 我可以使用 email 账号 password 的方式 唯一确定表中的那行数据现在问题来了 这么多属性都可以唯一确定 表中的那行数据我需不需要 把 6种场景 都写一条 sql ,还是 使用动态 sql 的方法答案是配合 where choose 来实现多条件的选择类似 switch 语句这里就有个 优先级别判断了比如 一张表的主键不为 null 那么 优先使用主键查询如果 unionID 不为null再使用 unionID 查询其他的也是这样