1. 程式人生 > >關於使用tk.mybatis中寫自定義的mapper的問題

關於使用tk.mybatis中寫自定義的mapper的問題

問題

使用tk.mybatis能滿足大多數操作,但是想新增自己的查詢方法時候今天遇到了坑,總結一下

官方教程

大致分兩種

1. 使用純介面註解方式時

在mapper介面中自定義方法上新增如@Select,@insert類似的註釋,裡邊寫相應的sql語句,如下

import org.apache.ibatis.annotations.Select;
import tk.mybatis.mapper.common.Mapper;

public interface CountryMapper extends Mapper<Country> {
    @Select("select * from country where countryname = #{countryname}")
    Country selectByCountryName(String countryname);
}

這種方式沒有問題

2. 如果使用 XML 方式,需要提供介面對應的 XML 檔案

例如提供了 CountryMapper.xml 檔案,內容如下:

<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="tk.mybatis.sample.mapper.CountryMapper">
    <select id="selectByCountryName" resultType="tk.mybatis.model.Country">
        select * from country where countryname = #{countryname}
    </select>
</mapper>

這裡會有點問題
注意: resultType 如果對映的是個實體類最好寫 包的全路徑名tk.mybatis.model.Country 如果寫 Country會報錯,導致專案無法啟動。