MyBatis-1
特点
- 轻量级,性能出色
- SQL和Java编码分开,功能边界清晰。Java代码专注业务、SQL语句专注数据
- 开发效率稍逊于Hlbernate,但是完全能够接受
MyBatis获取参数值的两种方式:
${}和#{}
${}本质字符串拼接
{}本质占位符赋值
MyBatis获取参数值的各种情况:
1、mapper接口方法的参数为单个的字面量类型
可以通过${(}和#{手以任意的名称获取参数值,但是需要注意$的单引号问题
2.mapper接口方法的参数为多个时
此时MyBatis会将这些参数放在一个map集合中,以两种方式进行存储
a>以arge, arg1...为键,以参数为值
b>以param1 , param2...为键,以参数为值
因此只需要通过#{(秘{丹以键的方式访问值即可,但是需要注意$的单引号问题
3、若mapper接口方法的参数有多个时,可以手动将这些参数放在一个map中存储只需要通过#{手}和以键的方式访问值即可,但是需要注意{的单引号问题
4,mapper接口方法的参数是实体类类型的参数
只需要通过#{和手以属性的方式访问属性值即可,但是需要注意${的单引号问题
5,使用@Param注解命名参数
此时MyBatis会将这些参数放在一个map集合中,以两种方式进行存储
a>以@Param注解的值为键,以参数为值
b>以param1 , param2...为键,以参数为值
因此只需要通过#}和手以键的方式访问值即可,I但是需要注意$}的单引号问题
MyBatis中设置了默认的类型别名
java.Lang.Integer-->int,integerint-->_int,_integer
Map-->map
string-->string
MyBatis的各种查询功能:
1、若查询出的数据只有一条
a>可以通过实体类对象接收
b>可以通过list集合接收
c>可以通过map集合接收
2、若查询出的数据有多条
a>可以通过实体类类型的ist集合接收
b>可以通过map类型的ist集合接收
c>可以在mapper接口的方法上添加@MapKey注解,此时就可以将每条数据转换的map集合作为值,
七、特殊SQL的执行
1、模糊查询
解决字段名和属性名不一致的情况:
a>为字段起别名,保持和属性名的一致
b>设置全局配置,将_自动映射为驼峰
c>通过resuLtMap设置自定义的映射关系
<resultMap id="empResultMap" type="Emp">
<id column="eid" property="eid"></id>
<result column="empName" property="emp_name"></result>
<result column="age" property="age"></result>
<result column="sex" property="sex"></result>
<result column="email" property="email"></result>
</resultMap>
处理多对一的映射关系:
a>级联属性赋值
b>association
c>分步查询
九、动态SQL
动态sQL :
1, if:根据标签中test属性所对应的表达式决定标签中的内容是否需要拼接到sQL中
2.where :
当where标签中有内容时,会自动生成where关键字,并且将内容前多余的and 或or去掉
当where标签中没有内容时,此时where标签没有任何效分
3,trim :
prefix/suffix:将trim标签中内容前面或后面添加指定内容
suffixOverrides /prefixOverrides:将trim标签中内容前面或后面去掉指定内容
-
choose. when,otherwise,相当于if...else if...else
-
foreach
collection:设置需要循环的数组或集合
item:表示数组或集合中的每一个数据
separator:循环体之间的分割符
- sql标签
设置sQL片段:
<sql id="empcolumns">eid, emp_name, age, sex,email</sqL>
- 引用sQL片段:
<include refid="empcolumns "></include>