1. 程式人生 > >Java開發常見錯誤:org.mybatis.spring.MyBatisSystemException

Java開發常見錯誤:org.mybatis.spring.MyBatisSystemException

org.apache.ibatis.binding.BindingException: Parameter 'username' not found. Available parameters are [param1, tag]
《===================================解決方案一======================================》
傳遞的引數為Map型別
  一直對Map型別作為引數不是很熟悉,後來定位到Map引數取值問題。
  原因是:Dao接口裡面使用了@Param 而引數為Map時,去引數應該是#{paraMap.email}
       public List<Book> getBooksUnderEmailAndTag(@Param(value="tag")Map<String,String> paraMap);
《===================================解決方案二=======================================》
一般出項這種情況,都是有關聯物件,而且想一次性新增或者修改。可以使用分離物件新增或修改。
比如User和Department物件。User中有dep_id.這樣我們可以先通過depId查出dep的name。先設定user的部門為dep.
然後再新增User物件。想這樣的邏輯處理可以放到service層。。
UserService中。
public void update(User user,int depId) {
Department dep=departmentDao.load(depId);
user.setDepartment(dep);       //設定部門
this.userDao.update(user);    //新增User物件。
}
至於SQL不用改變,一次性寫好。
insert into t_user(username,password,nickname,dep_id)
       value(#{username},#{password},#{nickname},#{department.id});