首页 > 数据库 >MyBatis执行SQL的两种方式

MyBatis执行SQL的两种方式

时间:2024-09-22 13:50:40浏览次数:9  
标签:mapper 两种 Mapper dao 接口 SQL MyBatis id

PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"

"http://mybatis.org/dtd/mybatis-3-mapper.dtd">

<mapper namespace="cn.cvs.dao.UserMapper">

<!-- 查找所有的用户信息-->

<select id="findAll" resultType="cn.cvs.pojo.User">

SELECT * FROM t_sys_user

</select>

<!-- 查询用户的数量-->

<select id="selectCount" resultType="int">

SELECT count(1) FROM t_sys_user

</select>

</mapper>

指定sqlMapConfig其mapper文件的位置:

在sqlMapConfig.xml文件里面添加<mappers>成对标签,然后里加上成对的mapper标签,使用mapper的resource属性指定mapper文件的路径,这个路径是从target/classes路径开启的。

  • 使用注意:

resource=“mapper文件的路径,使用 / 分割路径”,记住不是"."

一个mapper resource 指定一个mapper文件

代码模板:

<mappers>

<mapper resource="mapper文件的路径"/>

</mappers>

使用SqlSession 发送 SQL


指定要执行的sql语句的 id:

sql的id = namespace+"."+ select|update|insert|delete标签的id属性值

例如:

namespace为cn.cvs.dao.UserMapper指定id为selectCount的sql语句

格式:命名空间(namespace)+点(.)+id属性值(id)

格式:cn.cvs.dao.UserMapper.selectCount

在这里插入图片描述

这样 MyBatis 就会找到对应的 SQL

通过SqlSession的方法,执行sql语句

List<User> list = sqlSession.selectList("cn.cvs.dao.User

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎徽关注公zhong号:编程进阶路 加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

Mapper.findAll");

selectList 方法表示使用查询并且只返回一个List集合

如果在 MyBatis 中只有一个 id 为 selectCount 的 SQL,那么也可以简写为:

List<User> list = sqlSession.selectList("selectCount");

这是 MyBatis 前身 iBatis 所留下的方式。


使用 Mapper 接口发送 SQL


用 Mapper 接口发送SQL就是以动态代理的方式sqlsession.getMapper(dao.class)获取dao接口对象,执行对应方法即可。这样做不用我们再去写dao接口的实现类就可以直接执行对应sql语句,其实就是MyBatis以代理的方式帮我们创建了接口的实现类。

Mapper规范:

namespace要写dao接口的全限定名称,标签id要写接口方法名

在这里插入图片描述

通过 SqlSession 获取 Mapper 接口,通过 Mapper 接口发送 SQL :

UserMapper mapper = sqlSession.getMapper(UserMapper.class);

List<User> list2=mapper.findAll();

通过 SqlSession 的 getMapper 方法来获取一个 Mapper 接口,就可以调用它的方法了。因为 XML文件或者接口注解定义的 SQL 都可以通过“类的全限定名+方法名”查找,所以 MyBatis 会启用对应的 SQL 进行运行,并返回结果。

比较两种发送 SQL 方式


  • 用 SqlSession 接口发送 SQL :

无需定义dao接口,直接通过"命名空间+id"调用对应的SQL

List list = sqlSession.selectList(“cn.cvs.dao.UserMapper.findAll”);

标签:mapper,两种,Mapper,dao,接口,SQL,MyBatis,id
From: https://blog.51cto.com/u_17015020/12080300

相关文章

  • MySQL—缓存_mysql 页缓存
    bufferpool缓存什么InnoDB会把存储的数据划分为若干个页,以页作为磁盘和内存交互的基本单位,一个页默认大小为16KB,MySQL启动时,InnoDB会为bufferpool申请一篇连续的内存空间,然后按照默认的16KB的大小划分出一个个的页,bufferpool中的页就叫做缓存页。BufferPool除了缓存「索引页......
  • 【java面经速记】Mysql和ES数据同步
    目录Mysql业务数据库ES查询数据库数据同步方案同步双写异步双写(MQ方式)基于Mysql的定时扫描同步基于Binlog实时同步使用canal监听binlog同步数据到es(流行方案)拓展:mysql的主从复制原理canal原理:数据迁移同步工具Mysql业务数据库核心特点:开源免费、高并发、稳定、......
  • 用友U8CRM relobjreportlist.php SQL注入漏洞复现
    0x01漏洞描述:        用友U8CRM客户关系管理系统是一款专业的企业级CRM软件,旨在帮助企业高效管理客户关系、提升销售业绩和提供优质的客户服务。        用友U8CRM客户关系管理系统relobjreportlist.php 文件存在SQL注入漏洞,未经身份验证的攻击者通过漏......
  • 9.9付费进群系统 wxselect SQL注入漏洞复现
    0x01漏洞描述:2024年9.9付费进群Plus版系统是一种新的社群管理方式,用户通过支付9.9元人民币即可加入特定的微信群,享受群内提供的服务或资源。这种模式通常用于知识分享、资源下载、专业交流等社群,通过设置门槛来筛选成员,提高群组的专业性和互动质量。在位于/group/controlle......
  • Can't connect to local MySQL server through socket
    mysql-urootERROR2002(HY000):Can'tconnecttolocalMySQLserverthroughsocket'/tmp/mysql.sock'(2)这是mysql登录时找不到套接字的问题。首先需要明白的是,Linux端的mysqlserver启动时会开启一个socket,Linux上的MySQL的客户端在不使用IP连接时mysqlserver时,默认......
  • MySQL安装
    MySQL安装解压安装包在环境变量中写入解压后的路径点击确认即可写安装文件新建文件命名为my.ini,修改为自己安装路径即可[mysqld]#设置3306端口port=3306#设置mysql的安装目录----------是你的文件路径-------------basedir=E:\mysql-8.0.26-winx64#设......
  • springboot通过tomcat部署项目(包含jar、war两种方式,迄今为止全网最详细!2024更新..建议
    本博客参考的所有文章均已在结尾声明!!!在SpringBoot项目中,有两种常见的部署方式:1、使用SpringBoot自带的内置Tomcat,将项目打包为jar并直接运行。2、使用外置Tomcat,将项目打包为war并部署到传统的Tomcat服务器中。本文将从这两种方式的基础配置到实际部......
  • 【看过来全网最细节】MySQL大数据量处理:全面优化方案与实践
    一、实施方案针对MySQL数据库数据量过大的问题,具体的实现细节可以包括以下几个方面:1.数据库分区(Partitioning)实现细节:选择分区类型:范围分区(RangePartitioning):适用于按时间范围或数值范围分区的场景。例如,按年份或月份将订单数据分区。列表分区(ListPartitioning):适用......
  • 一条 SQL 语句在 MySQL 中是如何执行的?
    本篇文章会分析下一个SQL语句在MySQL中的执行流程,包括SQL的查询在MySQL内部会怎么流转,SQL语句的更新是怎么完成的。在分析之前我会先带着你看看MySQL的基础架构,知道了MySQL由那些组件组成以及这些组件的作用是什么,可以帮助我们理解和解决这些问题。一MySQL基础架......
  • MySQL 数据库备份与恢复详解
    随着企业对数据依赖性的日益增加,确保数据库的安全与稳定至关重要。MySQL数据库作为开源数据库系统的代表,其备份与恢复能力直接关系到数据的安全性与业务的连续性。本文将结合最新的技术和工具,详细介绍MySQL的备份与恢复策略,帮助用户构建高效可靠的数据库管理方案。一、为什......