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不支持占位符的地方,就可以使用
原文地址:https://blog.csdn.net/weixin_47315168/article/details/122267071
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。