MyBatis映射器

博客介绍了MyBatis通过映射器配置生成JavaBean。映射器可定义多种元素,详细阐述了select、insert、update和delete操作。select可组合参数成POJO传递;insert有主键回填和selectKey处理复杂逻辑;增删改操作完成后会返回影响记录条数。

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

MyBatis通过映射器配置可以生成对应的JavaBean返回给调用者。
映射器中可以定义select、insert、update、delete、sql、parameterMap、resultMap、cache、cache-ref等。

1、select
  • 定义Dao接口
public int countFirstName(String firstName);
  • 匹配xml文件
<select id="countFirstName" parameterType="string" resultType="int">
	select count(*) as total from user_t where name like concat(#{firstName},'%')
</select>

首先id标出这条SQL,然后parameterType定义参数类型,在定义返回类型resultType

当需要传递多个参数到一个select语句中时,可以将这些参数组合成一个POJO类,利用类将参数传递进去;如:

public List<Role> findRole(string name,string role,string note);

这个接口需要传递三个参数进去,虽然可以像下面这样使用@Param注解,但是有点儿繁琐:

public List<Role> findRole(@Param("name")string name,@Param("role")string role,@Param("note")string note);

将这三个参数变成一个POJO类:

public class RoleParam(){
private String name;
private String role;
private String note;
//setter和getter方法
}
<select id="findRole" parameterType="RoleParam" resultType="Role">
	select id as id,role_name as roleName,note as note from role_t 
	where role_name like concat('%',#{role},'%')
	and name like concat('%',#{name},'%')
</select>
2、insert

Dao接口为:

public int insertRole(Role role);

使用主键回填的方式,自动递增sql数据库中的自增字段;

<insert id="insertRole" parameterType="com.hhh.demo.model.Role" 
useGenerateKeys="true" keyProperty="id">
	insert into role_t(role_name,note) values (#{roleName},#{note})
</insert>

也可以使用selectKey处理更复杂的插入逻辑:

<insert id="insertRole" parameterType="com.hhh.demo.model.Role" 
useGenerateKeys="true" keyProperty="id">
	<selectKey keyProperty="id" resultType="int" order="BEFORE">
		select if(max(id) is null,1,max(id)+2) as newId from role_t
	</selectKey>
	insert into role_t(role_name,note) values (#{roleName},#{note})
</insert>

如果主键为null,设置为1,否则设置为主键最大值+2;

3、update和delete

在MyBatis中insert、update、delete操作执行完成之后,都会返回一个整数,指示执行语句后影响的记录条数。

<!--更新操作-->
<update id="updateUser" parameterType="com.hhh.demo.model.User">
	update user_t set
	user_name = #{userName},
	user_num = #{userNum},
	user_role = #{userRole}
	where id=#{id}
</update>
<!--删除操作-->
<delete id="deleteUser" parameterType="long">
	delete from user_t where id=#{id}
</delete>
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值