在 MyBatis 中,BaseDao 是一個基礎的數據訪問層接口,用于定義通用的數據庫操作方法。處理復雜 SQL 語句時,你需要遵循以下步驟:
public interface BaseDao<T> {
List<T> findAll();
T findById(int id);
void insert(T entity);
void update(T entity);
void delete(int id);
}
public abstract class BaseDaoImpl<T> implements BaseDao<T> {
// 使用泛型,確保實體類和 Mapper 接口的類型一致
private Class<T> entityClass;
public BaseDaoImpl() {
// 獲取泛型類型
Type type = getClass().getGenericSuperclass();
ParameterizedType parameterizedType = (ParameterizedType) type;
entityClass = (Class<T>) parameterizedType.getActualTypeArguments()[0];
}
// 實現 BaseDao 中的方法
// ...
}
public class User {
private int id;
private String name;
private String email;
// getter and setter methods
}
public interface UserMapper extends BaseDao<User> {
// 在這里添加特定于 User 的方法
}
<?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.dao.UserMapper">
<select id="findUsersByName" resultType="com.example.entity.User">
SELECT * FROM user WHERE name LIKE CONCAT('%', #{name}, '%')
</select>
</mapper>
public interface UserMapper extends BaseDao<User> {
List<User> findUsersByName(String name);
}
通過以上步驟,你可以在 MyBatis 的 BaseDao 中處理復雜 SQL 語句。注意在編寫 XML 文件時,確保命名空間(namespace)與接口的完全限定名相匹配,以及方法名與 XML 文件中的 ID 相同。