如何在MyBatis中实现BaseDao接口

845
2024/9/10 6:31:27
栏目: 编程语言
开发者测试专用服务器限时活动,0元免费领,库存有限,领完即止! 点击查看>>

在 MyBatis 中实现 BaseDao 接口,可以遵循以下步骤:

  1. 创建一个通用的 BaseDao 接口,定义一些基本的 CRUD 操作。
public interface BaseDao<T> {
    int insert(T entity);
    int update(T entity);
    int delete(int id);
    T findById(int id);
    List<T> findAll();
}
  1. 创建一个通用的 Mapper XML 文件,实现 BaseDao 接口中的方法。
<!-- 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>
  1. 为每个实体类创建一个 Dao 接口,继承 BaseDao 接口。
public interface UserDao extends BaseDao<User> {
}
  1. 为每个实体类创建一个 Mapper XML 文件,指定对应的表名和命名空间。
<!-- UserMapper.xml -->
<mapper namespace="com.example.dao.UserDao">
   <property name="tableName" value="user"/>
    <!-- 引入 BaseMapper.xml 中的 SQL 语句 -->
   <include resource="BaseMapper.xml"/>
</mapper>
  1. 在 MyBatis 配置文件中注册这些 Mapper。
<!-- mybatis-config.xml --><configuration>
    <mappers>
        <mapper resource="com/example/dao/UserMapper.xml"/>
        <!-- 其他实体类的 Mapper 文件 -->
    </mappers>
</configuration>
  1. 在 Service 层或其他需要使用 Dao 的地方,通过依赖注入的方式获取 Dao 实例。
@Service
public class UserService {
    @Autowired
    private UserDao userDao;

    public void createUser(User user) {
        userDao.insert(user);
    }

    // 其他业务逻辑
}

这样,你就可以在 MyBatis 中实现一个通用的 BaseDao 接口,并为每个实体类提供相应的 Dao 实现。

辰迅云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>

推荐阅读: MyBatis的延迟加载和立即加载有什么区别