您好,登錄后才能下訂單哦!
在使用MyBatis和Spring Boot進行項目開發時,我們通常會遇到一些重復的代碼,例如數據訪問層(DAO)的接口和實現。為了提高代碼的可維護性和可讀性,我們可以對這些代碼進行重構。下面是一個簡單的數據訪問層代碼重構案例:
BaseMapper
:public interface BaseMapper<T> {
T findById(Long id);
List<T> findAll();
int insert(T entity);
int update(T entity);
int deleteById(Long id);
}
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語句。
BaseMapper
:public interface UserMapper extends BaseMapper<User> {
}
application.properties
或application.yml
中配置MyBatis的掃描路徑:mybatis.mapper-locations=classpath:mapper/*.xml
@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);
}
}
通過這種方式,我們可以將重復的數據訪問層代碼抽象出來,提高代碼的可維護性和可讀性。當然,這只是一個簡單的示例,實際項目中可能需要根據具體需求進行更多的定制化開發。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。