java学习碎碎念3:Mybatis动态Mapper开发中的坑

    技术2024-08-03  72

    日常学习碎碎念3

    坑一:

    org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): cn.edu.sdut.mapper.UserMapper.queryUserById

    解决方法:在pom.xml文件中增加以下配置(这是开发工具的坑) pom文件中一定要xml的配置方式: 1.idea开发工具/src/main/java目录中只会打包*.class文件。不会帮我们打包*.xml,.properties 2.**/.xml: /前边的两个**代表的是你这个文件的目录包含子目录(包和子包),*.xml所有的xml文件。

    <!--注意include部分--> <build> <resources> <resource> <directory>src/main/java</directory> <includes> <include>**/*.properties</include> <include>**/*.xml</include> </includes> </resource> </resources> </build>

    坑2: mybatis推荐我们把映射表的xml文件和mapper接口放在一个包中 xml的名称必须和接口名一致,否则产生一系列问题 eg:UserMapper 和UserMaper.xml

    坑3:

    <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!--namespace属性名字不能随便乱写,必须写mapper接口的完全限定名--> <mapper namespace="cn.edu.sdut.mapper.UserMapper"> <!--前方有坑 id属性值必须写UserMapper接口中的方法名 返回resultType类型的数据mybatis已经有实体包了,直接写类名就行了 不用写完全限定名 --> <select id="queryUserById" parameterType="int" resultType="Tabuser"> select * from tabuser where userid=#{userid} </select> </mapper>

    坑4:(粗心坑) 原因:返回的实体类里面没写东西,即Tabuser中的构造方法,geter seter方法啥的没有写,呜呜呜

    Processed: 0.009, SQL: 10