springboot,更新数据的2种写法
BookDao.java
以下为2种传参方式,都可用
/**
* 图书Mapper
* */
@Repository
@Mapper
//@CacheNamespace(flushInterval = 300000L)//缓存五分钟过期(必须加这句,不然会报错)
public interface BookDao extends BaseMapper<Book> {
/**
* 根据bookId,更新bookName(方法1)
*/
int updateBookNameByBookId(Map<String, Object> params);
/**
* 根据bookId,更新bookName(方法2)
*/
int updateBookNameByBookId2(@Param("bookId") String bookId, @Param("bookName") String bookName);
}
BookDao.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.touchzh.www.modules.book.dao.BookDao">
<!--<cache-ref namespace="com.touchzh.www.modules.book.dao.BookDao"/>-->
<!--根据book_id修改book_name,方法1-->
<update id="updateBookNameByBookId" parameterType="map">
update lib_book set book_name = #{bookName} where book_id = #{bookId}
</update>
<!--根据book_id修改book_name,方法2-->
<update id="updateBookNameByBookId2">
update lib_book set book_name = #{bookName} where book_id = #{bookId}
</update>
</mapper>
在Service中调用
baseMapper.updateBookNameByBookId(params);//方法1 baseMapper.updateBookNameByBookId2(bookId,bookName);//方法2
哪一种方法更好?
这两种传参方式在功能上是等价的,都可以用来根据 bookId 更新 bookName。但是,它们的设计和适用场景有所不同。
updateBookNameByBookId(Map<String, Object> params) 方法使用一个 Map 参数,适合当你需要传递多个参数到数据库更新语句时。这种方式更灵活,因为你可以在一个 Map 中传递任意多的键值对。然而,它也要求调用者正确地设置 Map 中的键(在这种情况下是 bookId 和 bookName),这可能会增加出错的可能性。
updateBookNameByBookId2(@Param("bookId") String bookId, @Param("bookName") String bookName) 方法使用两个单独的参数,这使得代码更清晰和直接。你直接传递 bookId 和 bookName,然后在 MyBatis 的 XML 映射文件中通过 @Param 注解明确指出这些参数的名称。这种方式对于简单的更新操作来说更简单,更易于理解和使用。
"哪种更好一些"这个问题没有明确的答案,它取决于你的具体需求和偏好。如果你需要一个更灵活的方法来处理多个参数,那么第一种方法可能更适合你。如果你需要一个更直接和清晰的方法来处理简单的更新操作,那么第二种方法可能更适合你。
在大多数情况下,我会推荐第二种方法,因为它更直观和易于理解。然而,如果你的更新操作需要多个参数,或者参数的数量可能会变化,那么第一种方法可能会更方便。

浙公网安备 33010602011771号