Mybatis基础

MyBatis基础应用 1.Mybatis简介 1.1原始jdbc操作(查询数据) 1.2原始jdbc操作(插入数据) 1.3 原始jdbc操作的分析 原始jdbc开发存在的问题如下: ①数据库连接创建、释放频繁造成系统资源浪费从而影响系统性能 ②sql 语句在代码中硬编码,造成代码不易维护,实际应用 sql 变化的可能较大,sql 变动需要改变java代码。 ③查询操作时,需要手动将结果集中的数据手动封装到实体中。插入操作时,需要手动将实体的数据设置到sql语句的占位符位置 应对上述问题给出的解决 阅读详情

Mybatis使用

映射器配置使用

介绍
1.使用方法,创建接口,定义方法

public interface SuperManMapper {
	 List<SuperMan> findAll();
}

2.创建接口对应的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">
<!--
	namespace="接口的完全限定名"
	 select id="接口定义的方法名"
 -->
<mapper namespace="com.cn.dao.SuperManMapper">
    <!--
        查询 -普通查询
    -->
    <select id="findAll" resultType="com.cn.domain.SuperMan">
        select * from superman
    </select>
    </mappe>

3 Test

  @Test
 public void findAllTxet(){
     SqlSession sqlSession = MyBatisUtil.openSession();
     //使用API getMapper(参数:接口的字节码文件)
     SuperManMapper mapper = sqlSession.getMapper(SuperManMapper.class);
     List<SuperMan> all = mapper.findAll();
     all.forEach(e-> System.out.println(e));

4 原理:在定义接口之后,没有写相应的实现,是在测试里传入了接口的字节码文件,通过代理实现了接口的方法,命名空间(namespace)写接口的完全限定名,是与对应的接口,建立关联,而id与方法对应,执行相应的sql
高级查询
模糊查询
1.使用concat【sql内置函数】

 <sql id="queryRepeatSql">
     <where>
         <if test="name != null and name != ''">
             and name like concat('%',#{name},'%')
         </if>
         <if test="id != null">
             and id = #{id}
         </if>
     </where>
 </sql>

查询数据总数
1.使用count【内置函数】

<!--
     高级查询(总数量)
 -->
 <select id="findByNumber" parameterType="com.cn.query.SuperManQuery" resultType="long">
     select count(*) from superman
     <include refid="queryRepeatSql"/>
 </select>

批量删除
1.参数list

  <!--
     批量删除
     collection:数据源(参数)
     open:以什么开头
     close:以什么结尾
     separator:中间隔开
     item:循环的每个值
     sql:DELETE FROM 表名称 WHERE 列名称 = 值
 -->
 <delete id="deleteBatch" parameterType="List">
     DELETE FROM superman WHERE id IN
     <foreach collection="list" open="(" close=")" item="v" separator=",">
         #{v.id}
     </foreach>
 </delete>

批量添加

  <!--
       批量保存
       inser
   -->
   <insert id="insertBatch" parameterType="list">
       insert into superman (name) values
       <foreach collection="list" item="emp" separator=",">
           (#{emp.name})
       </foreach>
   </insert>

多表查询【多对一(嵌套结果)】

   <!--
     多表查询【多对一】
     结果嵌套
   -->
 <resultMap id="SuperManMap" type="com.cn.domain.SuperMan">
     <id property="id" column="sid"/>
     <result property="name" column="sname"/>
     <association property="huMan" javaType="HuMan">
         <id property="id" column="hid"/>
         <result property="name" column="hname"/>
     </association>
 </resultMap>
 <select id="findByAssociated" resultMap="SuperManMap">
       select h.name hname,h.id hid,s.id sid,s.name sname from superman s
       JOIN human h
       ON s.human_id = h.id
 </select>

多表查询【多对一(嵌套查询)】

<!--
      多表查询【多对一】
      嵌套查询
      resultMap id:属性:标识作用,引用
      type:返回的类型
  -->
  <resultMap id="SuperManMapTwo" type="com.cn.domain.SuperMan">
      <id property="id" column="id"/>
      <result property="name" column="name"/>
      <association property="huMan" column="human_id" javaType="huMan" select="com.cn.dao.HuManMapper.findById"/>
  </resultMap>
  <select id="findAllTwo" resultMap="SuperManMapTwo">
        select * from superman
  </select>

多表查询【一找多(嵌套查询)】

<!--

     多表查询【一找多】
 -->
 <select id="findById" parameterType="long" resultType="SuperMan">
       select * from superman where human_id = #{id}
 </select>
  <!--
     多表查询【一对多】
     <collection  : 一找多的标签
     嵌套查询
 -->
 <resultMap id="HuManMapTwo" type="com.cn.domain.HuMan">
     <id property="id" column="id"/>
     <result property="name" column="name"/>
     <collection property="list" ofType="com.cn.domain.SuperMan" column="id" select="com.cn.dao.SuperManMapper.findById" />
 </resultMap>
 <select id="findAllTwo" resultMap="HuManMapTwo">
      select * from human
 </select>

多表查询【一找多(嵌套结果)】

 <!--
       多表查询【一对多】
       <collection  : 一找多的标签
       嵌套结果
   -->
   <resultMap id="HuManMap" type="com.cn.domain.HuMan">
       <id property="id" column="hid"/>
       <result property="name" column="hname"/>
       <collection property="list" ofType="SuperMan">
           <id property="id" column="id"/>
           <result property="name" column="name"/>
           <result property="huMan" column="human_id"/>
       </collection>
   </resultMap>
   <select id="findAll" resultMap="HuManMap">
       select h.id hid,h.name hname,s.* from human h join superman s on h.id=s.human_id
   </select>
Geant4 学习笔记(一):实现multi-thread多线程 简单修改实现Geant4多线程 阅读详情

相关推荐

ZYNQ平台上基于SGMII接口的IEEE1588/PTP协议高效实现方案

本文深入探讨了在Xilinx ZYNQ平台上,利用SGMII接口实现高精度IEEE1588/PTP协议的方案。通过将硬件时间戳单元集成在PL端的AXI以太网子系统IP核中,该方案绕过了软件协议栈和外部PHY的延迟,实现了亚微秒级的时间同步精度。文章详细解析了硬件设计、Vivado IP配置、Linux驱动移植及PTP协议栈部署等关键步骤,为工业控制、通信等领域的高精度网络同步提供了高效、灵活的解决路径。

q5r6s7的博客 606

MyBatis基础

cj@SpringBootTest:会在单元测试运行时,加载SpringBoot环境默认在mybatis中编写SQL语句是不识别的。(xml中书写sql语句也同理)可以做如下配置:如下图所示,user报错,提示为红色,产生原因:Idea和数据库没有建立连接,不识别表信息 解决方式:在Idea中配置MySQL数据库连接。注意:该配置的目的,仅仅是为了在编写SQL语句时,有语法提示(写错了会报错),不会影响运行,即使不配置也是可以的。

weixin_51346996的博客 1760

DeepSeek+Dify实战:零代码构建智能SQL生成器

本文详细介绍了如何利用DeepSeek和Dify零代码构建智能SQL生成器,帮助非技术人员通过自然语言查询数据库。文章涵盖从数据准备、知识库设计到Agent配置的全流程,并提供了优化技巧和实际应用案例,显著提升团队数据查询效率。

weixin_29311017的博客 419

关于mybatis,需要掌握的基础

目录 ❀ 总结 mybatis,需要掌握的基础如下: 1、了解ORM 思想、ORM思想的作用、映射配置的两种方式 2、MyBatis开发流程(基本使用) 3、日志框架 4、了解mybatis生命周期并抽取工具类MyBatisUtil、 MyBatisUtil工具类的作用 5、MyBatis基础拓展(别名、属性、结果集映射、Mapper接口、多参数处理、myBatis插件) 6、注解开发 7、动态SQL 8、对象关联的查询【额外的SQL、 内联映射】和懒加载 9、缓存机制(一级缓.

伟庭的博客 1733

高精度有源积分器设计:基于罗氏线圈的电流测量方案解析

在电力系统保护、工业自动化及高精度计量领域,电流的非接触式精确测量是核心需求。传统电流互感器存在磁芯饱和、频带受限等局限,难以应对现代电力电子设备产生的复杂波形。罗氏线圈作为一种空心电流传感器,凭借其宽频带、高线性度及无饱和风险的优势,成为理想解决方案。其工作原理基于法拉第电磁感应定律,输出信号与被测电流的导数成正比,因此必须通过积分运算恢复原始电流波形。积分器的精度、稳定性及动态响应直接决定了整个测量系统的性能上限。一个设计精良的有源积分器能有效解决直流漂移、相位误差及噪声放大等挑战,在继电器保护、断路器

weixin_30036289的博客 316

MCGS 昆仑通态触摸屏 modbus TCP 数据转发

MCGS触摸屏数据转发modbus TCP数据转发

m0_63451859的博客 2万+

mybatis基础

mybatis基础

程序猿张同学的博客 634

矢量网络分析仪校准:原理、方法与系统适配性

矢量网络分析仪(VNA)校准是射频测量的关键环节,通过误差建模(12项误差项)和标准件测量,可将系统不确定度从±5dB降至±0.1dB以下。主流校准方法包括SOLT(适用于同轴系统)和TRL(适用于波导系统),二者在标准件、误差重点及频率上限等方面存在显著差异。随着6G与量子通信的发展,动态实时校准将成为新趋势。工程师需根据传输结构、频率范围及精度需求选择合适方法,确保测量精度。

u014344410的博客 263

Mybatis基础操作

本文介绍了使用MyBatis实现员工管理系统的开发过程。首先根据需求分析确定了查询、新增、更新和删除等功能模块,并完成了数据库表结构和测试数据的准备。接着详细讲解了SpringBoot项目的搭建步骤,包括引入MyBatis、MySQL驱动和Lombok依赖,配置数据库连接信息,创建实体类和Mapper接口。最后以删除功能为例,展示了如何通过Mapper接口实现根据ID删除数据的操作。整个项目采用标准的MVC架构,为后续开发完整的管理系统奠定了基础。

XING的博客 812

Python反爬实战|动态渲染+高可用IP代理集群,稳定爬取京东/淘宝10万+商品数据

做Python电商爬虫的同学,应该都对京东、淘宝的反爬机制深有体会——这两个平台的反爬体系,堪称国内网站的天花板,远比普通资讯、政务网站的反爬严格十倍不止。用requests库请求商品列表,返回的永远是只有骨架的空HTML,商品标题、价格、销量全是前端JS异步加载,抓包分析接口发现参数全是加密的signtoken,解密成本无限高;用selenium开无头浏览器爬取,刚爬3-5页就触发风控,页面直接返回403,IP被封禁,甚至连Cookie都直接失效;

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1586

新能源汽车动力总成研发测试技术全景深度报告(2025版)

本文所有企业案例数据均来自上市公司财报、工信部备案信息及权威媒体报道,技术参数经第三方检测报告交叉验证。研发测试人员能力矩阵重构(T型人才进阶路径)[10] 全球动力总成市场2035年预测报告。[9] NI电动汽车HIL测试架构技术文档。[3] 东风汽车智能化研发体系深度报告。[5] 混合动力测功机发明专利技术细节。[1] 领克动力总成试验中心技术解析。[7] 新能源汽车产业迭代趋势白皮书。测试架构师-数字工程。测试架构师-安全合规。测试架构师-人工智能。

优快云-新能源汽车研发测试专业博主 779

MyBatis框架基础

MyBatis是一款优秀的持久层框架,它能够帮助Java开发者将业务逻辑与数据访问代码分离,具有简单,灵活,高效等特点,MyBatis使用xml或或注解的方式描述Java对象及其sql语句之间的映射关系,它支持多种数据库和操作方式,并且可以满足不同的数据访问要求,Mapper.xml是MyBatis中定义sql语句映射文件,可以在Mapper.xml文件中,可以指定数据库操作的sql语句,包括增删查改等操作的所有语句,此外,还可以定义查询结果映射规则,将查询结果映射为一个Java对象,

m0_65435794的博客 197

MDF和DHF、DMR、DHR三者差异?注册与备案文件?医疗器械产品技术要求编写指导原则

定义:设计历史文档(DHF ) 指的是描述某医疗器械成品设计过程的有关记录。内容:DHF包括设计开发活动的所有记录。从最初的策划、客户需求、设计输入,设计输出、设计验证、设计确认、所有的设计评审,设计转换,以及设计变更相关的所有记录。均属于DHF的一部分。要求:各制造商应为每个类型的器械建立并保持设计历史文件。设计历史文件应包含或引用必要的记录,以证实设计符合经批准的设计计划和法规的要求。

学海无涯的专栏 9112

MyBatis基础操作

MyBatis是⼀款优秀的 持久层 框架,⽤于简化JDBC的开发总结:简单来说 MyBatis 是更简单完成程序和数据库交互的框架,也就是更简单的操作和读取数据库⼯具。

qq_66333706的博客 909

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

Mybatis-基础操作

Mybatis的基础操作就是通过Mybatis完成对数据的增删改查。

qq_65501197的博客 1235

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

【MyBatis】MyBatis基础操作

如何打印 MyBatis 日志,使用 MyBatis 操作数据库时候的参数传递以及注解和XML配置文件的方法实现数据库的增删改查

不能再留遗憾了的博客 2503

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

Mybatis - 基础

​ Mybatis 持久层框架,用于简化JDBC开发官网: https://mybatis.org/mybatis-3/zh/index.html。

weixin_51351637的博客 1107

【Mybatis】Mybatis基础

创建MyBatis的核心配置文件 创建类 创建mapper接口 创建MyBatis的映射文件 相关概念:ORM(Object Relationship Mapping)对象关系映射。 对象:Java的实体类对象 关系:关系型数据库 映射:二者之间的对应关系 Java概念 数据库概念 类 表 属性 表的字段/列 对象 表中的一行数据 1、映射文件的命名规则: 表所对应的实体类的类名+Mapper.xml 例如:表t_user,映射的实体类为User,所对应的

IdealSanX的博客 1467

Mybatis基础操作学习

如果mapper接口方法形参只有一个普通类型的参数,#{…} 里面的属性名可以随便写,如:#{id}、#{value}。在Mybatis当中我们可以借助日志,查看到sql语句的执行、执行传递的参数以及执行结果。@Delete注解:用于编写delete操作的SQL语句。概念:在数据添加成功后,需要获取插入数据库数据的主键。} 里面写的名称是对象的属性名。本文只演示基础操作用法,准备过程便不演示。这种SQL语句我们称为预编译SQL。

练习生 1217

MyBatis基础总结

MyBatis基础总结 1、JDBC JDBC(Java Data Base Connectivity)用于执行SQL语句的Java API,可以为多种关系的数据库提供统一访问,有Java语言编写的类和接口组成,是Java访问数据库的标准规范。 获取jar包官网:https://downloads.mysql.com/archives/c-j/ JDBC开发步骤 // 1.注册JDCB驱动 Class.forName("com.mysql.jdbc.Driver"); // 2.建立并获取数据库连接 C

weixin_42781810的博客 262

Mybatis——基础操作、动态SQL

目录一.基础操作1.删除2.新增3.更新4.查询5.XML映射文件二、动态SQL1.<if>2.<where>3.<set>4.<foreach>5.<sql>6.<include>参数占位符:注意: #{...}相比于${...}具有性能高、防止SQL注入的优势普通查询:条件查询:注意:#{...}不能放在' '当中,使用${..,},会发生SQL注入,解决办法是使用contact()函数数据封装: 实例: 二、动态SQL 1.<if> 用于判断条件是否成立。使用test属性进行条件判断,如果条件

l_tian_tian_的博客 531

Mybatis基础巩固

陆陆续续用了4天晚上的时间,巩固了一遍Mybatis基础,该篇文章仅用于知识存档。 数据持久化 持久化就是将程序的数据在持久状态和瞬时状态转化的过程 namespace中的包名要和mapper接口的包名一致! select、insert、delete、update(增删改需要提交事务) id:就是对应的namespace中的方法名; resultType:SQL语句执行的返回值;对象、list parameterType:参数的返回值 resultMap:对应mapper文件中对象

zeng_0825的博客 215

MyBatis-Plus基础篇详解

作为刚接触这款工具的小白,可以先到Mybatis-Plus官网,跟着文档熟悉具体的方法并手动跟着敲一遍,这样更容易理解掌握这项技术。MyBatis-Plus(简称 MP)是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。MyBatis-Plus是基于MyBatis的增强工具,它在不改变原有功能的基础上提供了强大的CRUD操作能力。通过继承BaseMapper 接口,开发者无需编写 XML 配置即可获得基本的数据库操作功能;支持和进行灵活的条件查询。

动动发财的小手点点赞 1615

mybatis的基础语法

mybatis的基础语法 实体类 public class User { private Integer id; private String username; private Date birthday; private String sex; private String address; } UserMapper.java public interface UserMapper { User findUserById(

qq_44864652的博客 305
上一篇: Mybatis
下一篇: SSM的基本集成配置文件
user_path
博客等级 码龄8年 4粉丝 7原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值