随笔分类 - mybatis
摘要:缓存作用 当对某些数据的查询请求频繁,且数据不经常修改时,使用缓存机制可以提高查询效率 数据库发生commit操作时,缓存清空,防止一直查询缓存中的旧数据 mybatis缓存执行流程 mybatis一级和二级缓存 一级缓存作用域:sqlSession对象 二级缓存作用域:Mapper.xml文件 查
阅读全文
摘要:业务背景 根据订单id查询订单的信息,以及该订单所属的客户的基本信息(不包括该客户自己的订单信息) 两张数据表 客户表 订单表 实体类 客户实体类:Customer private Integer id; private String name; private Integer age; //封装客
阅读全文
摘要:业务背景 根据客户id查询客户基本信息,以及客户存在的订单信息 两张数据表 客户表 订单表 实体类 客户实体类:Customer private Integer id; private String name; private Integer age; //封装存在的订单信息 List<Order>
阅读全文
摘要:当数据表的字段名和实体类的成员变量名不同时 //Book实体类 private Integer id; private String name; //BookMapper.java接口 List<Book> getAllBooks(); <!-- BookMapper.xml --> <!-- //
阅读全文
摘要:1. 通过指定参数位置获取 作用 如果入参是多个且实体类无法封装所有的入参,可以通过指定参数位置进行传参,方便对多个参数进行获取 用法 接口 //指定参数位置 List<User> getByBirthday(Date start, Date end); sql标签 <!-- //指定参数位置 Li
阅读全文
摘要:< foreach >标签 作用 用来进行循环遍历,完成循环条件的查询,批量删除,批量增加,批量更新 用法 包括循环查询 + 批量删除 + 批量增加 + 批量更新的用法 UsersMapper.java package com.example.mapper; import com.example.p
阅读全文
摘要:作用 可以定义代码片段 可以进行逻辑判断 可以进行循环处理(批量处理),使条件判断更为简单 使用方式 通过mybatis中与动态sql有关的标签来实现 < sql >标签 + < include >标签 作用 < sql >标签:可以用来定义代码片段 < include >标签:对定义的代码片段进行
阅读全文
摘要:返回主键值的insert操作 应用背景 图示说明 在上述业务背景下,涉及两张数据表的关联操作:用户表 + 用户积分表 传统操作:在对用户表执行完插入语句后,再次查询该用户的uid,将该uid作为外键,最后插入积分数据到用户积分表 数据库操作次数:3次 优化操作:在对用户表执行完插入语句后返回该用户的
阅读全文
摘要:"#{}"占位符 作用 传参大部分使用"#{}",在数据库底层使用的是:PreparedStatement预编译处理对象 数据库底层被解析为"?",用来传值,是安全的数据库访问,可以防止sql注入 通过在SqlMapConfig.xml添加日志输出配置,在后文测试输出的结果中可以验证 <?xml v
阅读全文
摘要:接口文件和对应的mapper.xml文件 UsersMapper.java接口文件 package com.example.mapper; import com.example.pojo.User; import java.util.List; /** * 数据访问层的接口,定义对数据库完成的CRU
阅读全文
摘要:mybatis中动态代理存在的意义 图示 图示分析 分层说明:界面层为第一层,业务逻辑层(接口层 + 实现层)为第二层,数据访问层(接口层 + 实现层)为第三层 业务逻辑层和数据访问层:分别分两层来开发,是开发中的规范 接口层:为了面向接口编程,使开发更加灵活 实现层:落实具体功能,完成具体的实现
阅读全文
摘要:MyBatis对象分析 测试代码示例 package com.example.test; import com.example.pojo.Student; import org.apache.ibatis.io.Resources; import org.apache.ibatis.session.
阅读全文
摘要:创建实体类Student,用来封装数据 对照数据表构建实体类 package com.example.pojo; public class Student { private Integer id; private String name; private String email; private
阅读全文
摘要:三层架构 项目开发时,遵循的一种设计模式,分为三层 界面层:用来接收客户端输入的数据,调用业务逻辑层进行功能处理,返回结果给客户端 过去的servlet就完成了界面层的功能(但是他做的更多) 业务逻辑层:用来进行整个项目的业务逻辑处理,向上为界面层提供处理结果,向下问数据访问层要数据 数据访问层:专
阅读全文
摘要:背景 有时目标对象不可直接访问,只能通过代理对象访问 图示: 示例1: 房东 > 目标对象 房屋中介 > 代理对象 你,我 > 客户端对象 示例2: 运营商(电信,移动,联通) > 目标对象 第三方公司 > 代理对象 开发的应用程序需要发送短信的功能(或者需要支付功能) > 客户端对象 代理模式的作
阅读全文