返回顶部
首页 > 资讯 > 后端开发 > Python >浅谈MyBatis执行SQL的两种方式
  • 391
分享到

浅谈MyBatis执行SQL的两种方式

2024-04-02 19:04:59 391人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

目录前言准备接口和Mapper配置文件:使用sqlSession 发送 SQL使用 Mapper 接口发送 SQL比较两种发送 SQL 方式前言 本文介绍mybatis执行SQL语句

前言

本文介绍mybatis执行SQL语句的2种方式:SqlSession和Mapper接口以及它们的区别。

准备接口和Mapper配置文件:

定义UserMapper接口:


package cn.cvs.dao;

import cn.cvs.pojo.User;

import java.util.List;

public interface UserMapper {
    //查找所有的用户信息
    public List<User> findAll();
    //查询用户的数量
    public int selectCount();
}

定义UserMapper配置文件:


<?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="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.UserMapper.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 接口发送 SQL :
通过 SqlSession 获取 Mapper 接口
格式:接口类名 对象名 = sqlSession.getMapper(接口类名.class);
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
调用对应的SQL
List list2=mapper.findAll();

建议采用 SqlSession 获取 Mapper 接口的方式:

使用 Mapper 接口编程可以消除 SqlSession 带来的功能性代码,提高可读性,而 SqlSession 发送 SQL,需要一个> SQL id 去匹配 SQL,比较晦涩难懂。

到此这篇关于浅谈MyBatis执行SQL的两种方式的文章就介绍到这了,更多相关MyBatis执行SQL内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: 浅谈MyBatis执行SQL的两种方式

本文链接: https://lsjlt.com/news/131643.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 浅谈MyBatis执行SQL的两种方式
    目录前言准备接口和Mapper配置文件:使用SqlSession 发送 SQL使用 Mapper 接口发送 SQL比较两种发送 SQL 方式前言 本文介绍MyBatis执行SQL语句...
    99+
    2024-04-02
  • 浅谈MyBatis 如何执行一条 SQL语句
    目录前言 基础组件 工作流程 初步使用 详细流程 获取 MapperProxy 对象 缓存执行方法 构造参数 获取需要执行的 SQL 对象 执行 SQL 语句 总结 前言 Myba...
    99+
    2024-04-02
  • 浅谈QT打包的两种方式
    目录QT打包的两种方式具体步骤QT打包的两种方式 一个是QT5自带的windeployqt(不需要下载安装),它可以找到程序(exe)用到的所有库文件,并且都拷贝到exe程序的当前文...
    99+
    2023-03-10
    QT打包
  • 浅谈Mybatis SqlSession执行流程
    目录Mybatis执行SQL流程 SqlSessionExecutorMybatis之Executor Mybatis之StatementHandler 进入ResultSetHan...
    99+
    2024-04-02
  • 浅谈SpringBoot @Autowired的两种注入方式
    Autowired有两种注入方式 by type by name 默认使用的是byType的方式向Bean里面注入相应的Bean。例如: @Autowire...
    99+
    2024-04-02
  • 浅谈ubuntu执行.sh文件几种方式区别
    前言 不同的script执行方式会造成不一样的结果,尤其对bash的环境影响很大,脚本的执行方式有大概以下几种方式。 首先写一个简单的test.sh文件: #!/bin/bash read -p "Please ...
    99+
    2022-06-04
    ubuntu执行.sh文件 ubuntu执行.sh
  • 浅谈Spring的两种事务定义方式
    一、声明式这种方法不需要对原有的业务做任何修改,通过在XML文件中定义需要拦截方法的匹配即可完成配置,要求是,业务处理中的方法的命名要有规律,比如setXxx,xxxUpdate等等。详细配置如下:<bean id="transact...
    99+
    2023-05-31
    spring 事务 定义
  • 浅谈Springboot实现拦截器的两种方式
    目录一、拦截器方式1、配置HandlerInterceptor2、注册拦截器3、使用拦截器的坑二、过滤器方式1、实现Filter接口2、使用过滤器需要注意的实现过滤请求有两种方式: ...
    99+
    2024-04-02
  • 浅谈Mybatis获取参数值的方式
    目录一、 Mybatis获取参数值的各种情况1.mapper接口方法的参数为单个字面量的类型2.mapper接口方法的参数有多个3.手动把参数放在map集合中4.mapper接口方法...
    99+
    2024-04-02
  • 详解Java执行groovy脚本的两种方式
    记录Java执行groovy脚本的两种方式,简单粗暴: 一种是通过脚本引擎ScriptEngine提供的eval(String)方法执行脚本内容;一种是执行groovy脚本; 二者都...
    99+
    2024-04-02
  • 浅谈SQL注入的四种防御方法
    最近了解到安全公司的面试中都问到了很多关于SQL注入的一些原理和注入类型的问题,甚至是SQL注入的防御方法。SQL注入真的算是web漏洞中的元老了,著名且危害性极大。下面这里就简单的分享一下我总结的四...
    99+
    2023-09-05
    php web安全
  • Mybatis注解开发@Select执行参数和执行sql语句的方式
    执行传参 @Select 是 Mybatis 框架中的一个注解,用于执行 SQL 查询语句,并把查询结果映射到指定的 Java 对象中。 具体来说,@Select 注解会将注解中的 SQL 查询语句交给 Mybatis 框架进行解...
    99+
    2023-09-17
    mybatis sql java
  • 浅谈PostgreSQL表分区的三种方式
    目录一、简介二、三种方式2.1、Range范围分区2.2、List列表分区2.3、Hash哈希分区三、总结一、简介 表分区是解决一些因单表过大引用的性能问题的方式,比如某张表过大就会...
    99+
    2024-04-02
  • 浅谈Java中Collections.sort对List排序的两种方法
    目录一、Collections.sort的简单使用二、问题提出三、Comparable实现排序四、Comparator实现排序五、Comparable 与Comparator区别一、...
    99+
    2024-04-02
  • 浅谈Flutter解析JSON三种方式
    Dart实体类格式 class CategoryMo { String name; int count; CategoryMo({this.name, this.cou...
    99+
    2024-04-02
  • Mybatis控制台打印SQL语句的两种方式实现
    问题描述 在使用mybatis进行开发的时候,由于可以动态拼接sql,这样大大方便了我们。但是也有一定的问题,当我们动态sql拼接的块很多的时候,我们要想从*mapper.xml中...
    99+
    2024-04-02
  • 浅谈MySQL8.0 异步复制的三种方式
    本实验中分别针对空库、脱机、联机三种方式,配置一主两从的mysql标准异步复制。只做整服务器级别的复制,不考虑对个别库表或使用过滤复制的情况。 实验环境 [root@slave2 ~]# cat /etc/ho...
    99+
    2022-05-26
    MySQL8.0 异步复制 MySQL 异步复制
  • 浅谈go中cgo的几种使用方式
    目录最简单的CGO程序源码方式调用C函数内部机制编译和链接参数编译参数:CFLAGS/CPPFLAGS/CXXFLAGS链接参数:LDFLAGS通过静态库的方式调用C函数通过动态库的...
    99+
    2024-04-02
  • 浅谈react路由传参的几种方式
    第一种传参方式,动态路由传参 通过设置link的path属性,进行路由的传参,当点击link标签的时候,会在上方的url地址中显示传递的整个url <Link to='/...
    99+
    2024-04-02
  • 浅谈JavaScript的几种继承实现方式
    目录当前需求: 实现 Student 继承自 Person构造函数Person构造函数Student希望满足的条件功能利用原形链实现方法的继承方式1: 子类原型指向父类原型方式2 子...
    99+
    2023-05-17
    JavaScrip 继承
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作