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

在使用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接口的方法进行数据访问:
@Servicepublic 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);
    }
}

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

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

评论

有免费节点资源,我们会通知你!加入纸飞机订阅群

×
天气预报查看日历分享网页手机扫码留言评论Telegram