MyBatis
MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的持久层框架。
萌宅鹿同学
目前就读于江苏大学,热爱技术。
展开
-
【MyBatis笔记】0-MyBatis简介
MyBatis简介简介MyBatis 历史MyBatis特点为什么要使用 MyBatis?JDBC 缺点Hibernate 缺点MyBatis简介MyBatis 历史MyBatis 原是 apache 的一个开源项目 iBatis;2010年6月这个项目由 apache software foundation 迁移到了 google code,并且改名为MyBatis 。iBATIS 一词...原创 2019-08-29 09:15:50 · 256 阅读 · 0 评论 -
【MyBatis笔记】16-多对多关系建表
多对多关系建表多对多关系多对多关系建表原则domain多对多关系一个老师可以教多个学生,一个学生可以被多个老师教。一个学生可以选择多门课程,一门课程可以被多个学生选择。一个用户可以选择多个角色,一个角色可以被多个用户选择。多对多关系建表原则原则:创建一个中间表,中间表至少有两个字段,分别作为外键指向多对多双方的主键。实例分析:一个老师可以教多个学生,一个学生可以被多个老师教。首...原创 2019-09-02 13:07:45 · 1468 阅读 · 2 评论 -
【MyBatis笔记】10-多对一左连接查询&分步查询(查询所有订单及订单对应的客户)
左连接查询(级联查询)回顾一下:左连接查询,将左边表(order)里的全部内容查出,右边表(customer)查满足条件的。SELECT * FROM `order` AS o LEFT JOIN `customer` AS c on o.cust_id = c.cust_id;那么在 MyBatis 中如何查询呢?首先我们已经将 domain 类与数据库属性对应,并且创建好了 Map...原创 2019-09-01 23:29:59 · 938 阅读 · 0 评论 -
【MyBatis笔记】13-一对多左连接查询&分步查询(查询所有客户及客户对应的订单)
一对多左连接查询场景:我们想要查询出所有的客户,并且把每个客户对应的订单也查出来。这时候可以使用左连接查询。那么如何在 MyBatis 中实现左连接查询呢?给客户的 domain 增添一个字段来表示对应的订单:private List<Order> orders = new ArrayList<>();@Setter@Getter //使用注解生成 get 与...原创 2019-09-01 20:59:13 · 1450 阅读 · 0 评论 -
【MyBatis笔记】12-多对一添加操作(添加新客户及对应的新订单)
多对一添加操作场景:现在想要添加一个新客户对应一个新订单,那么要怎么来添加呢?分析:由于添加订单时,客户对订单是一对多的关系,所以添加订单的时候必须要指明一位客户。要同时添加新客户以及一个新订单,并且两者是对应关系,那么应当先将客户添加进来,再添加订单,同时这个订单的外键(cust_id)指向了刚刚添加的客户的主键(cust_id)。CustomerMapper 接口中添加一个方法:/*...原创 2019-09-01 19:58:44 · 542 阅读 · 0 评论 -
【MyBatis笔记】11-分步查询懒加载
分步查询——懒加载模式懒加载模式示例不使用懒加载使用懒加载aggressiveLazyLoadinglazyLoadTriggerMethods所谓懒加载,也称延时加载,是指不一下子加载完全部资源。需要用到哪些资源才去加载这些资源,用不到的资源,就不去加载他,以达到节约资源,优化的目的。分步查询中存在懒加载现象。懒加载模式示例不使用懒加载首先看一下不使用懒加载的情况下,是如何运行的。我...原创 2019-09-01 18:57:13 · 246 阅读 · 0 评论 -
【MyBatis笔记】09-一对多关系建表
多表操作表之间关系一对多关系建表原则级联查询association 分步查询表之间关系一对一关系:一夫一妻。一对多关系:一个部门有多个员工,一个员工只能属于某一个部门。一个班级有多个学生,一个学生只能属于一个班级。多对多关系:一个老师可以教多个学生,一个学生可以被多个老师教。一个学生可以选择多门课程,一门课程可以被多个学生选择。一个用户可以选择多个角色,一个角色可以被...原创 2019-09-01 13:03:11 · 643 阅读 · 2 评论 -
【MyBatis笔记】08-输出类型
输出类型输出简单类型输出 Map 类型key:列名 value:列名对应的值key:自己指定的列 value:自定义对象resultMap输出简单类型CustomerMapper.java:返回值为简单类型。public interface CustomerMapper { /*查询总数*/ public Integer getAccountCustomer();}C...原创 2019-09-01 00:50:46 · 104 阅读 · 0 评论 -
【MyBatis笔记】07-MyBatis 核心配置文件
MyBatis 核心配置文件properties 定义属性及读取属性文件settings 设置运行时行为typeAliases 类型别名定义单个别名批量定义别名typeHandlers 类型处理器Plugins(后续有文章专门介绍这个)Environments 运行环境databaseIDProvider 定义数据库厂商mappers 加载映射文件mapper resource=" "mapper...原创 2019-08-31 22:41:46 · 323 阅读 · 0 评论 -
【MyBatis笔记】06-Mapper动态代理
Mppaer 动态代理创建 Mapper 工程定义接口的要求测试类Mapper 中参数传递单个参数多个参数@param命名参数多个参数封装成 Map多个参数之 POJO之前我们一直都使用传统开发模式DAO,即定义接口,然后定义实现类。这个其实是较为繁琐的,MyBatis 中提供了 Mapper 动态代理的方法,操作起来十分简洁,只需要定义满足要求的接口,然后通过 sqlSession 获取到 M...原创 2019-08-30 20:46:31 · 851 阅读 · 0 评论 -
【MyBatis笔记】05-传统开发模式DAO
传统开发模式DAO定义接口 CustomerDao.java实现接口 CustomerDaoImpl.java测试类在传统开发模式DAO下,我们自己先定义好接口,然后再去定义实现类,在实现类中实现接口的操作。到时候只需要创建一个 dao 对象,即可调用其中的方法。定义接口 CustomerDao.java在 dao 包下,创建一个接口文件 CustomerDao.java,在其中写上数据库的...原创 2019-08-30 17:23:26 · 271 阅读 · 0 评论 -
【MyBatis笔记】04-插入操作&更新操作&删除操作
保存更新删除插入操作获取插入的最后一个id更新操作删除操作查询操作在之前的笔记中~插入操作映射文件 Customer.xml :插入数据的标签为 insert,与查询 select 区分开来。parameterType 是输入参数类型,这里指定为 Customer 对象,即需要传入一个 Customer 类型的参数。由于传入参数不是单个简单类型值,#{} 中的名字必须与类的属性对应。...原创 2019-08-30 00:50:20 · 665 阅读 · 0 评论 -
【MyBatis笔记】03-映射文件的sql语句中 #{} 和 ${} 的区别以及实现模糊查询
映射文件的sql语句中 #{} 和 ${} 区别以及实现模糊查询sql 语句中的 #{}#{} 模糊查询错误用法#{} 实现模糊查询sql 语句中的 ${}${} 实现模糊查询#{} 与 ${} 对比sql 语句中的 #{}表示一个占位符号,通过 #{} 可以实现 preparedStatement 向占位符中设置值。自动进行 java 类型和 jdbc 类型转换。可以有效防止 sql ...原创 2019-08-29 23:33:18 · 556 阅读 · 0 评论 -
【MyBatis笔记】02-MyBatis配置SQL打印
MyBatis 配置SQL打印在 SqlMappingConfig.xml 中配置以下代码:<!--配置sql打印--><settings> <setting name="logImpl" value="STDOUT_LOGGING"/></settings>运行效果:会显示 SQL 语句,查询结果,总共几条数据,最后把数据封装成...原创 2019-08-29 23:56:18 · 318 阅读 · 0 评论 -
【MyBatis笔记】01-MyBatis入门程序
MyBatis入门程序1. 下载 Mybatis 核心包2. 创建工程,引入 MyBatis 核心包及依赖包3. 创建 customer 表,建立与表对应的 domain使用 lombok,开启注解创建 Customer 类4. 创建 MyBatis 核心配置文件 SqlMappingConfig.xml5.创建与表对象的关系映射 Mapping 文件编写 sql 语句6.在核心配置文件当中引入 ...原创 2019-08-29 23:56:05 · 353 阅读 · 0 评论 -
【MyBatis笔记】17-多对多做左连接查询(查询老师,并且把关联的学生也查出来)
多对多左连接查询老师对学生是多对多的关系,把中心放在老师上,一个老师可以教多个学生,实际上老师对学生也可以理解为一对多的关系。场景:查询老师,并且把关联的学生也查出来。Teacher.java 映射文件:@Getter@Setter@ToStringpublic class Teacher { private Integer teacher_id; private Str...原创 2019-09-02 17:35:59 · 902 阅读 · 0 评论