MyBatis-增删改查操作&一些细节
目录
删除功能
-
需求:根据ID删除用户信息
-
SQL:delete from user where id = 5;
-
Mapper接口方法(注意这里不是实现类):
/** * 根据id删除 */ @Delete("delete from user where id = #{id}") public void deleteById(Integer id);
-
编写单元测试方法进行测试
@Test
public void testDeleteById(){
userMapper.deleteById(36);
}
运行单元测试,结果如下:
新增功能
-
需求:添加一个用户
-
SQL:
insert into user(username,password,name,age) values('zhouyu','123456','周瑜',20);
//user后加()用来指定要为user的哪些属性赋值,这个很重要很常用。
-
Mapper接口:
/**
* 添加用户
*/
@Insert("insert into user(username,password,name,age) values(#{username},#{password},#{name},#{age})")
public void insert(User user);
(重点) 如果在SQL语句中,我们需要传递多个参数,我们可以把多个参数封装到一个对象中。然后在SQL语句中,我们可以通过#{对象属性名}
的方式,获取到对象中封装的属性值。
-
单元测试:
在测试类中添加测试方法,代码如下:
@Test
public void testInsert(){
User user = new User();
user.setUsername("admin");
user.setPassword("123456");
user.setName("管理员");
user.setAge(30);
userMapper.insert(user);
}
这里如果采用有参构造,对于不需要赋值的属性可以设置为null,小细节。
例如:User user = new User(null, "lisi", "123", "李四", 23,null);
运行结果如下:
修改功能
-
需求:根据ID更新用户信息
-
SQL:
update user set username = 'zhouyu', password = '123456', name = '周瑜', age = 20 where id = 1;
-
Mapper接口方法:
/**
* 根据id更新用户信息
*/
@Update("update user set username = #{username},password = #{password},name = #{name},age = #{age} where id = #{id}")
public void update(User user);
单元测试:
在测试类中添加测试方法,代码如下:
@Test
public void testUpdate(){
User user = new User();
user.setId(6);
user.setUsername("admin666");
user.setPassword("123456");
user.setName("管理员");
user.setAge(30);
userMapper.update(user);
}
运行结果如下:
查询功能
-
需求:根据用户名和密码查询用户信息
-
SQL:select* from user where user name = 'zhouyu' and password = '123456'
-
Mapper接口方法:
/**
* 根据用户名和密码查询用户信息
*/
@Select("select * from user where username = #{username} and password = #{password}")
public User findByUsernameAndPassword(@Param("username") String username, @Param("password") String password);
(重点) @param注解的作用是为接口的方法形参起名字的。(由于用户名唯一的,所以查询返回的结果最多只有一个,可以直接封装到一个对象中)
说明:基于官方骨架创建的springboot项目中,接口编译时会保留方法形参名,@Param注解可以省略 (#{形参名})。
-
单元测试:
在测试类中添加测试方法,代码如下:
@Test
public void testFindByUsernameAndPassword(){
User user = userMapper.findByUsernameAndPassword("admin666", "123456");
System.out.println(user);
}
运行结果如下:
小结:
1. @Param 注解的使用场景 ?如果接口方法形参中,需要传递多个参数,需要通过 @Param 注解为参数起名字;在基于SpringBoot 官方骨架创建的 SpringBoot 项目中,该注解可以省略;2. 在sql语句中通过表后加()的方式用来指定要为表的哪些字段赋值。3. 在进行测试时,如果采用有参构造对对象进行初始化,那么对于不需要赋值的属性可以设置为null,小细节。
原文地址:https://blog.csdn.net/m0_63949203/article/details/145159285
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!