mybatis(78/134)

ops/2025/2/4 6:39:24/

前天学了很多,关于java的反射机制,其实跳过了new对象,然后底层生成了字节码,创建了对应的编码。手搓了一遍源码,还是比较复杂的。

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration><properties resource="jdbc.properties"></properties><!--起别名,这里是对于com.mybatis.pojo中就是dao类中的起别名,对于下面这个格式的默认值是包名,不区分大小写--><typeAliases><package name="com.mybatis.pojo"/></typeAliases><environments default="development"><!--default指定默认使用的环境--><environment id="development"><transactionManager type="JDBC"/><dataSource type="POOLED"><property name="driver" value="${jdbc.driver}"/><property name="url" value="${jdbc.url}"/><property name="username" value="${jdbc.username}"/><property name="password" value="${jdbc.password}"/></dataSource></environment></environments><mappers><!--这个是对映射文件匹配对应的接口,一般接口是在mapper中两者xml文件的取名要与mapper    相同,而且需要将xml放在resours文件下,创建相同的目录.在resources目录下创建格式是:com/mybatis/mapper        --><package name="com.mybatis.mapper"/></mappers></configuration>

对于多表联立,假设2表需要1表的主键(外键),但是原本是自增字段,那么就需要在标签中设

 useGeneratedKeys="true" keyProperty="id",来返回对应需要的主键如:id

 <insert id="insertCarUserGeneratedKeys" useGeneratedKeys="true" keyProperty="id">insert into t_car values (null,#{carNum},#{brand},#{guidePrice},#{produceTime},#{carType})</insert>

对于#{}与${}的区别

  <delete id="deleteBatch">deletefrom t_carwhere id in (${ids})<!--#{}与${}的区别,对于前者会原来出现的地方先使用?进行占位然后将对应的数据类型的值加入到原本的位置中去,如果是字符串就会带'',而后者就是简单的先拼接后编译,会有sql注入风险,使用的statement,它会将原先的值完整的输入到该位置,一般是使用关键字或者需要将东西原封不动的输入才使用后者--><!--'?'单引号中的占位符号不会被识别,所以像是模糊查询这种的有四种解决方法--></delete>


http://www.ppmy.cn/ops/155500.html

相关文章

软件测试 - 概念篇

目录 1. 需求 1.1 用户需求 1.2 软件需求 2. 开发模型 2.1 软件的生命周期 2.2 常见开发模型 2.2.1 瀑布模型 2.2.2 螺旋模型 1. 需求 对于软件开发而言, 需求分为以下两种: 用户需求软件需求 1.1 用户需求 用户需求, 就是用户提出的需求, 没有经过合理的评估, 通常…

gdb 调试多进程中多线程的方法

示例代码 首先&#xff0c;给出一个简单的示例程序&#xff0c;演示如何使用 fork 创建多个子进程并且每个进程内部创建多个线程。 示例代码 (main.cpp) #include <iostream> #include <thread> #include <vector> #include <unistd.h> #include <…

【游戏设计原理】98 - 时间膨胀

从上文中&#xff0c;我们可以得到以下几个启示&#xff1a; 游戏设计的核心目标是让玩家感到“时间飞逝” 游戏的成功与否&#xff0c;往往取决于玩家的沉浸感。如果玩家能够完全投入游戏并感受到时间飞逝&#xff0c;说明游戏设计在玩法、挑战、叙事等方面达到了吸引人的平衡…

【漫话机器学习系列】078.如何选择隐藏单元激活函数(How To Choose Hidden Unit Activation Functions)

选择隐藏单元激活函数是神经网络设计中的一个重要步骤&#xff0c;它直接影响到模型的学习能力和训练效果。不同的激活函数具有不同的性质和适用场景&#xff0c;因此在选择时需要根据模型的需求和问题的特性来决定。以下是一些常见的激活函数及其选择依据&#xff1a; 1. Sig…

人工智能学习(四)之机器学习基本概念

机器学习基本概念详细解析&#xff1a;从生活实例轻松入门 在当今数字化时代&#xff0c;机器学习作为人工智能领域的核心技术之一&#xff0c;正深刻地改变着我们的生活和工作方式。从智能语音助手到图像识别系统&#xff0c;从个性化推荐引擎到自动驾驶汽车&#xff0c;机器…

如何让DeepSeek恢复联网功能?解决(由于技术原因,联网搜索暂不可用)

DeekSeek提示&#xff1a;&#xff08;由于技术原因&#xff0c;联网搜索暂不可用&#xff09; 众所周知&#xff0c;因为海外黑客的ddos攻击、僵尸网络攻击&#xff0c;deepseek的联网功能一直处于宕机阶段&#xff0c;但是很多问题不联网出来的结果都还是2023年的&#xff0c…

ubuntuCUDA安装

系列文章目录 移动硬盘制作Ubuntu系统盘 前言 根据前篇“移动硬盘制作Ubuntu系统盘”安装系统后&#xff0c;还不能够使用显卡。 如果需要使用显卡&#xff0c;还需要进行相关驱动的安装&#xff08;如使用的为Nvidia显卡&#xff0c;就需要安装相关的Nvidia显卡驱动&#xff…

VSCode 中的 Git Graph扩展使用详解

VSCode 中的 Git Graph 详解 1. 什么是 Git Graph&#xff1f; Git Graph 是 VSCode 中的一款 Git 可视化扩展&#xff0c;它提供了一种 图形化方式 来查看 Git 提交历史、分支、合并记录等信息&#xff0c;使得 Git 版本管理更加直观和高效。 通过 Git Graph&#xff0c;你…