Mapper XML文件(CRUD标签)

本文详细解析了MyBatis框架中常见的CRUD操作,包括查询、插入、更新和删除语句的配置方法,以及主键回写的不同实现方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

select

<!-- 查询的statement,
		id:在同一个命名空间下的唯一标识;使用动态代理之后,要求和mapper接口的方法名一致。必须属性
		resultType:sql语句的结果集封装类型;使用动态代理之后,要求和mapper接口方法的返回类型一致。和resultMap二选一
		parameterType:参数类型;使用动态代理之后,要求和mapper接口的方法参数类型一致。可省略,这里就省略了
		内容:查询的sql语句
	 -->
	<select id="queryUserById" resultType="User">
		select *,user_name from tb_user where id = #{id}

insert

	<!-- 新增的statement
		id:在同一个命名空间下的唯一标识;使用动态代理之后,要求和mapper接口的方法名一致。必须属性
		parameterType:参数类型;使用动态代理之后,要求和mapper接口的方法参数类型一致。可省略
		内容:新增的sql语句
	 -->
	<insert id="insertUser" parameterType="User">
		INSERT INTO tb_user (
			user_name,
			password,
			name,
			age,
			sex,
			birthday,
			created,
			updated
		)
		VALUES
		(
			#{userName},
			#{password},
			#{name},
			#{age},
			#{sex},
			#{birthday},
			NOW(),
			NOW()
		);
	</insert>

主键回写:useGeneratedKeys

<!-- 新增的statement
		id:在同一个命名空间下的唯一标识;使用动态代理之后,要求和mapper接口的方法名一致。必须属性
		parameterType:参数类型;使用动态代理之后,要求和mapper接口的方法参数类型一致。可省略
		useGeneratedKeys:开启主键回写,回写到pojo参数中
		keyProperty:主键的属性名
		keyColumn:主键的列名,如果主键的列名和属性名一致,该属性可省略
		内容:新增的sql语句
	 -->
	<insert id="insertUser" useGeneratedKeys="true" keyProperty="id" keyColumn="id" parameterType="User">
		INSERT INTO tb_user (
			user_name,
			password,
			name,
			age,
			sex,
			birthday,
			created,
			updated
		)
		VALUES
		(
			#{userName},
			#{password},
			#{name},
			#{age},
			#{sex},
			#{birthday},
			NOW(),
			NOW()
		);
	</insert>

主键回写:selectKey标签

<!-- 新增的statement
		id:在同一个命名空间下的唯一标识;使用动态代理之后,要求和mapper接口的方法名一致。必须属性
		parameterType:参数类型;使用动态代理之后,要求和mapper接口的方法参数类型一致。可省略
		内容:新增的sql语句
	 -->
	<insert id="insertUser" parameterType="User">
		<!-- 查询新增数据的主键,可以在新增sql语句之前或者之后执行
			order:执行顺序,必须
				BEFORE:在新增sql语句之前执行,通常主键自增长的oracle使用这种方式
				AFTER:在新增sql语句之后执行,通常主键自增长的mysql使用这种方式
			keyProperty:返回值写到pojo参数的属性名,必须
			resultType:返回值类型,必须
		 -->
		<selectKey order="AFTER" resultType="long">
			select LAST_INSERT_ID()
		</selectKey>
		INSERT INTO tb_user (
			user_name,
			password,
			name,
			age,
			sex,
			birthday,
			created,
			updated
		)
		VALUES
		(
			#{userName},
			#{password},
			#{name},
			#{age},
			#{sex},
			#{birthday},
			NOW(),
			NOW()
		);
	</insert>

update

<!-- 更新的statement
		id:在同一个命名空间下的唯一标识;使用动态代理之后,要求和mapper接口的方法名一致。必须属性
		parameterType:参数类型;使用动态代理之后,要求和mapper接口的方法参数类型一致。可省略
		内容:更新的sql语句
	 -->
	<update id="updateUser" parameterType="com.atguigu.mybatis.pojo.User">
		UPDATE tb_user
		SET
			user_name = #{userName},
			password = #{password},
			name = #{name},
			age =
			#{age},
			sex = #{sex},
			birthday = #{birthday},
			updated = NOW()
		WHERE
			(id = #{id});
	</update>

delete

<!-- 删除的statement
		id:在同一个命名空间下的唯一标识;使用动态代理之后,要求和mapper接口的方法名一致。必须属性
		parameterType:参数类型;使用动态代理之后,要求和mapper接口的方法参数类型一致。可省略
		内容:删除的sql语句
	 -->
	<delete id="deleteUserById" parameterType="java.lang.Long">
		delete from tb_user where id=#{id}
	</delete>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值