【MyBatis-03】几个注意点

通过上边两篇文章分别分析了执行过程,过程中使用到的对象及一个小demo,下面是对这两天涉及到的技术做一个总结。

主要是涉及到mapper的内容。


一、关于#{}和${}

1.#{}表示占位符?,#{}接收简单类型的参数时,里面的名称可以任意。

2.${}表示拼接符,${}接收简单类型的参数时,里面的名称必须是value

3.${}里面的值会原样输出,不加解析,如果该参数值是字符串,有不会添加引号。

4.${}存在sql注入的风险,但是有些场景下必须使用,比如排序后面会动态传入排序的列名。


二、关于parameterType和resultType
1.parameterType指定输入参数的java类型,parameterType只有一个,也就是说入参只有一个,该入参可以是任意的JAVA类型,所以不需要担心为什么只有一个。
2.resultType指定输出结果的单条的JAVA类型。


三、关于返回主键值

当ID采用int并且自增长时,通常需要返回主键,因为不返回程序是不知道的,往往我们下一步需要使用这个主键。


1.在<insert></insert>标签中,可以增加selectKey标签,具体如下图

	<insert id="insertClass" parameterType="com.jumore.mybatisdemo01.pojo.ClassInfo">
		<selectKey keyProperty="classid" order="AFTER" resultType="int">
			SELECT LAST_INSERT_ID()
		</selectKey>

		INSERT INTO class_info(classname,classlocation,memo)
		VALUES(#{classname},#{classlocation},#{memo})
	</insert>


2.<selectKey>中的  keyProperty是指的要获取的字段名称,order是针对下面的insert语句,当前语句是在其之前执行还是在之后执行,如果是自增型int,则为after,若为UUID,则为before,resultType是指selectKey中的SQL查询到的结果类型。



今天先写到这里,下一节我们讲基于dao和基于mapper的开发方式,

再后面分析下对应的源码










评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值