今天在练习mybatisplus的时候,进行测试的时候突然报错;
项目结构
最开始的时候我并没有写xml文件,而是直接利用mybatisplus进行数据库操作,能够正常操作
@Test
void testSelectByBatchId() {
// 参数是一个 Wapper,条件构造器,这里我们先不用 null
// 查询所有用户
List<User> users = userMapper.selectList(null);
users.forEach(System.out::println);
}
后来我在项目中加上了xml文件相对数据库进行操作,结果就报错了,错误如上标题所示,我在网上反反复复找了一上午,都没解决,看着自己的代码好像也没错啊,到底咋回事???
后来请别人帮我修改了一下。我先贴上我的代码再说吧
pojo对象
@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {
// 对应数据库中的主键(uuid、自增id、雪花算法、redis、zookeeper)
/* AUTO(0), 对应的数据库一定要是自增的,否则会报错
NONE(1), 未设置主键
INPUT(2), 手动输入
ID_WORKER(3), 默认的全局唯一id
UUID(4), 全局唯一id uuid
ID_WORKER_STR(5); ID_WORKER 字符串表示法
*/
@TableId(type= IdType.AUTO)
// @TableField("id")
private Long id;
private String name;
private Integer age;
private String email;
// 在对数据库库进行插入的时候,自动对数据库中的值cretetime进行自动填充
@TableField(fill= FieldFill.INSERT)
private Date createTime;
@TableField(fill=FieldFill.UPDATE)
private Date updateTime;
// 乐观锁 Version
@Version
private Integer version;
// 逻辑删除
@TableLogic
private Integer deleted;
}
mapper接口
@Repository
public interface UserMapper extends BaseMapper<User> {
public List<User> findAll();
}
xml文件 他在xml文件中进行了修改,将select中的返回值改成了resultMap,就是我注释掉的那一部分,没注释的是我之前写的,然后就能正常启动了。诡异的是,我后面把修改的又换成我之前的代码了,竟然又能够成功运行了!!!!要是有哪位大佬知道怎么回事,请给我讲一讲。
<?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">
<mapper namespace="com.mapper.UserMapper" >
<resultMap id="UserMap" type="com.pojo.User">
<id column="id" property="id"/>
<result column="name" property="name"/>
<result column="age" property="age"/>
<result column="email" property="email"/>
<result column="create_time" property="creatTime"/>
<result column="update_time" property="updateTime"/>
<result column="version" property="version"/>
<result column="deleted" property="deleted"/>
</resultMap>
<!--<select id="findAll" resultMap="UserMap">
select * from user
</select>-->
<select id="findAll" resultType="com.pojo.User">
select * from user
</select>
</mapper>
测试类
@SpringBootTest
public class XMLTest {
@Autowired
private UserMapper userMapper;
@Test
void testfindAll(){
List<User> all = userMapper.findAll();
all.forEach(System.out::println);
}
}
希望能够帮到你!!!