在 MyBatis 中,要实现 BaseDao 的批量操作,你需要遵循以下步骤:
public interface BaseDao<T> {
int insert(T entity);
int update(T entity);
int delete(int id);
T getById(int id);
List<T> findAll();
}
<?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.example.dao.BaseDao">
<!-- 这里的 ${tableName} 和 ${columnList} 需要在实际的子类 Mapper XML 文件中进行动态替换 -->
<insert id="insertBatch" parameterType="list">
INSERT INTO ${tableName} (${columnList})
VALUES
<foreach collection="list" item="item" separator=",">
(#{item.id}, #{item.name}, ...)
</foreach>
</insert>
</mapper>
public interface UserDao extends BaseDao<User> {
int insertBatch(List<User> users);
}
<?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.example.dao.UserDao">
<resultMap id="BaseResultMap" type="com.example.entity.User">
<id property="id" column="id" />
<result property="name" column="name" />
<!-- 其他属性映射 -->
</resultMap>
<include resource="com/example/dao/BaseDao.xml"/>
<insert id="insertBatch" parameterType="list">
INSERT INTO user (id, name, ...)
VALUES
<foreach collection="list" item="item" separator=",">
(#{item.id}, #{item.name}, ...)
</foreach>
</insert>
</mapper>
注意:这里的示例代码仅供参考,实际应用中需要根据你的项目结构和需求进行调整。同时,批量操作可能会导致性能问题,请确保在合适的场景下使用。