- 单个传参:MyBatis可以接受基本类型,对象类型,集合类型的值。可直接使用这个参数,不需要经过任何处理。
多个参数:
方式一:传参
方式二:@Param
resultType:
1.简单类型(8个基本+String)
2.输出参数为实体对象类型
3.输出参数为实体对象类型的集合
resultMap:resultType要求必须得要字段名称和数据库当中的名称一致时才能有值,否则为null;在正常情况下列名和JavaBean的属性名一般都是不同的,因此还是需要resultMap的。
如果sql查询字段名和pojo的属性名不一致,可以通过resultMap将字段名和属性名作一个对应关系
<resultMap id="customerMap" type="Customer">
//column表示 数据库字段名 ; property表示POJO类中属性名
<id column="cust_id" property="cust_ids"/>
<result column="cust_name" property="cust_names"/>
<result column="cust_profession" property="cust_professions"/>
<result column="cust_phone" property="cust_phones"/>
<result column="email" property="email"/>
</resultMap>
<select id="getCustomer" resultMap="customerMap">
select * from customer where cust_id=#{id}
</select>
- properties:定义属性及读取属性文件
- settings:这是 MyBatis 中极为重要的调整设置,它们会改变 MyBatis 的运行时行为
typeAliases:类型别名是为 Java 类型设置一个短的名字
如果我们一般插入数据的话,如果我们想要知道刚刚插入的数据的主键是多少,我们可以通过以下的方式来获取
<!--添加-->
<insert id="insertCustom" parameterType="com.itlike.domain.Customer">
/*获取插入的最后一个id*/
<selectKey keyColumn="cust_id" keyProperty="cust_id" resultType="Integer" order="AFTER">
select last_insert_id()
</selectKey>
insert into `customer`(cust_name,cust_profession,cust_phone,email)
values (#{cust_name},#{cust_profession},#{cust_phone},#{email})
</insert>
- 延时加载(懒加载):如果不采用延迟加载 (立即加载),查询时会将 一 和多 都查询,如果想要 暂时只查询1的一方, 而多的一方 先不查询 而是在需要的时候再去查询 -->延迟加载
在Mybatis中延迟加载就是在resultMap中配置具体的延迟加载..
<!-- 全局配置参数 -->
<settings>
<!-- 延迟加载总开关 -->
<setting name="lazyLoadingEnabled" value="true" />
<!-- 设置按需加载 -->
<setting name="aggressiveLazyLoading" value="false" />
</settings>