引子:mybatis的知识回顾
mybatis是一个持久层框架,用于简化jdbc的开发,持久层指的就是持久化操作,通常就是数据访问层,用于操作数据库的。
面试题:什么是mybatis?
一、概述
MyBatis 原本是 Apache 的一个开源项目 iBatis,并且改名为 MyBatis。它主要用于简化数据库访问层的开发,让开发者能够更加方便、高效地与各种数据库进行交互操作。是一个持久层(将数据永久化),orm框架。
点击闪电可以跳过测试用例
通过#{}来选取数据,如果只有一个参数下面什么名字都可以,如果多个参数就得一一对应,除非使用@param进行参数绑定,即使使用参数绑定,但是我们通常还是使用相同名字
正文:
通过注解查询操作
通过select方法并通过sout打印出来的时候,如果数据库字段和userinfo类不匹配的时候就会null
mybatis的插件查询
mybatis很智能即使名字不一样但是如果类型对应的上的话,那就会通过类型自动匹配,没有匹配的为空
结果映射,数据库字段,和java属性不一致的时候解决方法
1.起别名
将数据库的别名和userinfo中的类对应
2.结果映射
将数据库中的字段进行重命名,这时候就可以获得字段了
但是这时候出现了一个问题就是代码如果其中一个修改,其他的很多代码也要修改,这时候我们就用到了ResultMap来寻找之前已经定义的result。
映射关系:resultmap :id的对应
3.驼峰自动转化
在数据库中命名全部小写,单词之间用_下划线来连接,蛇形表达式,java使用小驼峰
在pom文件中配置驼峰自动转化。
MybatisXml配置文件
以上的mybatis使用的是注解的方式来配置文件
最后一行的 map-underscore-to-camel-case: true为配置文件
然后在resource中创建,创建的时候,必须是Mapper.xml结尾的
在这个xml中导入
在name中表示实现哪个文件,直接从想实现的接口中寻找文件位置
使用xml配置的时候常见问题
绑定错误
1.可能是yml中配置的路径和在static中的xml文件的位置不一样
也就是如果Mapper.xml结尾的话那么在resource中就一定要以Mapper,xml结尾就连Mapper2.xml都不行
***xml配置方法时候删除操作
在xml中写入文件
***xml配置方法的时候更新操作
***xml配置方法的时候插入操作
***xml配置方法的时候查询操作
结果映射
主键可写可不写,为了提高可读性
必须要有resultType,resultType的意思是对应哪个实体类,在这里就是对应UserInfo这个实体类,就是要映射哪个类
resultmap映射
通过resultmap来映射关键字
<id是用来放置主键的
多表查询
中间省略了as实际上ta,tb前面有as
在mybatis中实现多表联合查询
要注意在对应的映射类中,Article中要配置联合中的所有的对象。
企业中通常不使用多表查询,尤其是c端项目,面向用户,b端是面对内部
主要是多表查询会产生慢sql,如果项目比较多的话,就会使得某个项目一直占用sql会影响其他项目,,慢sql可能会占用几十秒。