Error creating bean with name ‘XXXMapper‘ defined
在发现错误的时候逐层分析从controller层开始,主要是查看对service的调用有无问题注释为@Resource或者@autowired一般都不会出现问题,注意service是否正确调用,有次就发现了直接调用了service实现类@Resourceprivate ITbShjLayerService tbShjLayerService;controller没有问题的话就检查service主要
·
在发现错误的时候逐层分析
从controller层开始,主要是查看对service的调用有无问题
注释为@Resource或者@autowired一般都不会出现问题,注意service是否正确调用,有次就发现了直接调用了service实现类
@Resource
private ITbShjLayerService tbShjLayerService;
controller没有问题的话就检查service
主要检查注释是否正确添加
@Service
public class ServiceImpl extends ServiceImpl<TbShjLayerMapper, TbShjLayer> implements IService {
其次检查mapper
本次项目使用的是mybatis,如果需要使用@Select注释写sql的话,那么要检查是否添加了@Mapper注释。
@Mapper
public interface TbOpinionInfoMapper extends BaseMapper<TbShjOpinionInfo> {
@Select("SELECT c.*, b.USERNAME FROM (SELECT * FROM XX a WHERE a.XX_id=#{XXId,javaType=string,jdbcType=VARCHAR}) c INNER JOIN tbl_user_info b ON c.ct_user_id=b.USERID ORDER BY c.ct_date")
List<XXVO> queryXXInfoByStoreId(@Param("XXId") String XXId);
}
最后检查Mapper实现类
首先检查命名空间,必须保证正确并且与其他的mapper不重复,可以使用ctrl点击查看
namespace="com.xx.mapper.xxMapper"
检查方法id不能重复,返回类型和参数类型要正确
<select id="queryxxByxxId" resultType="int" parameterType="string">
最后检查sql语句本身,建议复制到数据库中运行,看看有无问题。
如果没有问题,那么要考虑是不是语句中直接使用了<或者>等特殊符号,如果使用了则需要更替为Java中对应的转义符,如:>。或者使用<![CDATA[ ]]> 避免被编译。
本次出现问题便是因为直接使用了>进行比较,在数据库中没有问题,但是在Java却无法编译。
在发现错误的时候系统的错误信息并不能直接让我发现错误,便把可能引发错误的Mapper、Service、Controller暂时注释,并一层一层放出来查找问题,最后才找到了该错误
更多推荐
已为社区贡献3条内容
所有评论(0)