Mapper代理开发

目的

  • 解决原生方式中的硬编码
  • 简化后期执行SQL

步骤

1, 整体目录结构

2, UserMapper.xml

设置SQL映射文件的namespace属性为Mapper接口全限定名

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""https://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!--名称空间-->
<mapper namespace="local.content.mapper.UserMapper"><select id="selectAll" resultType="local.content.pojo.User">select * from tb_user;</select>
</mapper>

3,UserMapper接口

local.content下新建mapper包,并在其中定义接口

在Mapper接口中定义方法,方法名就是SQL映射文件中sql语句的id,并保持参数类型和返回值类型一致。

package local.content.mapper;
import local.content.pojo.User;
import java.util.List;//定义mapper代理接口
public interface UserMapper {//查询所有用户List<User> selectAll();
}

4, 核心配置文件

更新UserMapper.xml路径

<?xml version="1.0" encoding="UTF8" ?>
<!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""https://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration><environments default="development"><environment id="development"><transactionManager type="JDBC"/><dataSource type="POOLED"><!--数据库连接信息--><property name="driver" value="com.mysql.cj.jdbc.Driver"/><property name="url" value="jdbc:mysql://x.x.x.x:3306/mybatis?useSSL=false&amp;serverTimezone=UTC"/><property name="username" value="mybatis_rw"/><property name="password" value="1234"/></dataSource></environment></environments><mappers><!--映射待执行的sql文件路径-->
<!--        <mapper resource="UserMapper.xml"/>--><mapper resource="local/content/mapper/UserMapper.xml"/></mappers>
</configuration>

5, 编码MyBatisDemon2.java

细节:如果Mapper接口名称和SQL映射文件名称相同,并且在同一个目录下,则可以使用包扫描方式简化SQL映射文件的加载

package local.content.mybatis;
import local.content.mapper.UserMapper;
import local.content.pojo.User;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;import java.io.InputStream;
import java.util.List;// MyBatis代理开发
public class MyBatisDemo2 {public static void main(String[] args) throws Exception {// 1. 加载配置文件// 2. 创建SqlSessionFactoryString resource = "mybatis-config.xml";InputStream inputStream = Resources.getResourceAsStream(resource);SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);//sqlSessionFactory.getConfiguration().addMapper(local.content.mapper.UserMapper.class);// 3. 创建SqlSessionSqlSession sqlSession = sqlSessionFactory.openSession();// 4. 执行sql//List<User> users = sqlSession.selectList("test.selectAll");System.out.println("000");// 4 . 获取UserMapper 接口的代理对象UserMapper userMapper = sqlSession.getMapper(UserMapper.class);System.out.println("111");// 使用Mapper代理来查询获取数据List<User> users = userMapper.selectAll();//System.out.println(users);System.out.println(users);// 5. 释放资源sqlSession.close();}}

6,结果

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

P9235 [蓝桥杯 2023 省 A] 网络稳定性

*原题链接* 最小瓶颈生成树题&#xff0c;和货车运输完全一样。 先简化题意&#xff0c; 次询问&#xff0c;每次给出 &#xff0c;问 到 的所有路径集合中&#xff0c;最小边权的最大值。 对于这种题可以用kruskal生成树来做&#xff0c;也可以用倍增来写&#xff0c;但不…

程序员工作中经常使用的C/C++开源库

Bundle 项目地址&#xff1a;GitHub - r-lyeh-archived/bundle: :package: Bundle, an embeddable compression library: DEFLATE, LZMA, LZIP, BZIP2, ZPAQ, LZ4, ZSTD, BROTLI, BSC, CSC, BCM, MCM, ZMOLLY, ZLING, TANGELO, SHRINKER, CRUSH, LZJB and SHOCO streams in a …

Datawhale X 南瓜书 task02学习笔记

算法原理引入 样本点通常应该在模型的2侧&#xff0c;原因&#xff1a;在实际中&#xff0c;因为某种不可控的因素&#xff0c;测出来的样本点肯定是有误差的。如果样本数据点都在模型上&#xff0c;则说明在建立模型时&#xff0c;把误差也考虑进去了&#xff0c;这就是我们说…

9月21日 电子产品世界上海站沙龙

9月21日 电子产品世界上海站沙龙 有幸参加了 9月21日 14: 00 在上海 九江路 700号 上海南新雅皇冠假日酒店 4楼 举行的 TI MSPM0 MCU开发经验交流 会 本次邀请资深开发者&#xff0c;现场跟大家进行TI MSPM0 MCU开发经验交流&#xff0c;并详细展示基于TI MSPM0 MCU开发的实用…

动态规划day39|198. 打家劫舍、213. 打家劫舍 II(环形怎么处理?)、337. 打家劫舍 III(二叉树与动态规划的完美结合!)

动态规划day39|198. 打家劫舍、213. 打家劫舍 II&#xff08;环形怎么处理&#xff1f;&#xff09;、337. 打家劫舍 III&#xff08;二叉树与动态规划的完美结合&#xff01;&#xff09; 198. 打家劫舍213. 打家劫舍 II337. 打家劫舍 III 198. 打家劫舍 你是一个专业的小偷&…

盘点3款.NetCore(C#)开源免费商城系统

CoreShop商城 介绍 核心商城系统&#xff08;CoreShop&#xff09; 是基于 Asp.Net 8.0、Uni-App开发、支持可视化布局的小程序商城系统&#xff1b;前后端分离&#xff0c;支持跨平台运行&#xff1b;拥有分销、代理、团购秒杀、接龙、拼团、直播、优惠券、自定义表单等众多营…

为什么用迭代器调用不了对象中的函数

没加const可以 加了const就不行 我懂了 加了const v的值就不能修改&#xff0c;我的那些函数都可以修改值 应该是 好像不对 有大佬会吗

直通滤波-PassThrough Filter-原理-代码实现

前言 对坐标轴上的上下限进行约束&#xff0c;选取其中符合范围的点云区域使用场景&#xff1a;去除噪声点&#xff0c;关注特定区域&#xff0c;减小计算量 工作流程 假设我们要在 d d d 轴&#xff08; d ∈ { x , y , z } d \in \{x, y, z\} d∈{x,y,z} &#xff09;上…

yolov5足球运动分析-速度分析-足球跟踪

足球分析项目 引言 在现代体育分析领域&#xff0c;利用先进的计算机视觉技术和机器学习模型对比赛视频进行深入解析已成为一种趋势。本项目旨在通过YOLO&#xff08;You Only Look Once&#xff09;这一顶级的人工智能目标检测模型来识别并跟踪足球比赛中的球员、裁判以及足球…

软件开发详解:通过源码搭建高效的食堂采购与供应链管理平台

通过源码构建定制化的系统&#xff0c;能够让企业根据自身需求灵活调整功能&#xff0c;打造符合其业务流程的高效管理平台。接下来&#xff0c;小编将详细介绍如何通过源码搭建一套高效的食堂采购与供应链管理平台&#xff0c;并分析其在技术架构、功能实现及优化策略方面的关…

大模型入门 ch04:实现一个GPT模型

本文是github上的大模型教程LLMs-from-scratch的学习笔记&#xff0c;教程地址&#xff1a;教程链接 LLM大模型主要是参数量大&#xff0c;而不是代码量大。 这是本节的具体内容 首先实现一个GPT的骨架分别实现GPT骨架内的各个部分&#xff0c;包括LayerNorm&#xff0c;GELU,…

有什么好用的电容笔?2024总结apple pencil平替笔排名TOP五!

在这个信息高度发展的社会&#xff0c;iPad等触控设备日益普及&#xff0c;电容笔的市场需求也不断扩大&#xff0c;因为它们在一定程度上可以替代传统的笔和纸&#xff0c;携带它们就无需携带厚重的书本&#xff0c;这种环保、便捷、方便的特点吸引了越来越多的用户。但电容笔…

动态线程池(五)

动态线程池 Filter过滤器 AlarmBaseFilter NoticeBaseFilter NotifyRedisTateLimiterFilter RedisRateLimiter redis限流器 NotifierHandler DtpNotifier动态线程池通知者 Notifier通知者 关于发送Email消息的额外说明

分布式Id生成策略-美团Leaf

之前在做物流相关的项目时候&#xff0c;需要在分布式系统生成运单的id。 1.需求&#xff1a; 1.全局唯一性&#xff1a;不能出现重复的ID。&#xff08;基本要求&#xff09; 2.递增&#xff1a;大多数关系型数据库&#xff08;如 MySQL&#xff09;使用 B 树作为索引结构。…

三菱FX3U-4DA(4通道模拟量输出)使用说明

FX3U-4DA连接在FX3G/FX3GC/FX3U/FX3UC可编程控制器上&#xff0c;是将来自可编程控制器的4个通道的数字值转换成模拟量值(电压/电流)并输出的模拟量特殊功能模块。 1、FX3G/FX3GC/FX3U/FX3UC可编程控制器上最多可以连接8台*1(包括其它特殊功能模块的连接台数。) 2、可以对各通道…

Global Attention Decoder for Chinese Spelling Error Correction(ACL2021)

Global Attention Decoder for Chinese Spelling Error Correction(ACL2021) 一.概述 作者认为现有的纠错方法大多是基于局部上下文信息进行纠错&#xff0c;没有考虑句子中错词的影响。将注意力放在错误上下文信息上可能会误导并降低CSC(Chinese Spelling Correction)的整体性…

shopro前端 短信登录只显示模板不能正常切换

删掉 换成下面的代码 // 打开授权弹框 export function showAuthModal(type smsLogin) {const modal $store(modal);setTimeout(() > {modal.$patch((state) > {state.auth type;});}, 100); }

数据集 InterHand2.6M 双手交互 三维手势建模 >> DataBall

数据集 InterHand2.6M 双手交互 三维手势建模 人工智能 深度学习 >> DataBall 数据集 InterHand2.6M&#xff0c;双手/单手交互 ---------------------------------------------------------------------------------------------------------- Train set * Train (H):…

MybatisPlus代码生成器使用

一、前言 Mybatis逆向工程也可以生成代码&#xff0c;但配置太过复杂&#xff0c;不便于后期维护&#xff0c;Mybatis Plus 主动集成了代码的自动生成&#xff0c;用起来也很方便&#xff0c;两种代码自动生成我都用过&#xff0c;没有好坏之分&#xff0c;如果非要我推荐哪一…