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

这篇具有很好参考价值的文章主要介绍了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使用前,要保证,建表,他的那个表的这个属性是自增主键,不然,他并不会给你加主键,换句话说他会一直都是空的状态,它更像是用来获取自增的主键值,因为我们进行插入的时候,因为已经在表内设置了自增主键,就算你不是这么插入的,也还会是有自增的效果)

MyBatis第二课,灰度发布,@Results注解,使用xml书写mysql,mybatis,oracle,数据库

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

如果你重命名了MyBatis第二课,灰度发布,@Results注解,使用xml书写mysql,mybatis,oracle,数据库

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("恭喜成功");
        }
    }

MyBatis第二课,灰度发布,@Results注解,使用xml书写mysql,mybatis,oracle,数据库

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

MyBatis第二课,灰度发布,@Results注解,使用xml书写mysql,mybatis,oracle,数据库

MyBatis第二课,灰度发布,@Results注解,使用xml书写mysql,mybatis,oracle,数据库

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

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

MyBatis第二课,灰度发布,@Results注解,使用xml书写mysql,mybatis,oracle,数据库

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

MyBatis第二课,灰度发布,@Results注解,使用xml书写mysql,mybatis,oracle,数据库

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

于是产生了复用

MyBatis第二课,灰度发布,@Results注解,使用xml书写mysql,mybatis,oracle,数据库

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

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第二课,灰度发布,@Results注解,使用xml书写mysql,mybatis,oracle,数据库

学习XML的方式

1.需要配置对应数据库

2.指明xml路径(结尾,必须是Mapper结尾,前面的**表示前缀任意,换句话说我们后面其实Mapper都可以不用写,但是写一下更规范肯定还是)MyBatis第二课,灰度发布,@Results注解,使用xml书写mysql,mybatis,oracle,数据库

此时定义了一个UserInfoXML的类,那么那个类的xml文件就应该和这个类名字相同,然后写下面代码,就是一个简单的xml查询操作啦。

MyBatis第二课,灰度发布,@Results注解,使用xml书写mysql,mybatis,oracle,数据库

MyBatis第二课,灰度发布,@Results注解,使用xml书写mysql,mybatis,oracle,数据库

<?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这个文件写路径,所以也不回去怀疑)

MyBatis第二课,灰度发布,@Results注解,使用xml书写mysql,mybatis,oracle,数据库

1.增:(还是先定义方法)MyBatis第二课,灰度发布,@Results注解,使用xml书写mysql,mybatis,oracle,数据库

MyBatis第二课,灰度发布,@Results注解,使用xml书写mysql,mybatis,oracle,数据库

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

MyBatis第二课,灰度发布,@Results注解,使用xml书写mysql,mybatis,oracle,数据库

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

MyBatis第二课,灰度发布,@Results注解,使用xml书写mysql,mybatis,oracle,数据库​​​​​​​文章来源地址https://www.toymoban.com/news/detail-797673.html

到了这里,关于MyBatis第二课,灰度发布,@Results注解,使用xml书写mysql的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • MSTP多生成树协议(第二课)

    MSTP负载均衡 实验  需求     配置步骤

    2024年02月12日
    浏览(24)
  • Spark第二课RDD的详解

    RDD JAVA中的IO 1.小知识点穿插 1. 装饰者设计模式 装饰者设计模式:本身功能不变,扩展功能. 举例: 数据流的读取 一层一层的包装,进而将功能进行进一步的扩展 2.sleep和wait的区别 本质区别是字体不一样,sleep斜体,wait正常 斜体是静态方法 sleep:静态方法,和对象无关 t1.sleep 当前休

    2024年02月11日
    浏览(37)
  • Python第二课 : Python语法基础

    一:标识符 1.第一个字母必须是字母表中字母或下划线_,python可以使用中文汉字。 2.标识符的其他的部分由字母、数字和下划线或中文汉字组成。 3.标识符对大小写敏感。 我们先来介绍标识符,标识符,其实就是我们的一些。什么是呢?比如说print()打印输出,

    2023年04月08日
    浏览(33)
  • STP和MTP(第二十二课)

    2、如何实现 1)在MSTP网络种,引入了域的概念,称为MST域 2)每一个MST域中包含一个或多个“生成树”称为“实例” 3)每个“实例生成树”都可以绑定vlan,实现vlan数据流的负载分担/负载均衡 4)默认情况下,所有的vlan都属于“实例树0:即:instance 0” 5)不同的“实例树”、

    2024年02月15日
    浏览(41)
  • 【Git】第二课:git安装和配置

    🧑 作者简介 :阿里巴巴嵌入式技术专家,深耕嵌入式+人工智能领域,具备多年的嵌入式硬件产品研发管理经验。 📒 博客介绍 :分享嵌入式开发领域的相关知识、经验、思考和感悟,欢迎关注。提供嵌入式方向的学习指导、简历面试辅导、技术架构设计优化、开发外包等服

    2024年03月23日
    浏览(24)
  • k8s使用ingress实现应用的灰度发布升级

    v1是1.14.0版本nginx ,实操时候升级到v2是1.20.0版本nginx,来测试灰度发布实现过程 一、方案:使用ingress实现应用的灰度发布 1、服务端:正常版本v1,灰度升级版本v2 2、客户端:带有请求头version=v2标识的请求访问版本v2,其他的请求访问版本v1 3、待版本v2稳定后,所有请求切换

    2024年01月24日
    浏览(38)
  • KAFKA第二课之生产者(面试重点)

    1.1 生产者消息发送流程 在消息发送的过程中,涉及到了两个线程——main线程和Sender线程。在main线程中创建了一个双端队列RecordAccumulator。main线程将消息发送给RecordAccumulator,Sender线程不断从RecordAccumulator中拉取消息发送到Kafka Broker。 生产者如何发送的? 现在Main线程中将数

    2024年02月13日
    浏览(27)
  • Kafka第二课-代码实战、参数配置详解、设计原理详解

    引入依赖 生产者代码以及参数详解 消费者代码以及参数详解 实体类 引入基本依赖 配置application.yml 当配置ack-mode: MANUAL_IMMEDIATE时,需要手动在消费者提交offset,否则会一直重复消费 消费者 测试,访问生产者控制层,可以自动监听到消费者 Kafka核心总控制器Controller 在Kafka集

    2024年02月16日
    浏览(23)
  • 剪枝与重参第二课:修剪方法和稀疏训练

    手写AI推出的全新模型剪枝与重参课程。记录下个人学习笔记,仅供自己参考。 本次课程主要讲解修剪方法和稀疏训练。 课程大纲可看下面的思维导图 修剪方法 主要包含训练后剪枝和训练时剪枝两种方法。 下图展示了这两种常见的剪枝方法的流程: 1.1 经典框架:训练-剪枝

    2023年04月11日
    浏览(26)
  • 【STM32】基础知识 第二课 初识 STM32

    ARM 公司: 只做内核设计和 IP 授权, 不参与芯片设计. 对比项 Cortex-A (Application) Cortex-R (Real-time) Cortex-M (Microcontroller) 特点 高时钟频率, 长流水线, 高性能 较高时钟频率, 较长的流水线, 实时性强 时钟频率较低, 通常较短的流水线, 超低功耗 应用场景 移动计算, 智能手机, 平板电脑

    2024年02月02日
    浏览(32)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包