引起此问题的原因有两种:
第一种是官方文档中所述的“Minidao版本过低,需要升级Minidao的版本”。此时修改一下pom文件中的Minidao的version即可。
<dependency>
<groupId>org.jeecgframework</groupId>
<artifactId>minidao-pe</artifactId>
<version>1.6.7</version>
</dependency>
第二种是我们的代码中有可能触发了@Minidao做注解的接口的toString方法。比如我们建立了如下接口:
@MiniDao
public interface UserDao {
@Arguments("id")
@ResultType(String.class)
@Sql("select username from tb_user where id=:id")
public String getUserNameById(String id);
}
然后我们在注入该Dao的Service类中直接打印该Dao来判断是否注入成功:
@Controller
@RequestMapping("/userController")
public class UserController extends BaseController {
private static final Logger logger = LoggerFactory.getLogger(UserController.class);
@Autowired
private UserDao userDao;
@RequestMapping(params = "list")
public ModelAndView list(HttpServletRequest request) {
logger.info("userDao = " + userDao);
return new ModelAndView("com/jeecg/demo/userlist");
}
}
此时会触发UserDao的toString方法从而导致抛出异常。因此我们可以通过修改语句来避免触发toString方法即可。例如:
logger.info("userDao = " + (accountbookTypeDao == null));