Mybatis plus无介绍快使用,自带封装service层的使用附源码(三)
- 问题背景
-
-
- Mybatis-plus无介绍快使用,CRUD增删改查基本使用附源码(一)
- Mybatis-plus无介绍快使用,自定义sql语句CRUD增删改查附源码(二)
- Mybatis-plus无介绍快使用,自带封装service层的使用附源码(三)
- Mybatis-plus无介绍快使用,注解的使用(四)
- Mybatis-plus无介绍快使用,Wrapper条件构造器的使用附源码(五)
- Mybatis-plus无介绍快使用,分页插件和乐观锁插件的使用附源码(六)
- Mybatis-plus无介绍快使用,枚举变量的使用附源码(七)
- Mybatis-plus无介绍快使用,多数据源的使用(八)
- Mybatis-plus无介绍快使用,MybatisX自动生成代码插件的使用(九)
- Mybatis-plus无介绍快使用,可继承通用的基础实体类(十)
-
- 项目搭建
- 总结
- Lyric: 秃鹰盘旋死盯着腐肉
问题背景
因为mybatis plus非常的流行,虽然平常mybatis generator也够用了,但多会一个,看别人的代码就轻松一点
注意事项:
- 官方网站:https://baomidou.com/
- 官方文档:https://baomidou.com/pages/24112f/
- 可以自己创建工程,也可以下载源码进行参考
- MyBatis-Plus在实现插入数据时,会默认基于雪花算法的策略生成id,实体类entity属性都使用对象,使用Long,不能使用long,不然雪花算法会失效
Mybatis-plus无介绍快使用,CRUD增删改查基本使用附源码(一)
Mybatis-plus无介绍快使用,自定义sql语句CRUD增删改查附源码(二)
Mybatis-plus无介绍快使用,自带封装service层的使用附源码(三)
Mybatis-plus无介绍快使用,注解的使用(四)
Mybatis-plus无介绍快使用,Wrapper条件构造器的使用附源码(五)
Mybatis-plus无介绍快使用,分页插件和乐观锁插件的使用附源码(六)
Mybatis-plus无介绍快使用,枚举变量的使用附源码(七)
Mybatis-plus无介绍快使用,多数据源的使用(八)
Mybatis-plus无介绍快使用,MybatisX自动生成代码插件的使用(九)
Mybatis-plus无介绍快使用,可继承通用的基础实体类(十)
项目搭建
1 延续上一篇的代码继续添加,创建service文件夹和接口,以及接口实现类
package com.yg.mybatisplus.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.yg.mybatisplus.entity.User;
/**
* @Author suolong
* @Date 2022/6/4 22:04
* @Version 2.0
*/
public interface UserService extends IService<User> {
}
package com.yg.mybatisplus.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.yg.mybatisplus.entity.User;
import com.yg.mybatisplus.mapper.UserMapper;
import com.yg.mybatisplus.service.UserService;
import org.springframework.stereotype.Service;
/**
* @Author suolong
* @Date 2022/6/4 22:05
* @Version 2.0
*/
@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {
}
2 测试类
package com.yg.mybatisplus;
import com.yg.mybatisplus.entity.User;
import com.yg.mybatisplus.mapper.UserMapper;
import com.yg.mybatisplus.service.UserService;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import java.util.*;
/**
* @Author suolong
* @Date 2022/6/2 17:42
* @Version 2.0
*/
@SpringBootTest
public class MybatisPlusTest {
@Autowired
UserMapper userMapper;
@Autowired
UserService userService;
@Test
void selectTest(){
//全查
List<User> users = userMapper.selectList(null);
users.forEach(System.out::println);
}
/**
* 测试插入一条数据
* MyBatis-Plus在实现插入数据时,会默认基于雪花算法的策略生成id
*/
@Test
public void testInsert(){
User user = new User();
user.setName("Vz1");
user.setAge(211);
user.setEmail("vz@oz61.cn");
int result = userMapper.insert(user);
System.out.println(result > 0 ? "添加成功!" : "添加失败!");
System.out.println("受影响的行数为:" + result);
//1527206783590903810(当前 id 为雪花算法自动生成的id)
System.out.println("id自动获取" + user.getId());
}
/**
* 测试根据id删除一条数据
*/
@Test
public void testDeleteById(){
int result = userMapper.deleteById(1533011356262625282L);
System.out.println(result > 0 ? "删除成功!" : "删除失败!");
System.out.println("受影响的行数为:" + result);
}
/**
* 测试通过id批量删除数据
*/
@Test
public void testDeleteBatchIds(){
List<Long> ids = Arrays.asList(1532349895093833729L,1533012537454157826L,1533012657583161345L);
int result = userMapper.deleteBatchIds(ids);
System.out.println(result > 0 ? "删除成功!" : "删除失败!");
System.out.println("受影响的行数为:" + result);
}
/**
* 测试根据Map集合中所设置的条件删除数据
*/
@Test
public void testDeleteByMap(){
//当前演示为根据name和age删除数据
//执行SQL为:DELETE FROM user WHERE name = ? AND age = ?
Map<String,Object> map = new HashMap<>();
map.put("name","Vz1 ");
map.put("age",211);
int result = userMapper.deleteByMap(map);
System.out.println(result > 0 ? "删除成功!" : "删除失败!");
System.out.println("受影响的行数为:" + result);
}
/**
* 测试根据id修改用户信息, 只修改改变的值, 其他信息保持原值
*/
@Test
public void testUpdateById(){
//执行SQL为: UPDATE user SET name=?, age=?, email=? WHERE id=?
User user = new User();
user.setId(5L);
user.setEmail("Vz@sina.com");
int result = userMapper.updateById(user);
System.out.println(result > 0 ? "修改成功!" : "修改失败!");
System.out.println("受影响的行数为:" + result);
}
/**
* 测试根据id查询用户数据
*/
@Test
public void testSelectById(){
User user = userMapper.selectById(1L);
System.out.println(user);
}
/**
* 根据多个id查询用户数据
*/
@Test
public void testSelectBatchIds(){
//执行SQL为:SELECT id,name,age,email FROM user WHERE id IN ( ? , ? , ? )
List<Long> ids = Arrays.asList(1L,2L,3L);
List<User> users = userMapper.selectBatchIds(ids);
users.forEach(System.out::println);
}
/**
* 根据Map所设置的条件查询用户
*/
@Test
public void testSelectByMap(){
//执行SQL为:SELECT id,name,age,email FROM user WHERE age = ?
Map<String,Object> map = new HashMap<>();
map.put("age",18);
List<User> users = userMapper.selectByMap(map);
users.forEach(System.out::println);
}
/**
* 测试根据id查询用户数据, 返回User对象
*/
@Test
public void testSelectUserById(){
User user = userMapper.selectUserById(1L);
System.out.println(user);
}
/**
* 测试根据id查询用户数据,返回map
*/
@Test
public void testSelectMapById(){
Map<String, Object> stringObjectMap = userMapper.selectMapById(1L);
System.out.println(stringObjectMap);
}
/**
* 查询总记录数
*/
@Test
public void testGetCount(){
//查询总记录数
//执行的SQL为:SELECT COUNT( * ) FROM user
long count = userService.count();
System.out.println("总记录数:" + count);
}
/**
* 批量插入
*/
@Test
public void saveBatchTest(){
List<User> list = new ArrayList<>();
for (int i = 1; i <= 10; i++) {
User user = new User();
user.setName("Vz"+i);
user.setAge(20+i);
list.add(user);
}
boolean b = userService.saveBatch(list);
System.out.println(b ? "添加成功!" : "添加失败!");
}
/**
* 批量删除
*/
@Test
public void removeBatchTest(){
ArrayList<Long> list = new ArrayList<>();
list.add(1533286393523769345L);
list.add(1533286394119360513L);
list.add(1533286394119360514L);
list.add(1533286394119360515L);
list.add(1533286394119360516L);
boolean b = userService.removeBatchByIds(list);
System.out.println("删除状态:" + b);
}
}
3 项目目录
总结
- 默认方法不够使用,可以自己在service层添加需要的方法
作为程序员第 151 篇文章,每次写一句歌词记录一下,看看人生有几首歌的时间,wahahaha …
Lyric: 秃鹰盘旋死盯着腐肉
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/110724.html