Mybatis-Plus的mapper、service
基本CURD
BaseMapper
BaseMapper是MyBatis-Plus提供的模板mapper,其中包含了基本的CRUD方法,泛型为操作的实体类型,Mapper 继承该接口后,无需编写 mapper.xml 文件,即可获得CRUD功能
@Repository
@Mapper
public interface UserMapper extends BaseMapper<User> {
Map<String,Object> selectMapById(Long id);
}
通用Service
MyBatis-Plus中有一个接口 IService和其实现类 ServiceImpl,封装了常见的业务层逻辑,
1、通用 Service CRUD 封装IService (opens new window)接口,进一步封装 CRUD 采用 get 查询单行 remove 删除 list 查询集合 page 分页 前缀命名方式区分 Mapper 层避免混淆,
2、泛型 T 为任意实体对象
3、建议如果存在自定义通用 Service 方法的可能,请创建自己的 IBaseService 继承 Mybatis-Plus 提供的基类对象
4、Wrapper 为 条件构造器
/**
* 接口
* UserService继承IService模板提供的基础功能
*/
public interface UserService extends IService<User> {
}
/**
* ServiceImpl实现了IService,提供了IService中基础功能的实现
* 若ServiceImpl无法满足业务需求,则可以使用自定的UserService定义方法,并在实现类中实现
*/
@Service
public class UserServiceImpl
extends ServiceImpl<UserMapper, User>
implements UserService {
}
这里有人就会问了:为什么我们自己创建的实现类还要继承ServiceImpl<UserMapper, User>
答:因为我们自己创建的UserService 接口继承了mybatis-plus的 IService 接口,而我们的UserServiceImpl 实现了UserService ,所以说IService 接口的方法都要继承给我们的UserService ,所以在实现类里面我们就要重写方法,但是我们不需要把每一个方法都写出来,因为IService 有自己的实现类
所以我们只需要在我们自己的实现类上继承IService的实现类就可以了
基本方法
不带构造器的查询
使用mapper方法
自定义xml写sql查询
建mapper
建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.atguigu.mybatisplus.mapper.UserMapper">
<!--自定义sql-->
<select id="selectMapById" resultType="java.util.Map">
select id,name,age,email from user where id =#{id}
</select>
</mapper>