Java实训日记第六天——2023.6.12

这篇具有很好参考价值的文章主要介绍了Java实训日记第六天——2023.6.12。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、MyBatis-Plus

1.为什么有了MyBatis,还要使用MyBatis-Plus?
MyBatis: 对持久层封装的框架,只需要写接口和SQL语句。
MyBatis-Plus: 大多数持久层的开发量都是单表的增删改查,过于重复和疲劳。它增强了单表的增删改查,我们不再需要定义接口,不再需要定义持久层的映射文件,不再需要写SQL语句。

2.官方文档链接: https://baomidou.com/

二、将MyBatis-Plus框架整合到SpringBoot

1.导依赖
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.19</version>
        </dependency>
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.5.1</version>
        </dependency>
2.在启动类上开扫描

到[快速入门----->配置]复制并修改为自己的持久层完整包路径:mapper–>Copy Reference
Java实训日记第六天——2023.6.12

@MapperScan("com.baomidou.mybatisplus.samples.quickstart.mapper")
3.在application.yml中配关于数据库的连接

注意:一定要顶格写,否则会出现层次关系错误导致项目无法启动!
(其中,xxx为数据库名称,用户名和密码根据自己的改)

server:
  port: 8080
spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://127.0.0.1:3306/xxx?useSSL=false&useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
    username: root
    password: 123456

mybatis-plus:
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl  #sql日志打印
4.在idea中安装MyBatisX插件

Java实训日记第六天——2023.6.12

5.在idea中连上MySQL

Java实训日记第六天——2023.6.12
Java实训日记第六天——2023.6.12
Java实训日记第六天——2023.6.12
Java实训日记第六天——2023.6.12
自动生成:
Java实训日记第六天——2023.6.12
1.实体类
Java实训日记第六天——2023.6.12
2.主键的配置
Java实训日记第六天——2023.6.12
3.持久层接口
Java实训日记第六天——2023.6.12
4.服务层
Java实训日记第六天——2023.6.12
5.服务层的实现类
Java实训日记第六天——2023.6.12
6.生成resultMap,指定实体类Account和表Account的对应关系
Java实训日记第六天——2023.6.12

6.测试查询所有

1.要调用服务层对象,就先注入
Java实训日记第六天——2023.6.12
2.调用服务层对象
Java实训日记第六天——2023.6.12
3.服务层的接口
Java实训日记第六天——2023.6.12
4.生成实现类
Java实训日记第六天——2023.6.12
5.在服务层需要持久层对象
报错:
Java实训日记第六天——2023.6.12
处理方法一:
Java实训日记第六天——2023.6.12

处理方法二:
在接口上注入Java实训日记第六天——2023.6.12
+
Java实训日记第六天——2023.6.12
6.找文档[CRUD接口–>Mapper CRUD接口]Java实训日记第六天——2023.6.12

@Override
    public List<Account> queryAccounts() {
        List<Account> accounts = accountMapper.selectList(null);
        return accounts;
    }

7.加注解,用Swagger测试
Java实训日记第六天——2023.6.12
Java实训日记第六天——2023.6.12

三、完善增删改查功能

1.查询:

AccountServiceImpl:
@Override
    public Account login(Account account) {
        //构造查询条件
        LambdaQueryWrapper<Account> wrapper = new LambdaQueryWrapper<>();
        wrapper.eq(Account::getAccname,account.getAccname());
        wrapper.eq(Account::getAccpass,account.getAccpass());
        Account acc = accountMapper.selectOne(wrapper);
        return acc;
    }


AccountController:
    @GetMapping("/queryAccounts")
    @ApiOperation("列表显示")
    public R queryAccounts(){
        List<Account> accounts =accountService.queryAccounts();
        R r=new R(200,"查询所有成功",accounts);
        return r;
    }

2.增:

AccountServiceImpl:
@Override
    public void saveAccount(Account account) throws BusinessException {
        //判断账号是否重复
        LambdaQueryWrapper<Account> wrapper = new LambdaQueryWrapper();
        wrapper.eq(Account::getAccname,account.getAccname());
        Long count = accountMapper.selectCount(wrapper);
        if(count > 0){
            throw new BusinessException("账号已存在,添加失败");
        }
        //判断邮箱是否重复
        wrapper = new LambdaQueryWrapper();
        wrapper.eq(Account::getAccemail,account.getAccemail());
        count = accountMapper.selectCount(wrapper);
        if(count > 0){
            throw new BusinessException("邮箱已存在,添加失败");
        }
        accountMapper.insert(account);
    }


AccountController:
 @ApiOperation("添加用户信息")
    @PostMapping("/saveAccount")
    public R saveAccount(@Valid  @RequestBody SaveAccountVO accountVO) throws BusinessException {
        Account account = new Account();
        BeanUtils.copyProperties(accountVO,account);
        accountService.saveAccount(account);
        R r=new R(200,"添加成功",null);
        return r;
    }

3.改
在增的基础上,加上判断不等于自己,ne

AccountServiceImpl:
@Override
    public void updateAccount(Account account) throws BusinessException {
        //判断账号是否重复
        LambdaQueryWrapper<Account> wrapper = new LambdaQueryWrapper();
        wrapper.eq(Account::getAccname,account.getAccname());
        wrapper.ne(Account::getAccid,account.getAccid());

        Long count = accountMapper.selectCount(wrapper);
        if(count > 0){
            throw new BusinessException("账号已存在,修改失败");
        }
        //判断邮箱是否重复
        wrapper = new LambdaQueryWrapper();
        wrapper.eq(Account::getAccemail,account.getAccemail());
        wrapper.ne(Account::getAccid,account.getAccid());
        count = accountMapper.selectCount(wrapper);
        if(count > 0){
            throw new BusinessException("邮箱已存在,修改失败");
        }
        accountMapper.updateById(account);
    }


AccountController:
@PutMapping("/updateAccount")
    @ApiOperation("修改用户信息")
    public R abc(@RequestBody  AbcVO vo) throws BusinessException {
        Account account = new Account();
        BeanUtils.copyProperties(vo,account);
        accountService.updateAccount(account);
        R r=new R(200,"修改成功",null);
        return r;
    }

4.删除

AccountServiceImpl:
@Override
    public void deleteAccount(Integer accid) {
        accountMapper.deleteById(accid);
    }


AccountController:
@DeleteMapping("/deleteAccount/{accid}")
    @ApiOperation("根据id删除")
    public R deleteAccount(@PathVariable Integer accid){
        accountService.deleteAccount(accid);
        R r=new R(200,"删除成功",null);
        return r;
    }

四、逻辑删除

表中的数据仍存在,只是状态由0变为1(默认下)。
Java实训日记第六天——2023.6.12
在实体类字段上加上@TableLogic注解
Java实训日记第六天——2023.6.12
实际上发生的是修改请求,不是删除请求。

五、自动填充

Java实训日记第六天——2023.6.12
Java实训日记第六天——2023.6.12文章来源地址https://www.toymoban.com/news/detail-481806.html

到了这里,关于Java实训日记第六天——2023.6.12的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Java超级玛丽小游戏制作过程讲解 第六天 绘制背景

    我们新建一个BackGround类。 这段代码是一个名为`BackGround`的Java类,用于表示背景图像和场景。它具有以下属性和方法: 1. `bgImage`:表示当前场景要显示的图像的`BufferedImage`对象。 2. `sort`:记录当前是第几个场景的整数值。 3. `flag`:判断是否是最后一个场景的布尔值。 构造方

    2024年02月13日
    浏览(51)
  • Java后端入职第六天,Nginx搭建负载均衡+反向代理

    Nginx相信大家应该不陌生吧!是一个高性能web服务器,可以做负载均衡或者是反向代理,比如,把静态页面直接部署到到html,实现动静分离,一个服务器部署多个服务,缓解服务压力,等等,都可以利用Nginx实现。 这个理解比较简单,其实就是压力分摊,一个工程部署多个节

    2024年02月08日
    浏览(66)
  • 【学习日记2023.6.12】之nacos配置管理_Feign远程调用_Gateway服务网关

    Nacos除了可以做注册中心,同样可以做配置管理来使用。 6.1 统一配置管理 当微服务部署的实例越来越多,达到数十、数百时,逐个修改微服务配置就会让人抓狂,而且很容易出错。需要一种统一配置管理方案,可以集中管理所有实例的配置。 Nacos一方面可以将配置集中管理

    2024年02月09日
    浏览(56)
  • 第六天 OSPF基础

    一.基本概念 OSPF :开放式最短路径优先协议 无类别链路状态IGP动态路由协议 1.距离矢量协议:运行距离矢量路由协议的路由器周期性的泛洪自己的路由表。通过路由的交互,每台路由器都从相邻的路由器学习到路由,并且加载进自己的路由表中;对于网络中的所有路由器而

    2024年01月25日
    浏览(81)
  • MySQL学习笔记第六天

    1.1 什么是函数 函数在计算机语言的使用中贯穿始终,函数的作用是什么呢?它可以把我们经常使用的代码封装起来,需要的时候直接调用即可。这样既 提高了代码效率 ,又 提高了可维护性 。在SQL 中我们也可以使用函数对检索出来的数据进行函数操作。使用这些函数,可以

    2024年02月03日
    浏览(51)
  • QT 第六天 人脸识别系统

    .pro .h .cpp 一、在C++和C中static的用法? 首先,在C++中static修饰静态成员, 静态成员包括静态成员变量和静态成员函数。 静态成员变量: 1在修饰静态成员变量时,在定义成员变量前加static,权限一般为public, 2只是在类内声明,必须在类外定义,类外定义时可以

    2024年02月09日
    浏览(38)
  • Day6 打卡第六天

    给定两个字符串  s  和  t  ,编写一个函数来判断  t  是否是  s  的字母异位词。 注意: 若  s  和  t   中每个字符出现的次数都相同,则称  s  和  t   互为字母异位词。 示例 1: 数组其实就是一个简单哈希表,而且这道题目中字符串只有小写字符,那么就可以定义一

    2024年02月09日
    浏览(53)
  • 重生之我要学C++第六天

    这篇文章的主要内容是const以及权限问题、static、友元函数和友元类,希望对大家有所帮助,点赞收藏评论支持一下吧! 更多优质内容跳转: 专栏:重生之C++启程(文章平均质量分93) 目录   const以及权限问题 1.const修饰内置类型 (1).const修饰普通变量 (2).const修饰指针变量

    2024年02月14日
    浏览(39)
  • 【第六天】字符串的定义(上)

    @第六天(字符串) 字符串,顾名思义,就是用字符拼接成的文本值。字符串在储存上类似数组,,不仅字符串的长度可取,每一位的元素也可以取。在c#语言中,可以通过string类创建字符串。 在c#语言中,字符串必须包含在一堆双引号之内(“”),例如: 如果创建一个空的字

    2024年02月13日
    浏览(46)
  • 七天学会C语言-第六天(指针)

    指针变量与普通变量是C语言中的两种不同类型的变量,它们有一些重要的区别和联系。 普通变量 是一种存储数据的容器,可以直接存储和访问数据的值。: 在例子中,变量num是一个普通整数变量,它直接存储了值10。 指针变量 是一种特殊类型的变量,它存储的是内存地址

    2024年02月08日
    浏览(52)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包