微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Mybatis复习

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不支持占位符的地方,就可以使用

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐