Mybatis之sql映射文件篇

Mybatis之sql映射文件:用来存放sql语句的配置文件,需要与同名SQL接口绑定,sql语句有着各自的对应标签<select>、

                                       <insert>、<delete>、<update>, 这些标签全都放在<mapper>标签内

一、sql映射文件的标签

<mapper>:存放增删该查标签的地方。

  •             namespace:名称空间,绑定接口,指定为接口的全类名
  •             <select>:查询标签,存放sql查询语句。
  •                         id:唯一标识符,用来设置为接口方法名
  •                         resultType:返回值类型
  •                         #{id}:相当于占位符,#{Bean对象的属性名},由select标签的id值即接口的方法传入参数来确定占位符

           实际值,与该方法的参数名无关,参数名不需要与bean属性名对应


<mapper namespace="mybatis.dao.EmployeeMapper">
	<select id="接口方法名" resultType="返回值,接口全类名或全局配置文件中设置的别名">
		select id,last_name lastName,email,gender from tb1_employee where 
                id = #{Bean对象的属性}
	</select>
</mapper>
  •             <insert>、<delete>、<update>:增删改,对比查询标签不同在于没有resultType属性。
<mapper namespace="接口全类名">
	<insert id="接口方法名">
	    insert into tb1_employee values(#{id},#{lastName},#{gender},#{email})
	</insert>
	<delete id="接口方法名">
	    delete from tb1_employee where id=#{id} and gender= #{gender}
	</delete>
	<update id="接口方法名">
	    update tb1_employee set gender=#{gender} where id=#{id}
</mapper>

<insert>标签有俩个属性可以在插入一条记录时,返回自增主键的值。

  •                         useGeneratedKeys="true":开启返回自增主键值功能
  •                         keyProperty="Bean对象属性名":设置返回的自增主键值映射到Bean对象的哪个值中。
<mapper namespace="mybatis.dao.EmployeeMapper">
	<insert id="addEmp" useGeneratedKeys="true" keyProperty="id">
	    insert into tb1_employee values(#{id},#{lastName},#{gender},#{email})
	</insert>
</mapper>

二、关联接口的方法参数个数不一致处理

关联方式:<mapper>的namespace设置接口全类名 ;<selecr><insert><delete><update>的id设置接口方法名

之前提到,占位符的实际值来自于接口方法的传入参数,一般我们设置方法参数传入一个Bean对象,#{属性名}来获取值。

但是当我们有多个参数时,并且传入参数并不是只有一个Bean对象,我们必须使用其它方法。

 

取参数值使用#{}原因:防止SQL注入。

单个方法参数:

            基本类型/Bean对象都使用:#{返回bean对象的属性名}

 

多个方法参数:

            第一种:根据参数顺序索引进行取值。#{index},index从0开始

            第二种:在方法参数定义前加上注解:@Param("id")。

                           然后取值:#{id}

            第三种:将参数封装成一个map,方法参数设置成该map,

               然后取值:#{键名}

 

特别情况:

  1、当多个参数中包含了Bean对象取值方法----------使用#{index.属性名}来取值

  2、当参数中包含Collection(List,Set)取值方法----------使用#{collection[ i ]}来取值,List也可以使用#{list[ i ]}

  3、当参数中包含数组(Array)取值方法----------使用#{array[ i ]}来取值

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值