微服务项目:尚融宝(3)(上手复习mybatisplus)

本文涉及的产品
云原生网关 MSE Higress,422元/月
注册配置 MSE Nacos/ZooKeeper,118元/月
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
简介: MP中的基本CRUD在内置的BaseMapper中都已得到了实现。

放弃幻想,认清现实,准备斗争


一、通用Mapper



MP中的基本CRUD在内置的BaseMapper中都已得到了实现。

创建MapperTests测试类:


@SpringBootTest
public class MapperTests {
    @Resource
    private UserMapper userMapper;
}



1、Create


@Test
public void testInsert(){
    User user = new User();
    user.setName("Helen");
    user.setAge(18);
    //不设置email属性,则生成的动态sql中不包括email字段
    int result = userMapper.insert(user);
    System.out.println("影响的行数:" + result); //影响的行数
    System.out.println("id:" + user.getId()); //id自动回填
}



结果


2883b6be06a84572b1dffb944a11d2e7.png

a535d20265a5429eb2e79f4a8da2890c.png



2、Retrieve


  @Test
    public void testSelect(){
        //按id查询
        User user = userMapper.selectById(1);
        System.out.println(user);
        //按id列表查询
        List<User> users = userMapper.selectBatchIds(Arrays.asList(1, 2, 3));
        users.forEach(System.out::println);
        //按条件查询
        Map<String, Object> map = new HashMap<>();
        map.put("name", "Helen"); //注意此处是表中的列名,不是类中的属性名
        map.put("age", 18);
        List<User> users1 = userMapper.selectByMap(map);
        users1.forEach(System.out::println);
    }



结果


1187e0d15b424ca1bcd876dc5a73fe83.png

ce40b6434aac46509e4fe435e40b7e15.png


3、Update


@Test
public void testUpdate(){
    User user = new User();
    user.setId(1L);
    user.setAge(28);
    //注意:update时生成的sql自动是动态sql
    int result = userMapper.updateById(user);
    System.out.println("影响的行数:" + result);
}



结果


2ba1473d30cf4971bf8e8e19f731f6bf.png


4、Delete


@Test
public void testDelete(){
    int result = userMapper.deleteById(5);
    System.out.println("影响的行数:" + result);
}



结果


f0ae0b14bb6b47bbb8a1c2eda4a066f2.png


二、通用Service



MP中有一个接口 IService和其实现类 ServiceImpl,封装了常见的业务层逻辑


1、创建Service接口


public interface UserService extends IService<User> {
}



2、创建Service实现类


创建 impl 包,创建 UserServiceImpl,继承 ServiceImpl,实现 UserService


@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {
}



3、创建测试类


创建ServiceTests


package com.atguigu.mybatisplus;
@SpringBootTest
public class ServiceTests {
    @Resource
    private UserService userService;
}



4、测试记录数


@Test
public void testCount(){
    int count = userService.count();
    System.out.println("总记录数:" + count);
}



结果


362ae34d6bec4c619edc3281c0798204.png


5、测试批量插入


 @Test
    public void testSaveBatch(){
        // SQL长度有限制,海量数据插入单条SQL无法实行,
        // 因此MP将批量插入放在了通用Service中实现,而不是通用Mapper
        ArrayList<User> users = new ArrayList<>();
        for (int i = 0; i < 5; i++) {
            User user = new User();
            user.setName("Helen" + i);
            user.setAge(10 + i);
            users.add(user);
        }
        userService.saveBatch(users);
    }



三、自定义Mapper



当通用Mapper无法满足我们的需求时,我们可以自定义基于Mapper接口的xml文件,并在xml文件中配置SQL语句


1、接口方法定义


在UserMapper接口中定义如下方法


List<User> selectAllByName(String name);


2、创建xml文件


在resources目录中创建mapper目录,创建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.atguigu.mybatisplus.mapper.UserMapper">
   <sql id="Base_Column_List">
       id, name, age, email
   </sql>
    <select id="selectAllByName" resultType="com.atguigu.mybatisplus.entity.User">
        select
        <include refid="Base_Column_List"/>
        from user
        where
        name = #{name}
    </select>
</mapper>



注意:MP中mapper目录是持久层映射文件的默认目录,如果是其他目录,需要配置mapper-locations,例如:

mybatis-plus.mapper-locations=classpath:xml/*.xml


3、测试条件查询


在MapperTests中创建如下测试用例


@Test
public void testSelectAllByName(){
    List<User> users = userMapper.selectAllByName("Helen");
    users.forEach(System.out::println);
}



四、自定义Service



1、添加接口方法


UserService中添加接口方法

List<User> listAllByName(String name);



2、实现接口方法


@Override
public List<User> listAllByName(String name) {
    // baseMapper对象指向当前业务的mapper对象
    return baseMapper.selectAllByName("Helen");
}



相关文章
|
4月前
|
微服务
jeecg微服务项目调用接口报错Token验证失效的解决方法
jeecg微服务项目调用接口报错Token验证失效的解决方法
|
23天前
|
Java 数据库连接 mybatis
成功解决: Invalid bound statement (not found) 在已经使用mybatis的项目里引入mybatis-plus,结果不能共存的解决
这篇文章讨论了在已使用MyBatis的项目中引入MyBatis-Plus后出现的"Invalid bound statement (not found)"错误,并提供了解决方法,主要是通过修改yml配置文件来解决MyBatis和MyBatis-Plus共存时的冲突问题。
成功解决: Invalid bound statement (not found) 在已经使用mybatis的项目里引入mybatis-plus,结果不能共存的解决
|
27天前
|
Java 关系型数据库 MySQL
1、Mybatis-Plus 创建SpringBoot项目
这篇文章是关于如何创建一个SpringBoot项目,包括在`pom.xml`文件中引入依赖、在`application.yml`文件中配置数据库连接,以及加入日志功能的详细步骤和示例代码。
|
29天前
|
SQL Java 数据库连接
springboot+mybatis+shiro项目中使用shiro实现登录用户的权限验证。权限表、角色表、用户表。从不同的表中收集用户的权限、
这篇文章介绍了在Spring Boot + MyBatis + Shiro项目中,如何使用Shiro框架实现登录用户的权限验证,包括用户、角色和权限表的设计,以及通过多个表查询来收集和验证用户权限的方法和代码实现。
springboot+mybatis+shiro项目中使用shiro实现登录用户的权限验证。权限表、角色表、用户表。从不同的表中收集用户的权限、
|
2月前
|
Java 数据库连接 Spring
搭建 spring boot + mybatis plus 项目框架并进行调试
搭建 spring boot + mybatis plus 项目框架并进行调试
58 4
|
27天前
|
druid Java 数据库连接
SpringBoot项目整合MybatisPlus持久层框架+Druid数据库连接池,以及实现增删改查功能
SpringBoot项目整合MybatisPlus和Druid数据库连接池,实现基本的增删改查功能。
140 0
|
3月前
|
Java 数据库连接 数据库
大事件后端项目05-----springboot整合mybatis
大事件后端项目05-----springboot整合mybatis
大事件后端项目05-----springboot整合mybatis
|
2月前
|
负载均衡 Java 开发者
如何在Spring Boot项目中实现微服务架构?
如何在Spring Boot项目中实现微服务架构?
|
2月前
|
Java 数据库连接 Maven
文本,使用SpringBoot工程创建一个Mybatis-plus项目,Mybatis-plus在编写数据层接口,用extends BaseMapper<User>继承实体类
文本,使用SpringBoot工程创建一个Mybatis-plus项目,Mybatis-plus在编写数据层接口,用extends BaseMapper<User>继承实体类
|
2月前
|
消息中间件 负载均衡 Java
最容易学会的springboot gralde spring cloud 多模块微服务项目
最容易学会的springboot gralde spring cloud 多模块微服务项目