ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Mybatis基本使用(二)

2021-03-29 18:32:46  阅读:151  来源: 互联网

标签:基本 语句 EOF value 主键 参数 使用 Mybatis id


Mapper文件解析

<mapper namespace="test">
	<select id="findUserById" parameterType="int"
		resultType="com.demo.po.User">
		select * from user where id = #{id}
	</select>
	<select id="findUserByUsername" parameterType="java.lang.String"
		resultType="com.demo.po.User">
		select * from user where username like '%${value}%'
	</select>
</mapper>

配置说明:
1) parameterType:定义输入参数的Java类型
2)resultType:定义结果映射类型
3)#{}:相当于JDBC中的?占位符
4)#{id}:表示使用preparedstatement设置占位符并将输入变量id传到sql
5) v a l u e : 取 出 参 数 名 为 v a l u e 的 值 , 然 后 把 {value}:取出参数名为value的值,然后把 value:取出参数名为value的值,然后把{value}这个替换为value对应的值

#{}和KaTeX parse error: Expected 'EOF', got '#' at position 9: {}的区别 1)#̲{}相当于JDBC SQL语句…{}相当于JDBC SQL语句中的连接符号+(Statement)。
2)#{}在进行参数赋值的时候,会对参数进行类型解析(如果是String类型,那么SQL语句会自动加上’’);KaTeX parse error: Expected 'EOF', got '#' at position 63: … 1=1将查询条件忽略。 3)#̲{}进行简单类型(String…{}如果进行简单类型(String、Date、8基本数据类型的包装类)参数赋值,KaTeX parse error: Expected 'EOF', got '#' at position 20: …的名称必须是value。 4)#̲{}是通过反射获取数据,而{}是通过ognl表达式来进行参数赋值

主键返回

<insert id="insertUser" parameterType="com.demo.po.User">
	<!-- selectKey将主键返回,需要再返回 -->
	<selectKey keyProperty="id" order="AFTER"
		resultType="java.lang.Integer">
		select LAST_INSERT_ID()
	</selectKey>
	insert into user(username,birthday,sex,address)
		values(#{username},#{birthday},#{sex},#{address});
</insert>

添加selectKey标签实现主键返回:
1)keyProperty:指定返回的主键,存储在pojo中的哪个成员变量
2)order:指定selectKey标签中的sql什么时候执行,是相对于insert语句而言。由于mysql的自增原理是执行完insert语句之后才将主键生成,所以这里的selectKey的执行时机是after。
3)resultType:返回的主键对应的java数据类型
4)LAST_INSERT_ID()是mysql的函数,返回auto_increment自增列新记录id的值

To Be Continue…

标签:基本,语句,EOF,value,主键,参数,使用,Mybatis,id
来源: https://blog.csdn.net/u012241526/article/details/115307085

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有