mybatis--2 CRUD

在接口定义方法:

添加:并且获取主键的值

id:接口中的方法名,parameterType参数类型:插入的参数类型,可以省略。

mysql支持自增主键,自增主键值的获取,mybatis也是利用statement . getGenreatedKeys();
useGeneratedKeys="true";使用自增主键获取主键值策略
keyProperty;指定对应的主键属性,也就是mybatis获取到主键值以后,将这个值封装给javaBean的哪个属性

修改:

删除:


测试增删改:
1、mybatis允许增删改直接定义以下类型返回值
Integer. Long、Boolean、void
2、我们需要手动提交数据
sqlSessionFactory. openSession();===>手动提交
sqlSessionFactory. openSession(true);===》自动提交

查询:

resultType:返回值类型
#{id}:从传递过来的参数中取出id值

使用不同的数据库:

Oracle不支持自增: Oracle使用序列来模拟自增:
每次插入的数据的主键是从序列中拿到的值:如何获取到这个值:

或者

BEFORE运行顺序:
先运行selectKey查询id的sql;查出id值封装给j avaBean的id属性
在运行插入的sq1;就可以取出i d属性对应的值

AFTER运行顺序:
先运行插入的sql (从序列中取出新值作为id) ;
再运行selectKey查询id的sql:

单个参数: mybatis不会做特殊处理,
#{参数名}:取出参数值。
多个参数: mybatis会做特殊处理。多个参数会被封装成一个map。
key: param1. . . paramN ,或者参数的索引也可以
value:传入的参数值
#{}就是从map中获取指定的key的值;
异常:
org.apache.ibatis.pinding.BindingException:Parameter 'id' not found .Available parameters are [1,0, param1, param2]
错误原因:
(方法: public Employee get EmpByIdAndLastName (Integer id,String lastName)
取值: #{id} ,#{lastName})

命名参数:明确指定封装参数时map的key; @Param("id")
多个参数会被封装成一个map, 
key:使用@Param注解指定的值
value:参数值
#{指定的key}取出对应的参数值

POJO: 
如果多个参数正好是我们业务逻辑的数据模型,我们就可以直接传入pojo;
#{属性名}:取出传入的pojo的属性值


Map:
如果多个参数不是业务模型中的数据,没有对应的pojo,为了方便,我们也可以传入map
#{key}:取出map中对应的值

TO:
如果多个参数不是业务模型中的数据,但是经常要使用,推荐来编写一个TO (Transfer object)数据传输对象
Page{
int index;
int size;
}
思考:

#{}和${}的区别:

猜你喜欢

转载自blog.csdn.net/XiaoXiao_Lin/article/details/109584231