在 MyBatis 中实现 BaseDao 接口,可以遵循以下步骤:
public interface BaseDao<T> {
int insert(T entity);
int update(T entity);
int delete(int id);
T findById(int id);
List<T> findAll();
}
<!-- BaseMapper.xml -->
<mapper namespace="com.example.dao.BaseDao">
<insert id="insert" parameterType="T">
INSERT INTO ${tableName} (...)
VALUES (...)
</insert>
<update id="update" parameterType="T">
UPDATE ${tableName}
SET ...
WHERE id = #{id}
</update>
<delete id="delete">
DELETE FROM ${tableName}
WHERE id = #{id}
</delete>
<select id="findById" resultType="T">
SELECT * FROM ${tableName}
WHERE id = #{id}
</select>
<select id="findAll" resultType="T">
SELECT * FROM ${tableName}
</select>
</mapper>
public interface UserDao extends BaseDao<User> {
}
<!-- UserMapper.xml -->
<mapper namespace="com.example.dao.UserDao">
<property name="tableName" value="user"/>
<!-- 引入 BaseMapper.xml 中的 SQL 语句 -->
<include resource="BaseMapper.xml"/>
</mapper>
<!-- mybatis-config.xml --><configuration>
<mappers>
<mapper resource="com/example/dao/UserMapper.xml"/>
<!-- 其他实体类的 Mapper 文件 -->
</mappers>
</configuration>
@Service
public class UserService {
@Autowired
private UserDao userDao;
public void createUser(User user) {
userDao.insert(user);
}
// 其他业务逻辑
}
这样,你就可以在 MyBatis 中实现一个通用的 BaseDao 接口,并为每个实体类提供相应的 Dao 实现。
辰迅云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
推荐阅读: MyBatis的延迟加载和立即加载有什么区别