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