你的位置:首页 > 信息动态 > 新闻中心
信息动态
联系我们

Mybatis复习

2022/1/1 20:27:54

1.hello world

①设计好数据库和java对应的实体类
在这里插入图片描述
在这里插入图片描述
②设置全局配置文件
在这里插入图片描述
③配置映射文件
在这里插入图片描述
④编写测试类
在这里插入图片描述

2.接口式编程

①创建一个对应接口
在这里插入图片描述
②修改映射文件的某些配置
在这里插入图片描述
③编写测试类
在这里插入图片描述

3.全局配置文件(标签的顺序不能打乱)

①settings

在这里插入图片描述

②typeAliases(别名处理器)

在这里插入图片描述

③.typeHandlers(类型处理器)

④.plugins(插件)

插件能拦截四大对象的方法
1.Executor
2.ParameterHandler
3.ResultSetHandler
4.StatementHandler

⑤.environments(运行环境:可以配置多种环境)

在这里插入图片描述

⑥.databaseIdProvider数据库厂商

在这里插入图片描述
在这里插入图片描述

⑦.mappers

在这里插入图片描述
上面第三点,还必须映射文件名和接口名一致

有的公司使用以下方法:

mybatis还有另一种方式:没有映射文件,sql语句利用注解写在接口上
在这里插入图片描述
在这里插入图片描述

4.映射文件

select、insert、update、delete

在这里插入图片描述

在这里插入图片描述

如果想要获取自增主键,可以采用以下方式(oracle不支持自增)
在这里插入图片描述

-------------------------------------------------------参数处理-------------------------------------------

①如果传过来的参数是单个参数,mybatis不做特殊处理,例如
在这里插入图片描述

②如果传过来的参数是多个参数,mybatis会将多个参数封装成map结构

所以以下书写结构是错误的:
在这里插入图片描述

在这里插入图片描述

解决方法1:(使用mybatis给定的map结构 param1、param2…)
在这里插入图片描述
在这里插入图片描述
解决方法2:(使用@param注解)
在这里插入图片描述
在这里插入图片描述

在参数很多有五六个的情况下:
1.如果多个参数正好是我们业务逻辑的数据模型,我们就可以直接传入pojo
2.如果不是我们业务逻辑里的模型也不经常使用的话,我们可以使用map
3.如果不是我们业务逻辑里的模型但是经常使用的话,我们可以创建一个实体类

特别注意:
如果穿过来的参数是Collection类型或者数组也会进行特殊处理
例如: public Employee getEmployeeByI的(List ids);
取第一个值: #{list[0]}
Collection------->colllection[0]
Array-------------->array[0]

经典面试题:#{}和${}的区别

#{}和${}的区别
#{}是以预编译的形式,将参数设置到sql语句当中,防止sql注入
${}:取出的值直接拼装在aql语句中,会有安全问题,原生jdbc不支持占位符的地方,就可以使用