Mybatis基本使用

2022-08-14 14:38:59

Mapper文件解析

<mappernamespace="test"><selectid="findUserById"parameterType="int"resultType="com.demo.po.User">
		select * from user where id = #{id}</select><selectid="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的值,然后把valuevalue{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表达式来进行参数赋值

主键返回

<insertid="insertUser"parameterType="com.demo.po.User"><!-- selectKey将主键返回,需要再返回 --><selectKeykeyProperty="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…

  • 作者:神州孤月
  • 原文链接:https://blog.csdn.net/u012241526/article/details/115307085
    更新时间:2022-08-14 14:38:59