1. 通用Mapper接口介绍 18
有关于通用Mapper接口,之前我们已经看到了,我们自己编写的Mapper接口继承自BaseMapper接口,由BaseMapper接口提供了很多单表的增删改查相关的操作方法,在入门案例中,我们测试了查询所有的操作。在这一章节,我们介绍一些简单的Mapper接口中的方法,主要是感受一下,Mapper接口中对于单表的增删改查的操作都有涉及。更加高级的一些操作,随后的章节会讲到。
1.1 Mapper接口-简单插入数据 18
插入一条数据
Course2ApplicationTests
//UserMapper简单添加 18
@Test
void insert(){
User user = new User();
user.setId(6L);
user.setName("Nike");
user.setAge(33);
user.setEmail("test6@powernode.com");
userMapper.insert(user);
}
看看数据库
1.2 Mapper接口-简单删除数据 19
根据id删除数据
Course2ApplicationTests
//UserMapper简单删除
@Test
void deleteOne(){
userMapper.deleteById(6L);
}
1.3 Mapper接口-简单修改数据 20
测试修改全部数据
Course2ApplicationTests
//UserMapper简单修改 20
@Test
void updateById(){
User user = new User();
user.setId(6L);
user.setName("迈克");
user.setAge(35);
user.setEmail("maike@powernode.com");
userMapper.updateById(user);
}
1.4 Mapper接口-简单查询数据 21
根据Id查询
Course2ApplicationTests
//UserMapper查询单个 21
@Test
void selectById(){
User user = userMapper.selectById(6L);
System.out.println(user);
}
1.5 小结 21
本章我们测试了通过接口提供的基本增删改查的实现,可以感受到,将来我们有这些增删改查需求的时候,直接找到对应的方法调用,由Mapper接口的代理对象就会直接给我们拼接好指定的SQL语句,完成查询。
本章节我们测试了一些基本的增删改查操作,有关于条件查询、分页查询等高级的查询操作,在随后章节会统一讲解。
2. 通用service接口介绍 22
除了Mapper接口,MybatisPlus还提供了IService接口和对应的实现类ServiceImpl,该实现类已经提供好了一些对应的Service相关的方法,在某些场景下,我们可以直接使用ServiceImpl提供的方法,实现对应的功能。
IService接口
IService接口中包含了service相关的一些增删改查方法
package com.powernode.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.powernode.domain.User;
import java.util.List;
//业务层接口 15
public interface UserService extends IService<User> {
//查询所有
List<User> selectList();
}
ServiceImpl实现类
ServiceImpl实现类提供了service相关的增删改查方法的实现
UserService接口继承自IService接口
UserServiceImpl类继承ServiceImpl
package com.powernode.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.powernode.domain.User;
import com.powernode.mapper.UserMapper;
import com.powernode.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
//业务层接口实现类 15
@Service
public class UserServiceImpl extends ServiceImpl<UserMapper,User> implements UserService {
@Autowired
private UserMapper userMapper;
@Override
public List<User> selectList() {
return userMapper.selectList(null);
}
}
注入UserService对象,测试相关方法
2.1 Service接口-简单插入数据 23
Course2ApplicationTests
//UserService添加 23
@Test
void insertService(){
User user = new User();
user.setId(7L);
user.setName("zhangsan");
user.setAge(35);
user.setEmail("zhangsan@powernode.com");
userService.save(user);
}
2.2 Service接口-简单删除数据 24
Course2ApplicationTests
//UserService删除 24
@Test
void deleteService(){
userService.removeById(7L);
}
2.3 Service接口-简单修改数据
Course2ApplicationTests
//UserService修改 25
@Test
void updateService(){
User user = new User();
user.setId(6L);
user.setAge(40);
userService.updateById(user);
}
2.4 Service接口-简单查询数据 26
Course2ApplicationTests
//UserService查询 26
@Test
void selectService(){
List<User> users = userService.selectList();
System.out.println(users);
}
2.5 小结 26
通过继承MybatisPlus提供的Service接口,我们既可以拓展自己的service方法,也可以使用现有的一些service方法
3. 自定义接口方法 27
MybatisPlus除了给我们提供了这些丰富的接口方法以外,对于我们自己的需求,也可以编写自定义的接口方法,我们通过自己编写SQL语句的形式,实现想要的SQL需求
3.1 自定义Mapper接口方法 27
Mapper接口中提供抽象方法
UserMapper
package com.powernode.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.powernode.domain.User;
import org.apache.ibatis.annotations.Mapper;
//持久层接口 14
@Mapper
public interface UserMapper extends BaseMapper<User> {
//自定义放啊,根据名字查询 27
User selectByName(String name);
}
提供映射配置文件,提供对应的SQL语句
UserMapper.xml
<?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.powernode.mapper.UserMapper">
<!-- 根据名字查询 27-->
<select id="selectByName" resultType="com.powernode.domain.User" parameterType="String">
select * from user where name = #{value}
</select>
</mapper>
测试自定义的Mapper接口方法
Course2ApplicationTests
//UserService查询 26
@Test
void myMethod(){
User user = userMapper.selectByName("Tom");
System.out.println(user);
}
3.2 小结 27
通过本章节的学习,我们学会了自定义接口的方法,自定义接口的语法规范和之前编写Mybatis的语法规范一样,所以可以看出,MybatisPlus是无侵入式的,也就是引入了MybatisPlus并不会对于原先的语法造成任何改变。