一 statement的crud:
mybatis约定:
输入参数parameterType和输出参数resultType,在形式上都只能有一个
如果输入参数:是简单类型(8个基本类型+String),则可以使用任何占位符,#{xxx}
如果是对象类型,则只能写属性名#{属性名}
输出参数:如果返回值类型是一个对象(例如:user),则无论返回一个还是返回多个
resultType的写法都是一样,例如:org.user
注意事项:
1.如果使用的事物方式为jdbc,则需要手动提交,提交方式为session.commit()
2.所有的标签都必须有sql语句,但是sql参数值可选
有参数时session.delete(statement, z);
没参数时session.delete(statement);
二 mapper动态代理方式的crud(MyBatis接口开发):
原则:约定优于配置
硬编码:abc.java
Configuration conf = new Configuration();
con.setName("myProject");
配置方式:abc.xml
<name>myProject</name>
约定:默认值就是myProject
具体实现的步骤:
1.基础环境:mybatis.jar/ojdbc.jar,conf.cml,mapper.xml
2.不同之处
约定的目标:省略掉statement,根据约定,直接找到要执行的sql语句
a.接口
建一个接口,接口中的方法必须遵循以下约定:
1.方法名与mapper.xml文件中标签的id值相同
2.方法的输入参数和mapper.xml文件中标签的parameter Type类型一致(无论结果返回一个还是多个,resultType中只写一个)
3.方法的返回值和mapper.xml文件中标签的resultType类型一致
除了以上约定,要实现接口中的方法 和Mapper.xml中SQL标签一一对应,还需要以下一点:
1. namespace的值,就是接口的全类名(接口 - mapper.xml 一一对应)
匹配的过程(约定的过程):
1. 根据 接口名 找到mapper.xml文件(根据的是namespace=接口全类名)
2. 根据接口的方法名 找到mapper.xml文件中的SQL标签(方法名=SQL标签id值)
以上两点可以保证:当我们调用接口中的方法时,程序能自动定位到某一个Mapper.xml文件中的sql标签
习惯:SQL映射文件(mapper.xml)和接口放在同一个包中(注意修改conf中映射文件的路径)
以上,可以通过接口的方法定位到SQL语句
执行:
usemapper x = session.getMapper(usemapper.class);//获取接口
user result = x.queryUserByUsename(z);//执行接口里面的方法