您好,登錄后才能下訂單哦!
在使用MyBatis和Spring Boot進(jìn)行項(xiàng)目開發(fā)時(shí),我們通常會遇到一些重復(fù)的代碼,例如數(shù)據(jù)訪問層(DAO)的接口和實(shí)現(xiàn)。為了提高代碼的可維護(hù)性和可讀性,我們可以對這些代碼進(jìn)行重構(gòu)。下面是一個(gè)簡單的數(shù)據(jù)訪問層代碼重構(gòu)案例:
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>
注意:在這個(gè)映射文件中,我們使用了${tableName}
作為動態(tài)表名,這樣我們就可以在不同的實(shí)體類中使用相同的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);
}
}
通過這種方式,我們可以將重復(fù)的數(shù)據(jù)訪問層代碼抽象出來,提高代碼的可維護(hù)性和可讀性。當(dāng)然,這只是一個(gè)簡單的示例,實(shí)際項(xiàng)目中可能需要根據(jù)具體需求進(jìn)行更多的定制化開發(fā)。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。