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);
	}

基础篇_自定义

看看数据库

基础篇_User_02

1.2 Mapper接口-简单删除数据  19

根据id删除数据

Course2ApplicationTests

//UserMapper简单删除
	@Test
	void deleteOne(){
		userMapper.deleteById(6L);
	}

基础篇_自定义_03

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);
	}

基础篇_自定义_04

基础篇_Test_05

1.4 Mapper接口-简单查询数据   21

根据Id查询

Course2ApplicationTests

//UserMapper查询单个  21
	@Test
	void selectById(){
		User user = userMapper.selectById(6L);
		System.out.println(user);
	}

基础篇_Test_06

1.5 小结  21

本章我们测试了通过接口提供的基本增删改查的实现,可以感受到,将来我们有这些增删改查需求的时候,直接找到对应的方法调用,由Mapper接口的代理对象就会直接给我们拼接好指定的SQL语句,完成查询。

本章节我们测试了一些基本的增删改查操作,有关于条件查询、分页查询等高级的查询操作,在随后章节会统一讲解。

2. 通用service接口介绍   22

除了Mapper接口,MybatisPlus还提供了IService接口和对应的实现类ServiceImpl,该实现类已经提供好了一些对应的Service相关的方法,在某些场景下,我们可以直接使用ServiceImpl提供的方法,实现对应的功能。

IService接口

基础篇_自定义_07

 IService接口中包含了service相关的一些增删改查方法

基础篇_Test_08

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实现类


基础篇_Test_09

ServiceImpl实现类提供了service相关的增删改查方法的实现

基础篇_Test_10

UserService接口继承自IService接口


基础篇_User_11

UserServiceImpl类继承ServiceImpl

基础篇_Test_12

基础篇_Test_13

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对象,测试相关方法

基础篇_Test_14

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);
	}

基础篇_自定义_15

基础篇_Test_16

2.2 Service接口-简单删除数据    24

Course2ApplicationTests

//UserService删除   24
	@Test
	void deleteService(){
		userService.removeById(7L);
	}

基础篇_Test_17

2.3 Service接口-简单修改数据

Course2ApplicationTests

//UserService修改   25
	@Test
	void updateService(){
		User user = new User();
		user.setId(6L);
		user.setAge(40);

		userService.updateById(user);
	}

基础篇_自定义_18

基础篇_Test_19

2.4 Service接口-简单查询数据  26

Course2ApplicationTests

//UserService查询   26
	@Test
	void selectService(){
		List<User> users = userService.selectList();
		System.out.println(users);
	}

基础篇_User_20

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语句

基础篇_User_21

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);
	}

基础篇_自定义_22

3.2 小结  27

通过本章节的学习,我们学会了自定义接口的方法,自定义接口的语法规范和之前编写Mybatis的语法规范一样,所以可以看出,MybatisPlus是无侵入式的,也就是引入了MybatisPlus并不会对于原先的语法造成任何改变。