如何做企业税收筹划/市场seo是什么

如何做企业税收筹划,市场seo是什么,合同管理软件,中国哪家做网站的公司最大目录 1、MyBatis 是什么2、配置 MyBatis 开发环境2.1、添加 MyBatis 框架支持2.1.1、老项目添加 MyBatis2.1.2、新项目添加 MyBatis 2.2、配置数据库连接字符串2.3、配置 MyBatis 中的 XML 路径 3、添加业务代码3.1、添加实体类3.2、添加 mapper 接口3.3、添加 xml 文件3.4、添…

目录

  • 1、MyBatis 是什么
  • 2、配置 MyBatis 开发环境
    • 2.1、添加 MyBatis 框架支持
      • 2.1.1、老项目添加 MyBatis
      • 2.1.2、新项目添加 MyBatis
    • 2.2、配置数据库连接字符串
    • 2.3、配置 MyBatis 中的 XML 路径
  • 3、添加业务代码
    • 3.1、添加实体类
    • 3.2、添加 mapper 接口
    • 3.3、添加 xml 文件
    • 3.4、添加 Service
    • 3.5、添加 Controller
    • 3.6、Postman 测试
  • 4、数据的增删改
    • 4.1、参数占位符
    • 4.2、增加数据
    • 4.3、删除数据
    • 4.4、修改数据
  • 5、数据的查询
    • 5.1、单表查询
      • 5.1.1、like 查询
      • 5.1.2、单表查询
    • 5.2、多表查询
      • 5.2.1、返回字典映射:resultMap
      • 5.2.2、一对一的表映射
      • 5.2.3、一对多的表映射

1、MyBatis 是什么

MyBatis 是一个操作数据库的持久层框架,它支持自定义 SQL、存储过程以及高级映射,是更简单完成程序和数据库交互的工具,也就是更简单的操作和读取数据库的工具。

在这里插入图片描述
MyBatis 是一个 ORM(Object Relational Mapping,即对象关系映射)框架,在面向对象编程语言中,将关系型数据库中的数据和对象建立起映射关系,进而自动完成数据与对象之间的转换:

  1. 将输入数据(即传入的对象)+ SQL 映射成原生 SQL
  2. 将结果集映射为返回对象,即输出对象

ORM 将数据库映射为对象:

  1. 数据库表(table)-> 类(class)
  2. 记录(record,即行数据)-> 对象(object)
  3. 字段(field)-> 对象的属性(attribute)

一般来说,ORM 框架会把数据库的每张表映射成一个类,也就是说使用 MyBatis 可以像操作对象一样操作数据库的表,可以实现对象和数据库表之间的转换。

2、配置 MyBatis 开发环境

2.1、添加 MyBatis 框架支持

2.1.1、老项目添加 MyBatis

如果需要在老项目中添加 MyBatis,则可以在 pom.xml 文件中添加相关依赖。

        <!-- 添加 MyBatis 框架--><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>2.2.2</version></dependency><!-- 添加 MySQL 驱动--><dependency><groupId>com.mysql</groupId><artifactId>mysql-connector-j</artifactId><scope>runtime</scope></dependency>

2.1.2、新项目添加 MyBatis

如果在创建 SpringBoot 项目时添加 MyBatis 框架,则增加下述引用。

在这里插入图片描述

2.2、配置数据库连接字符串

添加了 MyBatis 框架,由于 MyBatis 启动类会读取相关配置,因此必须配置需要的信息,否则启动报错。
如果是 application.properties,则添加下列内容:

# 数据库连接配置
# 这里的 db 是数据库名称,需要改变,其余的不动
spring.datasource.url=jdbc:mysql://localhost:3306/db?characterEncoding=utf8&useSSL=false
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

如果是 application.yml,则添加下列内容:

# 数据库连接配置 
spring: datasource: url: jdbc:mysql://localhost:3306/db?characterEncoding=utf8&useSSL=falseusername: root password: root driver-class-name: com.mysql.cj.jdbc.Driver

上述两种写法只是不同类型的文件格式不同而已,内容是相同的。

2.3、配置 MyBatis 中的 XML 路径

MyBatis 中的 XML 文件中保存的是数据库具体操作的SQL语句,配置如下:
如果是 application.properties,则添加下列内容:

# 在 resources/mapper 下创建所有表的 xml文件,文件名以Mapper结尾,类型是xml
mybatis.mapper-locations=classpath:mappers/**Mapper.xml

如果是 application.yml,则添加下列内容:

mybatis: mapper-locations: classpath:mappers/**Mapper.xml

3、添加业务代码

根据后端开发的工程思路添加业务代码。
在这里插入图片描述

3.1、添加实体类

实体类对应数据库的表,实体类的属性对应数据库表的字段名。

在这里插入图片描述

3.2、添加 mapper 接口

数据持久层的接口定义:

在这里插入图片描述

3.3、添加 xml 文件

在配置文件中已经配置了 xml 文件的位置:在类加载路径下的mappers文件夹中创建,即在 src/main/resources/mappers 下创建

在这里插入图片描述

在这里插入图片描述
mapper 标签中的 namespace 表示命名空间,值是 mapper 接口的全限定名,接口文件和 xml 文件通过 namespace 的值相对应。
select 标签的 id 和接口方法名称一样的,表示是对接口方法的具体实现,接口方法和某个 sql 语句通过 id 的值相对应。
resultType 是返回的数据类型,无论返回的是某个类型还是 List<某个类型>,值都是某个类型。

在这里插入图片描述

3.4、添加 Service

服务层实现代码如下:

在这里插入图片描述

3.5、添加 Controller

控制层的实现代码如下:

在这里插入图片描述

3.6、Postman 测试

在这里插入图片描述

4、数据的增删改

4.1、参数占位符

参数占位符有两种 #{} 和 ${}。

  • #{}:预编译处理,MyBatis 在处理 #{} 时,会将 SQL 中的 #{} 替换为 ?号,然后再基于 jdbc 来替换。变量本身如果是字符串,会加上单引号 ’ ’ 来替换。
  • ${}:字符直接替换,整个 sql 作为字符串拼接来替换。变量本身如果是字符串,替换时不加任何符号。因此可以使用 ${sort} 实现排序查询。

在这里插入图片描述
如果传入的参数是 asc,那么上述的 sql 语句会被替换成 select * from userinfo order by id asc
但是如果使用的是 #{sort},传入的参数是 asc,那么那么上述的 sql 语句会被替换成
select * from userinfo order by id ‘asc’,因此使用 ${sort} 可以实现排序查询,而#{sort} 不能实现。

  • SQL 注入问题:根据用户名查询用户时用的是 ${} 占位符,但是当传入的参数是 ’ or ‘1’=‘1,代码会变成 select * from userinfo where username=’’ or ‘1’=‘1’,而 ‘1’='1’表达式始终为真,因此会返回所有的用户。由此可得,用于查询的字段,要尽可能使用 #{} 占位符。

在这里插入图片描述

在这里插入图片描述

4.2、增加数据

增加数据用 insert 关键字,返回的值是 int 类型,默认情况下返回的是受影响的行数。
如果传进来的方法参数中没有某个属性值,那么插入表中的值为 null。
Mapper 接口中:

在这里插入图片描述
xml 文件中:

在这里插入图片描述
测试数据:
在这里插入图片描述
在这里插入图片描述

4.3、删除数据

删除数据用 delete 关键字,返回的值是 int 类型,默认情况下返回的是受影响的行数。
Mapper 接口中:

在这里插入图片描述
xml 文件中:

在这里插入图片描述
测试数据:

在这里插入图片描述
在这里插入图片描述

4.4、修改数据

修改数据用 update 关键字,返回的值是 int 类型,默认情况下返回的是受影响的行数。
Mapper 接口中:

在这里插入图片描述
xml 文件中:

在这里插入图片描述
测试数据:
在这里插入图片描述
在这里插入图片描述

5、数据的查询

5.1、单表查询

5.1.1、like 查询

MyBatis 可以利用 like 进行模糊查询。

  • 利用 #{} 进行查询时,会变成 select * from userinfo where username like ‘%‘username’%’,造成语法错误。

在这里插入图片描述
在这里插入图片描述

  • 利用 ${} 进行查询时,会造成注入问题。
  • 可以利用 mysql 的内置函数 concat() 来处理。#{}会给 username 的值加上单引号 ’ ’ 来替换,因此无需再加。

在这里插入图片描述
在这里插入图片描述

5.1.2、单表查询

查询数据用 select关键字,返回的值可以是复杂类型,也可以是简单类型。
如果是增删改操作返回受影响的行数时,xml文件中可以不设置返回的类型,但是即使是简单的查询语句也要设置返回的类型。
Mapper 接口中:

在这里插入图片描述
xml 文件中:

在这里插入图片描述
测试数据:
在这里插入图片描述

5.2、多表查询

多表查询的本质是查询结果集的字段,超出某个自定义类型的属性,此时之前的方式就不满足要求。

5.2.1、返回字典映射:resultMap

resultMap 使用场景:
1.字段名称和实体类中的属性名不同的情况,可使用 resultMap 配置映射
2.一对一和一对多关系可以使用 resultMap 映射并查询数据

在这里插入图片描述

5.2.2、一对一的表映射

  • 在实体类中增加属性。

在这里插入图片描述

  • 在 xml 文件中增加一对一映射。

在这里插入图片描述
resultMap 属性:指定关联的结果集映射,将基于该映射配置来组织用户数据。
columnPrefix:给 column 统一加上前缀,作为结果集字段,如果 columnPrefix 省略,并且恰好两个表中有相同的字段,那么就会导致查询出错。绑定一对一对象时,通过columnPrefix+association.resultMap.column 来映射结果集字段。

  • 关联查询的sql语句。

在这里插入图片描述
resultMap 属性:设置当前查询结果集使用的映射。写法是 命名空间.resultMap.映射名,如果是同一个命名空间,就可以省略命名空间。

  • 测试数据。

在这里插入图片描述

查询字段,如果在 resultMap 映射中没有配置,就相当于不做映射,值为 null。

5.2.3、一对多的表映射

  • 在实体类中增加属性。

在这里插入图片描述

  • 在 xml 文件中增加一对多映射。

在这里插入图片描述

  • 关联查询的sql语句。

.在这里插入图片描述

  • 测试数据。

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Jmeter进行http接口测试详解

&#x1f345; 点击文末小卡片&#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 本文主要针对http接口进行测试&#xff0c;使用 jmeter工具实现。 Jmeter工具设计之初是用于做性能测试的&#xff0c;它在实现对各种接口的调用方面已经做的比较…

力扣35.搜索插入位置-二分查找

class Solution:def searchInsert(self, nums: List[int], target: int) -> int:# 初始化左右指针left, right 0, len(nums) - 1# 当左指针小于等于右指针时&#xff0c;继续循环while left < right:# 计算中间位置mid (left right) // 2# 如果中间元素等于目标值&…

为AI聊天工具添加一个知识系统 之133 详细设计之74通用编程语言 之4 架构及其核心

本篇继续讨论 通用编程语言。 说明&#xff1a;本阶段的所有讨论都是围绕这一主题展开的&#xff0c;但前面的讨论分成了三个大部分&#xff08;后面列出了这一段的讨论题目的归属关系&#xff09;-区别distinguish&#xff08;各别&#xff09;&#xff1a; 文化和习俗。知识…

PPT 技能:巧用 “节” 功能,让演示文稿更有序

在制作PPT时&#xff0c;你是否遇到过这样的情况&#xff1a;幻灯片越来越多&#xff0c;内容越来越杂&#xff0c;找某一页内容时翻得眼花缭乱&#xff1f;尤其是在处理大型PPT文件时&#xff0c;如果没有合理的结构&#xff0c;编辑和调整都会变得非常麻烦。这时候&#xff0…

刘火良 FreeRTOS内核实现与应用之1——列表学习

重要数据 节点的命名都以_ITEM后缀进行&#xff0c;链表取消了后缀&#xff0c;直接LIST 普通的节点数据类型 /* 节点结构体定义 */ struct xLIST_ITEM { TickType_t xItemValue; /* 辅助值&#xff0c;用于帮助节点做顺序排列 */ struct xLIST_I…

Uniapp项目运行到微信小程序、H5、APP等多个平台教程

摘要&#xff1a;Uniapp作为一款基于Vue.js的跨平台开发框架&#xff0c;支持“一次开发&#xff0c;多端部署”。本文将手把手教你如何将Uniapp项目运行到微信小程序、H5、APP等多个平台&#xff0c;并解析常见问题。 一、环境准备 在开始前&#xff0c;请确保已安装以下工具…

100天精通Python(爬虫篇)——第115天:爬虫在线小工具_Curl转python爬虫代码工具(快速构建初始爬虫代码)

文章目录 一、curl是什么&#xff1f;二、爬虫在线小工具&#xff08;牛逼puls&#xff09;三、实战操作 一、curl是什么&#xff1f; 基本概念&#xff1a;curl 支持多种协议&#xff0c;如 HTTP、HTTPS、FTP、SFTP 等&#xff0c;可用于从服务器获取数据或向服务器发送数据&a…

[内网安全] Windows 域认证 — Kerberos 协议认证

&#x1f31f;想系统化学习内网渗透&#xff1f;看看这个&#xff1a;[内网安全] 内网渗透 - 学习手册-CSDN博客 0x01&#xff1a;Kerberos 协议简介 Kerberos 是一种网络认证协议&#xff0c;其设计目标是通过密钥系统为客户机 / 服务器应用程序提供强大的认证服务。该认证过…

案例1_3:流水灯

文章目录 文章介绍原理图&#xff08;同案例1_2&#xff09;代码效果图 文章介绍 原理图&#xff08;同案例1_2&#xff09; 代码 #include <reg51.h> // 包含头文件void delay(unsigned int time) {unsigned int i, j;for (i 0; i < time; i)for (j 0; j < 1…

基于物联网技术的电动车防盗系统设计(论文+源码)

1总体设计 本课题为基于物联网技术的电动车防盗系统&#xff0c;在此将整个系统架构设计如图2.1所示&#xff0c;其采用STM32F103单片机为控制器&#xff0c;通过NEO-6M实现GPS定位功能&#xff0c;通过红外传感器检测电瓶是否离开位&#xff0c;通过Air202 NBIOT模块将当前的数…

国产化替换案例:CACTER邮件网关为Groupwise系统加固邮件安全防线

电子邮件作为企业信息流转的命脉&#xff0c;承载着商业机密与客户数据。然而&#xff0c;网络攻击手段日益复杂&#xff0c;钓鱼邮件等威胁正快速侵蚀企业安全防线。据《2024年第四季度企业邮箱安全性研究报告》显示&#xff0c;2024年Q4企业邮箱用户遭遇的钓鱼邮件数量激增至…

3.使用ElementUI搭建侧边栏及顶部栏

1. 安装ElementUI ElementUI是基于 Vue 2.0 的桌面端组件库。使用之前&#xff0c;需要在项目文件夹中安装ElementUI&#xff0c;在终端中输入以下命令&#xff0c;进行安装。 npm i element-ui -S并在main.js中引入ElementUI 2. 使用elmentUI组件进行页面布局 2.1 清空原…

从零开始实现大语言模型(十四):高阶训练技巧

1. 前言 预训练大语言模型的流程与训练普通神经深度网络模型本质上并没有任何不同。可以使用深度学习实践中已经被证明非常有效的高阶训练技巧&#xff0c;优化大语言模型预训练流程&#xff0c;使大语言模型预训练效率更高&#xff0c;训练过程更稳定。 本文介绍深度学习领域…

利用EasyCVR平台打造化工园区视频+AI智能化监控管理系统

化工园区作为化工产业的重要聚集地&#xff0c;其安全问题一直是社会关注的焦点。传统的人工监控方式效率低下且容易出现疏漏&#xff0c;已经难以满足日益增长的安全管理需求。 基于EasyCVR视频汇聚平台构建的化工园区视频AI智能化应用方案&#xff0c;能够有效解决这些问题&…

GB28181视频监控流媒体平台LiveGBS如何自定义收流端口区间以便减少收流端口数或解决端口冲突问题

LiveGBS GB28181流媒体服务在接收视频的时候默认是使用30000-30249&#xff0c; webrtc流播放端口区间默认是UDP的30250-30500区间。有些网络环境不方便开放这么大的端口区间&#xff0c;下面介绍下如何修改配置这个区间。 从页面上修改这个区间&#xff0c;端口区间尽量设置大…

Qt:事件

目录 处理事件 鼠标事件 键盘事件 定时器事件 窗口事件 虽然 Qt 是跨平台的 C 开发框架&#xff0c;Qt 的很多能力其实是操作系统提供的 只不过 Qt 封装了系统的 API 事件 前面学习过信号槽&#xff1a; 用户进行的各种操作&#xff0c;就可能会产生出信号&#xff0c;可以…

责任链模式:优雅处理复杂流程的设计艺术

引言 在软件设计中&#xff0c;我们经常会遇到需要按特定顺序处理请求的场景。例如&#xff0c;一个订单处理系统可能需要经过验证、付款、物流安排和客户通知等多个步骤。如果我们将这些步骤硬编码在一个方法中&#xff0c;代码将变得臃肿且难以维护。这时&#xff0c;责任链…

【STM32】玩转IIC之驱动MPU6050及姿态解算

目录 前言 一.MPU6050模块介绍 1.1MPU6050简介 1.2 MPU6050的引脚定义 1.3MPU6050寄存器解析 二.MPU6050驱动开发 2.1 配置寄存器 2.2对MPU6050寄存器进行读写 2.2.1 写入寄存器 2.2.2读取寄存器 2.3 初始化MPU6050 2.3.1 设置工作模式 2.3.2 配置采样率 2.3.3 启…

【ThreeJS Basics 09】Debug

文章目录 简介从 dat.GUI 到 lil-gui例子安装 lil-gui 并实例化不同类型的调整改变位置针对非属性的调整复选框颜色 功能/按钮调整几何形状文件夹调整 GUI宽度标题关闭文件夹隐藏按键切换 结论 简介 每一个创意项目的一个基本方面是能够轻松调整。开发人员和参与项目的其他参与…

电脑网络出现问题!简单的几种方法解除电脑飞行模式

在某些情况下&#xff0c;您可能需要关闭电脑上的飞行模式以便重新连接到 Wi-Fi、蓝牙或其他无线网络。本教程中简鹿办公将指导您如何在 Windows 和 macO S操作系统上解除飞行模式。 一、Windows 系统下解除飞行模式 通过快捷操作中心 步骤一&#xff1a;点击屏幕右下角的通知…