目录
以下内容需要小伙伴先看看这篇文章,才能继续进行哦~
以下案例,我只写了Mapper层和XML中的实现
1、增加用户操作
1.1、接口中声明放法:
int addUser(Userinfo userinfo);
注:int默认返回增加的行数
1.2、XML中实现方法:
<insert id="addUser">
insert into userinfo(username,password,createtime,updatetime)
values (#{username},#{password},#{createtime},#{updatetime});
</insert>
1.3、 测试代码:
@Test
void addUser() {
//伪代码
Userinfo userinfo = new Userinfo();
userinfo.setUsername("张三");
userinfo.setPassword("123");
userinfo.setCreatetime(LocalDateTime.now());
userinfo.setUpdatetime(LocalDateTime.now());
int result = userMapper.addUser(userinfo);
System.out.println(result);
}
1.4、特殊的添加:添加并返回自增id
如果是上述的代码执行,拿到当前用户的id,代码不会报错:
@Test
void addUser() {
//伪代码
Userinfo userinfo = new Userinfo();
userinfo.setUsername("zhangsan");
userinfo.setPassword("123");
userinfo.setCreatetime(LocalDateTime.now());
userinfo.setUpdatetime(LocalDateTime.now());
int result = userMapper.addUser(userinfo);
System.out.println(result);
System.out.println(userinfo.getId());
}
但他会一直返回的都是0,就不符合我们的预期,修改如下:
- useGeneratedKeys:命令MyBatis使用JDBC的getGeratedKeys方法来取出由数据库内部生成的主键
- keyProperty:唯一识别对象的属性【是类中的属性值】
- 除了这两个,还有一个 keyColumn:设置生成键值在表中的列名【表的字段】
测试:
2、修改用户操作
2.1、接口声明方法
int upUserName(Userinfo userinfo);
2.2、XML中实现方法
<update id="upUserName">
update userinfo set username = #{username} where id = #{id};
</update>
3、删除操作
3.1、接口声明方法
int delById(@Param("id") Integer id);
3.2、XML实现方法
<delete id="delById" >
delete from userinfo where id = #{id};
</delete>
4、进行单元测试时,如何不污染数据库
添加注解 @Transactional,进行单元测试时,不会污染数据库,他就好比是将代码执行后,再进行回滚~
举例:
@Test
@Transactional
void addUser() {
//伪代码
Userinfo userinfo = new Userinfo();
userinfo.setUsername("lisi");
userinfo.setPassword("123");
userinfo.setCreatetime(LocalDateTime.now());
userinfo.setUpdatetime(LocalDateTime.now());
int result = userMapper.addUser(userinfo);
System.out.println(result);
System.out.println(userinfo.getId());
}
代码执行成功后,查看数据库:
并没有真的添加lisi这个用户信息~
好啦,本期到这里结束啦~下期再见~