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=falseusername: rootpassword: lcl15604007179driver-class-name: com.mysql.cj.jdbc.Drivermybatis:mapper-locations: classpath:mapper/*Mapper.xmlconfiguration: # 配置打印 MyBatis 执行的 SQLlog-impl: org.apache.ibatis.logging.stdout.StdOutImplmap-underscore-to-camel-case: true  #自动驼峰转换

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

打印MyBatis的日志配置:

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

//只出现开发的环境中,不要出现在线上环境
//开发环境(本地开发,一些公司也会提供单独的服务器让员工进行开发调试) -(有开发环境的数据库)//测试环境(给测试人员使用的)。   测试环境的数据库/配置等下面两个通常使用同一个数据库
//预发布环境(和线上环境一样,但是不对外提供服务)
//发布环境(线上环境)
mybatis:mapper-locations: classpath:mapper/*Mapper.xmlconfiguration: # 配置打印 MyBatis 执行的 SQLlog-impl: org.apache.ibatis.logging.stdout.StdOutImplmap-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);//下面是测试代码@Testvoid delete() {userInfoMapper.delete(1);}@Testvoid 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.xmlconfiguration: # 配置打印 MyBatis 执行的 SQLlog-impl: org.apache.ibatis.logging.stdout.StdOutImplmap-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 {
//属性注入@Autowiredprivate UserInfoXMLMapper userInfoXMLMapper;@Testvoid 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测试一下就好啦

​​​​​​​

这篇关于MyBatis第二课,灰度发布,@Results注解,使用xml书写mysql的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/605115

相关文章

MySQL更新某个字段拼接固定字符串的实现

《MySQL更新某个字段拼接固定字符串的实现》在MySQL中,我们经常需要对数据库中的某个字段进行更新操作,本文就来介绍一下MySQL更新某个字段拼接固定字符串的实现,感兴趣的可以了解一下... 目录1. 查看字段当前值2. 更新字段拼接固定字符串3. 验证更新结果mysql更新某个字段拼接固定字符串 -

C++ Sort函数使用场景分析

《C++Sort函数使用场景分析》sort函数是algorithm库下的一个函数,sort函数是不稳定的,即大小相同的元素在排序后相对顺序可能发生改变,如果某些场景需要保持相同元素间的相对顺序,可使... 目录C++ Sort函数详解一、sort函数调用的两种方式二、sort函数使用场景三、sort函数排序

python连接本地SQL server详细图文教程

《python连接本地SQLserver详细图文教程》在数据分析领域,经常需要从数据库中获取数据进行分析和处理,下面:本文主要介绍python连接本地SQLserver的相关资料,文中通过代码... 目录一.设置本地账号1.新建用户2.开启双重验证3,开启TCP/IP本地服务二js.python连接实例1.

Spring Boot项目中结合MyBatis实现MySQL的自动主从切换功能

《SpringBoot项目中结合MyBatis实现MySQL的自动主从切换功能》:本文主要介绍SpringBoot项目中结合MyBatis实现MySQL的自动主从切换功能,本文分步骤给大家介绍的... 目录原理解析1. mysql主从复制(Master-Slave Replication)2. 读写分离3.

Java String字符串的常用使用方法

《JavaString字符串的常用使用方法》String是JDK提供的一个类,是引用类型,并不是基本的数据类型,String用于字符串操作,在之前学习c语言的时候,对于一些字符串,会初始化字符数组表... 目录一、什么是String二、如何定义一个String1. 用双引号定义2. 通过构造函数定义三、St

SpringBoot利用@Validated注解优雅实现参数校验

《SpringBoot利用@Validated注解优雅实现参数校验》在开发Web应用时,用户输入的合法性校验是保障系统稳定性的基础,​SpringBoot的@Validated注解提供了一种更优雅的解... 目录​一、为什么需要参数校验二、Validated 的核心用法​1. 基础校验2. php分组校验3

Pydantic中Optional 和Union类型的使用

《Pydantic中Optional和Union类型的使用》本文主要介绍了Pydantic中Optional和Union类型的使用,这两者在处理可选字段和多类型字段时尤为重要,文中通过示例代码介绍的... 目录简介Optional 类型Union 类型Optional 和 Union 的组合总结简介Pyd

Vue3使用router,params传参为空问题

《Vue3使用router,params传参为空问题》:本文主要介绍Vue3使用router,params传参为空问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录vue3使用China编程router,params传参为空1.使用query方式传参2.使用 Histo

使用Python自建轻量级的HTTP调试工具

《使用Python自建轻量级的HTTP调试工具》这篇文章主要为大家详细介绍了如何使用Python自建一个轻量级的HTTP调试工具,文中的示例代码讲解详细,感兴趣的小伙伴可以参考一下... 目录一、为什么需要自建工具二、核心功能设计三、技术选型四、分步实现五、进阶优化技巧六、使用示例七、性能对比八、扩展方向建

Spring Security方法级安全控制@PreAuthorize注解的灵活运用小结

《SpringSecurity方法级安全控制@PreAuthorize注解的灵活运用小结》本文将带着大家讲解@PreAuthorize注解的核心原理、SpEL表达式机制,并通过的示例代码演示如... 目录1. 前言2. @PreAuthorize 注解简介3. @PreAuthorize 核心原理解析拦截与