MyBatis 添加功能
使用 MyBatis 实现添加功能通常涉及以下几个步骤:
定义插入操作的 SQL 语句,可以在 Mapper XML 文件中编写 insert 语句或者在接口中使用注解方式:
XML 方式示例:
xml
<insert id="insertUser" parameterType="com.example.User">
INSERT INTO user(name, age) VALUES(#{name}, #{age})
</insert>
接口注解方式示例:
java
@Insert("INSERT INTO user(name, age) VALUES(#{name}, #{age})")
int insertUser(User user);
在 Service 层调用 Mapper 方法:
java
User user = new User();
user.setName("张三");
user.setAge(25);
userMapper.insertUser(user);
如果需要获取自增主键,可以配置 useGeneratedKeys:
xml
<insert id="insertUser" parameterType="com.example.User"
useGeneratedKeys="true" keyProperty="id">
INSERT INTO user(name, age) VALUES(#{name}, #{age})
</insert>
MyBatis 修改功能
修改功能与添加类似,需要使用 update 语句:
XML 方式示例:
xml
<update id="updateUser" parameterType="com.example.User">
UPDATE user SET name=#{name}, age=#{age} WHERE id=#{id}
</update>
接口注解方式示例:
java
@Update("UPDATE user SET name=#{name}, age=#{age} WHERE id=#{id}")
int updateUser(User user);
Service 层调用示例:
java
User user = userMapper.getUserById(1);
user.setName("李四");
user.setAge(30);
userMapper.updateUser(user);
动态更新可以使用 set 标签:
xml
<update id="updateUser" parameterType="com.example.User">
UPDATE user
<set>
<if test="name != null">name=#{name},</if>
<if test="age != null">age=#{age},</if>
</set>
WHERE id=#{id}
</update>
批量操作可以使用 foreach 标签:
xml
<insert id="batchInsert" parameterType="java.util.List">
INSERT INTO user(name, age) VALUES
<foreach collection="list" item="item" separator=",">
(#{item.name}, #{item.age})
</foreach>
</insert>
总结:
MyBatis 的"添加(INSERT)"和"修改(UPDATE)"套路相同:
-
写接口方法
-
写 XML(或注解)SQL
-
调用完必须提交事务 (
sqlSession.commit()),否则数据不会真正进库。