MyBatis-1

发布时间 2024-01-12 13:26:02作者: 新至所向

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标签中内容前面或后面去掉指定内容

  1. choose. when,otherwise,相当于if...else if...else

  2. foreach
    collection:设置需要循环的数组或集合

item:表示数组或集合中的每一个数据

separator:循环体之间的分割符

  1. sql标签
    设置sQL片段:
<sql id="empcolumns">eid, emp_name, age, sex,email</sqL>
  1. 引用sQL片段:
<include refid="empcolumns "></include>