MyBatis第二课,灰度发布,@Results注解,使用xml书写mysql

 

目录

打印MyBatis的日志配置:

灰度发布:指发布环境,比如发布环境有200台机器,发布的时候是一批一批的机器的发布

2.删除与修改

使用@Results注解,这样就和上面的别名一个意思,column是数据库的列

自动转驼峰(优雅,最推荐使用)

学习XML的方式


 //数据库建表代码
CREATE TABLE userInfo (
    id INT NOT NULL AUTO_INCREMENT,
    username VARCHAR(127) NOT NULL,
    password VARCHAR(127) NOT NULL,
    age INT,
    gender INT,
    phone VARCHAR(15),
    delete_flag INT,
    create_time DATETIME DEFAULT NOW(),
    update_time DATETIME DEFAULT NOW(),
    PRIMARY KEY (id)
);

MyBatis:用于去简化数据库操作

1.引入依赖

  <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.3.0</version>
        </dependency>

2.配置数据库

spring:
  datasource:
#    java100对应的意思是创建的数据库的名称
    url: jdbc:mysql://127.0.0.1:3306/java100?characterEncoding=utf8&useSSL=false
    username: root
    password: lcl15604007179
    driver-class-name: com.mysql.cj.jdbc.Driver
    mybatis:
      mapper-locations: classpath:mapper/*Mapper.xml
      configuration: # 配置打印 MyBatis 执行的 SQL
        log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
        map-underscore-to-camel-case: true  #自动驼峰转换

云服务器其实也是一个机器。

打印MyBatis的日志配置:

因为日志肯定也是影响性能的,打印的日志越多,受影响越大

//只出现开发的环境中,不要出现在线上环境
//开发环境(本地开发,一些公司也会提供单独的服务器让员工进行开发调试) -(有开发环境的数据库)

//测试环境(给测试人员使用的)。   测试环境的数据库/配置等

下面两个通常使用同一个数据库
//预发布环境(和线上环境一样,但是不对外提供服务)
//发布环境(线上环境)
mybatis:
      mapper-locations: classpath:mapper/*Mapper.xml
      configuration: # 配置打印 MyBatis 执行的 SQL
        log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
        map-underscore-to-camel-case: true  #自动驼峰转换

灰度发布:指发布环境,比如发布环境有200台机器,发布的时候是一批一批的机器的发布

通常刚开始就发布一台,也就是1/200的流量进入了,观察一段时间之后,继续观察,如果没有问题,就会继续发布(可能发布20台) 

发布=上线

如何获取自增id,使用注解(注意哈,你这个自增id使用前,要保证,建表,他的那个表的这个属性是自增主键,不然,他并不会给你加主键,换句话说他会一直都是空的状态,它更像是用来获取自增的主键值,因为我们进行插入的时候,因为已经在表内设置了自增主键,就算你不是这么插入的,也还会是有自增的效果)

参数为对象是对参数进行重命名:

如果你重命名了

2.删除与修改

//删除数据库内容
@Delete("delete from userInfo where id=#{id}")
    Integer delete(Integer id);
//修改数据库内容
@Update("update userInfo set age=#{age} where id=#{id}")
    Integer update(UserInfo userInfo);




//下面是测试代码
 @Test
    void delete() {
        userInfoMapper.delete(1);
    }

    @Test
    void update() {
        UserInfo userInfo=new UserInfo();
        userInfo.setAge(8);
        userInfo.setId(3);
        Integer result=userInfoMapper.update(userInfo);
        if(result>0){
            log.info("恭喜成功");
        }
    }

查询的问题:(create_time对应实体中createTime,面对这种情况的解决方法)

但是在开发中,属性名字和字段名字不一样是很常见的,我们该怎么办呢?

使用*和不用*效率不同,全量字段就全部写一遍即可。

使用@Results注解,这样就和上面的别名一个意思,column是数据库的列

但是一直这样也很麻烦,难道我执行一个查询,就要去写这么多东西?

于是产生了复用

自动转驼峰(优雅,最推荐使用)

mybatis:
      mapper-locations: classpath:mapper/*Mapper.xml
      configuration: # 配置打印 MyBatis 执行的 SQL
        log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
        map-underscore-to-camel-case: true  #自动驼峰转换

以上的方式的结果,都可以获取这个值

学习XML的方式

1.需要配置对应数据库

2.指明xml路径(结尾,必须是Mapper结尾,前面的**表示前缀任意,换句话说我们后面其实Mapper都可以不用写,但是写一下更规范肯定还是)

此时定义了一个UserInfoXML的类,那么那个类的xml文件就应该和这个类名字相同,然后写下面代码,就是一个简单的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.example.myBatis.mapper.UserInfoXMLMapper">
    <select id="selectAll" resultType="com.example.myBatis.mapper.UserInfo">
     select *from userinfo;
    </select>
</mapper>

类里面的代码

package com.example.myBatis.mapper;
import org.apache.ibatis.annotations.Mapper;

import java.util.List;
@Mapper
//容器
public interface UserInfoXMLMapper  {
    List<UserInfo> selectAll() ;
}

对应的Test代码

package com.example.myBatis.mapper;

import lombok.extern.slf4j.Slf4j;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

import java.util.List;

@Slf4j                 //用于输出日志       可以避免写log...很多的代码
@SpringBootTest        //用于让Test文件有权限来访问Spring项目
class UserInfoXMLMapperTest {
//属性注入
    @Autowired
    private UserInfoXMLMapper userInfoXMLMapper;
    @Test
    void selectAll() {
        List<UserInfo>userInfos=userInfoXMLMapper.selectAll();
        log.info(userInfos.toString());
    }
}

⚠️:很严重的问题:我调了两天才发现,我们在导入MyBatis的时候,有可能她就会自动在properties这个文件中,写关于MyBatis的xml路径,这样就会和我们在yml里面写的不同,也就会造成冲突,所以说当出现路径不匹配,并且你自己写的路径也都没毛病的时候,不妨再看看properties文件(真的难找,因为肯定没在properties这个文件写路径,所以也不回去怀疑)

1.增:(还是先定义方法)

 <insert id="insert">
        insert  into userInfo(username,password,age,gender,phone)
        values(#{username},#{password},#{age},#{gender},#{phone})
    </insert>

懒得写了,反正挺简单,一个类,一个xml,一个test测试一下就好啦

​​​​​​​

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/319123.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

H5网站封装成App的高效转换之旅

在移动互联网时代&#xff0c;App&#xff08;应用程序&#xff09;和H5&#xff08;HTML5网站&#xff09;是两种常见的移动解决方案。App通常提供更流畅的用户体验和更丰富的功能&#xff0c;而H5网站则以其开发成本低、更新快捷和无需安装等优势受到青睐。尽管如此&#xff…

Apache-Common-Pool2中对象池的使用方式

最近在工作中&#xff0c;对几个产品的技术落地进行梳理。这个过程中发现一些朋友对如何使用Apache的对象池存在一些误解。所以在写作“业务抽象”专题的空闲时间里&#xff0c;本人觉得有必要做一个关于对象池的知识点和坑点讲解。Apache Common-Pool2 组件最重要的功能&#…

【快速解决】保姆级Anaconda安装教程

目录 第一步 ​编辑第二步 ​编辑第三步 第四步 第五步 第六步 ​编辑 第七步 第八步 第九步 第一步 在anaconda清华大学开源软件镜像站下载anaconda。点击这里进入 我这里选的是windows-x86_64。 第二步 下载好以后进行安装 第三步 第四步 第五步 选择…

【操作系统】在阅读论文:OrcFS: Orchestrated file system for flash storage时需要补充的基础知

在阅读论文&#xff1a;OrcFS: Orchestrated file system for flash storage是需要补充的基础知识 这篇论文是为了解决软件层次之间的信息冗余问题 To minimize the disk traffic, the file system buffers the updates and then flushes them to the disk as a single unit, …

通达信波动指数指标公式,识别盘整还是趋势

波动指数(Choppiness Index)是由澳大利亚商品交易员E.W. Dreiss开发的技术指标&#xff0c;用来判断市场是盘整还是趋势。该指标属于非方向性指标&#xff0c;不用于判断市场方向&#xff0c;而仅用于识别市场趋势。 指标的取值范围为0到100&#xff0c;数值越高&#xff0c;表…

[足式机器人]Part2 Dr. CAN学习笔记-Advanced控制理论 Ch04-12+13 不变性原理+非线性系统稳定设计

本文仅供学习使用 本文参考&#xff1a; B站&#xff1a;DR_CAN Dr. CAN学习笔记-Advanced控制理论 Ch04-1213 不变性原理非线性系统稳定设计 1. Invariance Princilpe-LaSalle;s Theorem不变性原理2. Nonlinear Basic Feedback Stabilization 非线性系统稳定设计 1. Invarianc…

Visual Studio Code1.67版本已正式发布,新增Rust指南

Visual Studio Code1.67版本已正式发布&#xff0c;该版本包含大量增强生产力的更新项&#xff1a; 资源管理器文件嵌套 通过这次更新&#xff0c;用于浏览和管理文件和文件夹的Visual Studio Code的资源管理器工具现在支持基于名称嵌套相关文件。 资源管理器现在支持根据文…

python学习笔记10(选择结构2、循环结构1)

&#xff08;一&#xff09;选择结构2 1、if……else……语句 #&#xff08;1&#xff09;基本格式 numbereval(input("请输入您的6位中奖号码&#xff1a;")) if number123456:print("恭喜您&#xff0c;中奖了") else:print("未中奖")#&…

JVM内存结构 vs. Java对象模型 vs. Java内存模型

文章目录 0.三者的区别1.JVM内存结构2.Java对象模型3.Java内存模型&#xff08;JMM&#xff09;3.1 为什么需要JMM3.2 JMM是规范3.3 JMM是工具类和关键字的原理3.4 最重要的三点内容 0.三者的区别 JVM内存结构&#xff1a;和Java虚拟机的运行时区域有关。 Java对象模型&#…

负荷预测 | Python基于CEEMDAN-VMD-BiGRU的短期电力负荷时间序列预测

目录 效果一览基本介绍程序设计参考资料 效果一览 基本介绍 提出一种分解去噪、重构分解的 CEEMDAN-VMD-BiGRU组合预测方法&#xff1a; 1 采用CEEMDAN将原始电力负荷数据分解成一组比较稳定的子序列&#xff0c;联合 小波阈值法将含有噪声的高频分量去噪&#xff0c;保留含有信…

竞赛练一练 第29期:GESP和电子学会相关题目练习

CIE一级2021.09_无奈的Jaime 小宝在房间吵闹&#xff0c;妈妈让Jaime想办法安抚小宝。Jaime在房间来回走动思考方法。最后也没想出方法只能摊开双手说 “sorry&#xff01;”。 1. 准备工作 &#xff08;1&#xff09;添加背景&#xff1a;Bedroom 3&#xff1b; &#xff0…

[解决方案]运行时错误‘53’,文件未找到:MathPage.WLL

问题描述 mathtype使用报错,运行时错误‘53’,文件未找到:MathPage.WLL 解决方案 一、首先确定自己电脑的位数(这里默认大家的电脑都是64位) 二、右击MathType桌面图标,点击“打开文件所在位置”,然后找到MathPage.WLL文件所在位置 MathPage.WLL位置:D:\mathtype\…

Video接口介绍

屏库 https://m.panelook.cn/index_cn.php Open LDI, open lvds display interface OpenLDI and LVDS是兼容的&#xff0c; 是一种电平 https://www.ti2k.com/178597.html MIPI DSI/Camera crosLink FPD-LINK(Flat panel display link)是National(TI) LVDS技术&#xff0c; …

EI论文复现:考虑多能互补的综合能源系统/虚拟电厂/微电网优化运行程序代码!

本程序参考EI论文《基于多能互补的热电联供型微网优化运行》&#xff0c;文章通过储能设备解耦热电联系&#xff0c;建立基于多能互补的综合能源系统/虚拟电厂/微电网优化运行模型。模型包含系统供给侧的多能互补协调与需求侧的综合能源响应两个方面&#xff0c;使供给侧通过能…

Java内存模型之重排序

文章目录 1.什么是重排序2.重排序的好处3.重排序的三种情况4.用volatile修正重排序问题 1.什么是重排序 首先来看一个代码案例&#xff0c;尝试分析一下 x 和 y 的运行结果。 import java.util.concurrent.CountDownLatch;/*** 演示重排序的现象&#xff0c;直到达到某个条件…

解决MPICH的GPU初始化失败:一次深入探索

今天来分享“MPICH&#xff1a;MPII_Init_thread(222): gpu_init failed”这个问题的解决方式 文章目录 前言问题原因解决方案 前言 如果在安装MPICH的时候没有注意要一些选项&#xff0c;那么当使用mpicxx mpi_send.cpp -o send && mpirun -n 2 ./send进行编译输出的…

Linux之静态库和动态库

目录 一、前言 二、对于库的理解 三、静态库 四、动态库 五、动静态库的加载 一、前言 在之前&#xff0c;我们讲了静态库和动态库&#xff0c;详情请跳转&#xff1a;静态库和动态库 下面我们将从工程师的角度&#xff0c;去了解静态库和动态库的形成过程&#xff0c;以…

Android平台RTMP推送|轻量级RTSP服务|GB28181设备接入模块之实时快照保存JPG还是PNG?

JPG还是PNG&#xff1f; JPG和PNG是两种常见的图片文件格式&#xff0c;在压缩方式、图像质量、透明效果和可编辑性等方面存在显著差异。 压缩方式&#xff1a;JPG是一种有损压缩格式&#xff0c;通过丢弃图像数据来减小文件大小&#xff0c;因此可能会损失一些图像细节和质量…

华为设备登录安全配置案例

知识改变命运&#xff0c;技术就是要分享&#xff0c;有问题随时联系&#xff0c;免费答疑&#xff0c;欢迎联系&#xff01; 厦门微思网络​​​​​​ https://www.xmws.cn 华为认证\华为HCIA-Datacom\华为HCIP-Datacom\华为HCIE-Datacom Linux\RHCE\RHCE 9.0\RHCA\ Oracle O…

【现代密码学】笔记9-10.3-- 公钥(非对称加密)、混合加密理论《introduction to modern cryphtography》

【现代密码学】笔记9-10.3-- 公钥&#xff08;非对称加密&#xff09;、混合加密理论《introduction to modern cryphtography》 写在最前面8.1 公钥加密理论随机预言机模型&#xff08;Random Oracle Model&#xff0c;ROM&#xff09; 写在最前面 主要在 哈工大密码学课程 张…