山东大学软件学院项目实训-创新实训-基于大模型的旅游平台(一)- Mybatis-Plus学习
user.setInfo("{\"age\": 24, \"intro\": \"英文老师\", \"gender\": \"female\"}");user.setInfo("{\"age\": 24, \"intro\": \"英文老师\", \"gender\": \"female\"}");// 查询名字中带o的,存款大于1000的人的id,username,info,balance字段。
·
目录
1.2 继承Mybatis-plus的BaseMapper接口
Mybatis-Plus学习
1.快速入门
1.1 引入Mybatis-Plus依赖
<dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.5.1</version> </dependency>
1.2 继承Mybatis-plus的BaseMapper接口
自定义的Mapper要继承Mybatis-plus的BaseMapper接口,泛型中填写实体类
public interface UserMapper extends BaseMapper<User> {
}
1.3 测试新增功能
@Test
void testInsert() {
User user = new User();
user.setId(5L);
user.setUsername("Lucy");
user.setPassword("123");
user.setPhone("18688990011");
user.setBalance(200);
user.setInfo("{\"age\": 24, \"intro\": \"英文老师\", \"gender\": \"female\"}");
user.setCreateTime(LocalDateTime.now());
user.setUpdateTime(LocalDateTime.now());
userMapper.insert(user);
}
新增结果:

2.常用注解
@TableName指定表名
@TableId:指定数据库中表的逐渐
@TableField: 指定表中普通字段与数据库中字段的对应关系
以User类举例:
@Data
@TableName("user")
public class User {
// 标记id为主键,类型为自增长
@TableId(value = "id", type = IdType.AUTO)
private Long id;
@TableField("username")
private String username;
@TableField("create_time")
private LocalDateTime createTime;
// 标记该字段在数据库对应表中不存在
@TableField(exist = false)
private String address;
}
3.常见配置
扫描包配置:
mybatis-plus:
type-aliases-package: com.test.mp.domain.po
mapper文件扫描配置:
mybatis-plus:
mapper-locations: classpath*:mapper/**/*.xml
id配置:
mybatis-plus:
global-config:
db-config:
id-type: auto
4.条件构造器
查询测试:
// 查询名字中带o的,存款大于1000的人的id,username,info,balance字段
@Test
void testWrapper(){
// 构建查询条件
QueryWrapper<User> wrapper = new QueryWrapper<>();
wrapper.select("id","username","info","balance");
wrapper.like("username","o");
wrapper.ge("balance",1000);
List<User> list = userMapper.selectList(wrapper);
System.out.println(list);
}
更新测试:
// 更新用户名为jack的余额为2000
@Test
void testWrapper(){
User user = new User();
user.setBalance(2000);
QueryWrapper<User> wrapper = new QueryWrapper<>();
wrapper.eq("username","jack");
userMapper.update(user,wrapper);
}
更新测试2:
// 更新id为1,2,4的用户的余额,扣除200
@Test
void testWrapper(){
List<Long> ids = new ArrayList<>(Arrays.asList(1L, 2L, 3L));
UpdateWrapper<User> wrapper = new UpdateWrapper<>();
wrapper.setSql("balance = balance - 200").in("id",ids);
userMapper.update(null,wrapper);
}
LambdaWrapper:
@Test
void testLambdaWrapper(){
LambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper<>();
wrapper.select(User::getId,User::getUsername,User::getInfo);
wrapper.like(User::getUsername,"o");
wrapper.ge(User::getBalance,1000);
List<User> list = userMapper.selectList(wrapper);
System.out.println(list);
}
5.IService接口基本用法
自定义Service接口需要继承Mybatis-plus的IService接口
同时实现类要去继承Mybatis-Plus的实现类
自定义的接口:
public interface IUserService extends IService<User> {
}
接口的实现类:
@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IUserService {
}
测试:
@Autowired
private IUserService userService;
@Test
void testService(){
// 新增:
User user = new User();
user.setUsername("llldasdasdsad");
user.setPassword("123");
user.setPhone("18688990011");
user.setBalance(200);
user.setInfo("{\"age\": 24, \"intro\": \"英文老师\", \"gender\": \"female\"}");
user.setCreateTime(LocalDateTime.now());
user.setUpdateTime(LocalDateTime.now());
userService.save(user);
}
查询:
@Test
void testService(){
User byId = userService.getById(2);
System.out.println(byId);
}
6.开发基础业务接口
6.1 新增用户接口
post请求,路径为/users
@RestController
@RequestMapping("/users")
public class UserController {
@Autowired
private IUserService userService;
// 新增接口
@PostMapping
public void addUser(@RequestBody User user){
userService.save(user);
}
}
6.2 根据id删除
@DeleteMapping("{id}")
public void deleteUserById(@PathVariable("id") Long id){
userService.removeById(id);
}
6.3 根据id查询
@GetMapping("{id}")
public User GetUserById(@PathVariable("id") Long id){
User byId = userService.getById(id);
return byId;
}
6.4 批量查询
@GetMapping
public List<User> GetUserByIds(@RequestParam("ids") List<Long> ids){
List<User> list = userService.listByIds(ids);
return list;
}
7.开发复杂业务接口
根据用户指定id扣除金额
Controller中:
@PutMapping
public void subAmount(@PathVariable("id") Long id,@PathVariable("money") int money){
userService.deductBalance(id,money);
}
业务接口中:
public interface IUserService extends IService<User> {
void deductBalance(Long id, int money);
}
实现类中:
@Override
public void deductBalance(Long id, int money) {
// 查询用户 , 直接调service自己的方法
User user = getById(id);
if(user == null || user.getStatus() == 2){
return ;
}
// 校验状态
if(user.getBalance() < money){
return ;
}
// 扣减余额
baseMapper.deductBalance(id,money);
}
UserMapper中:
@Update("update user set balance = balance - #{money} where id = #{id}")
void deductBalance(@Param("id") Long id, @Param("money") int money);
更多推荐

所有评论(0)