温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

MyBatis Spring Boot集成后的数据访问层代码重构案例

发布时间:2024-09-11 19:50:47 来源:亿速云 阅读:82 作者:小樊 栏目:编程语言

在使用MyBatis和Spring Boot进行项目开发时,我们通常会遇到一些重复的代码,例如数据访问层(DAO)的接口和实现。为了提高代码的可维护性和可读性,我们可以对这些代码进行重构。下面是一个简单的数据访问层代码重构案例:

  1. 首先,创建一个通用的Mapper接口,例如BaseMapper
public interface BaseMapper<T> {
    T findById(Long id);
    List<T> findAll();
    int insert(T entity);
    int update(T entity);
    int deleteById(Long id);
}
  1. 然后,创建一个通用的MyBatis映射文件BaseMapper.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.example.demo.mapper.BaseMapper">
   <select id="findById" resultType="T">
        SELECT * FROM ${tableName} WHERE id = #{id}
    </select>
   <select id="findAll" resultType="T">
        SELECT * FROM ${tableName}
    </select>
   <insert id="insert" parameterType="T">
        INSERT INTO ${tableName} (...) VALUES (...)
    </insert>
   <update id="update" parameterType="T">
        UPDATE ${tableName} SET ... WHERE id = #{id}
    </update>
   <delete id="deleteById">
        DELETE FROM ${tableName} WHERE id = #{id}
    </delete>
</mapper>

注意:在这个映射文件中,我们使用了${tableName}作为动态表名,这样我们就可以在不同的实体类中使用相同的SQL语句。

  1. 接下来,为每个实体类创建一个Mapper接口,并继承BaseMapper
public interface UserMapper extends BaseMapper<User> {
}
  1. application.propertiesapplication.yml中配置MyBatis的扫描路径:
mybatis.mapper-locations=classpath:mapper/*.xml
  1. 最后,在Service层或Controller层调用Mapper接口的方法进行数据访问:
@Service
public class UserService {
    @Autowired
    private UserMapper userMapper;

    public User findById(Long id) {
        return userMapper.findById(id);
    }

    public List<User> findAll() {
        return userMapper.findAll();
    }

    public int insert(User user) {
        return userMapper.insert(user);
    }

    public int update(User user) {
        return userMapper.update(user);
    }

    public int deleteById(Long id) {
        return userMapper.deleteById(id);
    }
}

通过这种方式,我们可以将重复的数据访问层代码抽象出来,提高代码的可维护性和可读性。当然,这只是一个简单的示例,实际项目中可能需要根据具体需求进行更多的定制化开发。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI