以下是我在BrandMapper.xml中的select查詢。參數在MyBatis查詢中沒有被提取
<select id="getBrand" parameterType="String" resultMap="brandResult">
SELECT
B.bid as bid,
B.bname as bname,
B.avg_price as avg_price,
B.total_number as total_number,
P.pid as pid,
P.pname as pname,
P.bid as pbid,
P.bname as pbname,
P.specs as pspecs,
P.price as price
from Brands B left outer join Products P on P.bid = B.bid
where B.bname = #{bname, jdbcType=VARCHAR}
</select>
這是接口
public interface BrandMapper {
BrandDAO getBrand(String bname);
}
這是服務類
@Service
public class BrandService {
@Autowired
private BrandMapper brandMapper;
public BrandDAO getBrand(String bname) {
System.out.println("Inside DBService getBrand");
return brandMapper.getBrand(bname);
}
}
我的問題是,在BrandService
的getBrand
函數返回值null
。如果我使用硬編碼字符串替換BrandMapper.xml
中的參數#{bname}
,它將起作用並返回正確的類。我在這裏做錯了什麼?是否有任何日誌或任何可用的地方可以查看正在構建的實際查詢?任何幫助表示讚賞。
我設法使用log4j的,使洛,這是這是越來越執行
SELECT B.bid as bid, B.bname as bname, B.avg_price as avg_price, B.total_number as total_number, P.pid as pid, P.pname as pname, P.bid as pbid, P.bname as pbname, P.specs as pspecs, P.price as price from Brands B left outer join Products P on P.bid = B.bid where B.bname = ?
的參數是沒有得到更換查詢。我無法弄清楚我在這裏做錯了什麼。
只是一個側面說明:這裏不是DAO使用錯了嗎?按照慣例,DAO應該是提供檢索數據庫映射對象的方法的類,而不是對象本身,對嗎? – 2012-02-22 09:37:37