Mybatis学习(2)以接口的方式编程

AI训练师团队管理运营思路 工具运营AI训练师主要是支撑运营,协助算法和运营提高托管机器人的解决能力,以协助降低业务场景熔断与优化场景识别为核心运营目标,通过算法聚类、标注分析等方式,结合业务知识,提供精准、清晰的标注数据和解决方案,确保训练效果满足需求。过程中需要与算法、运营一块参与模型搭建和数据验收,并且负责核心指标和数据日常的跟踪维护。④针对知识库已有意图进行梳理和分析,反馈运营评估缺失或合并意图优化方向。③对语料数据进行挖掘、清洗,解除缠绕、冗余等问题导致的未识别。①线上case分析,及时发现识别问题导致的托管熔断问题。 阅读详情
前面一章,已经搭建好了eclipse,mybatis,mysql的环境,并且实现了一个简单的查询。请注意,这种方式是用SqlSession实例来直接执行已映射的SQL语句:
session.selectOne("com.yihaomen.mybatis.models.UserMapper.selectUserByID", 1)
其实还有更简单的方法,而且是更好的方法,使用合理描述参数和SQL语句返回值的接口(比如IUserOperation.class),这样现在就可以至此那个更简单,更安全的代码,没有容易发生的字符串文字和转换的错误.下面是详细过程:

在src_user源码目录下建立 com.yihaomen.mybatis.inter 这个包,并建立接口类 IUserOperation , 内容如下:

[java]  view plain copy print ?
  1. package com.yihaomen.mybatis.inter;  
  2. import com.yihaomen.mybatis.model.User;  
  3. public interface IUserOperation {      
  4.     public User selectUserByID(int id);  
  5. }  

请注意,这里面有一个方法名 selectUserByID 必须与 User.xml 里面配置的 select 的id 对应(<select id="selectUserByID")

重写测试代码

[java]  view plain copy print ?
  1. public static void main(String[] args) {  
  2.         SqlSession session = sqlSessionFactory.openSession();  
  3.         try {  
  4.             IUserOperation userOperation=session.getMapper(IUserOperation.class);  
  5.             User user = userOperation.selectUserByID(1);  
  6.             System.out.println(user.getUserAddress());  
  7.             System.out.println(user.getUserName());  
  8.         } finally {  
  9.             session.close();  
  10.         }  
  11.     }  


整个工程结构图现在如下:


运行这个测试程序,就可以看到结果了。




实现数据的增删改查


前面已经讲到用接口的方式编程。这种方式,要注意的一个地方就是。在User.xml  的配置文件中,mapper namespace="com.yihaomen.mybatis.inter.IUserOperation" ,命名空间非常重要,不能有错,必须与我们定义的package 和 接口一致。如果不一致就会出错,这一章主要在上一讲基于接口编程的基础上完成如下事情:
1. 用 mybatis 查询数据,包括列表
2. 用 mybatis 增加数据
3. 用 mybatis 更新数据.
4. 用 mybatis 删除数据.

查询数据,前面已经讲过简单的,主要看查询出列表的

查询出列表,也就是返回list, 在我们这个例子中也就是 List<User> , 这种方式返回数据,需要在User.xml 里面配置返回的类型 resultMap, 注意不是 resultType, 而这个resultMap 所对应的应该是我们自己配置的

[html]  view plain copy print ? 在CODE上查看代码片 派生到我的代码片
  1. < !-- 为了返回list 类型而定义的returnMap -->  
  2.     <resultMap type="User" id="resultListUser">  
  3.         <id column="id" property="id" />  
  4.         <result column="userName" property="userName" />  
  5.         <result column="userAge" property="userAge" />  
  6.         <result column="userAddress" property="userAddress" />  
  7.     </resultMap>  

查询列表的语句在 User.xml 中

[html]  view plain copy print ? 在CODE上查看代码片 派生到我的代码片
  1. < !-- 返回list 的select 语句,注意 resultMap 的值是指向前面定义好的 -->  
  2.     <select id="selectUsers" parameterType="string" resultMap="resultListUser">  
  3.         select * from user where userName like #{userName}  
  4.     </select>  

在 IUserOperation 接口中增加方法:public List<User> selectUsers(String userName);    

现在在 Test 类中做测试

[java]  view plain copy print ? 在CODE上查看代码片 派生到我的代码片
  1. public void getUserList(String userName){  
  2.         SqlSession session = sqlSessionFactory.openSession();  
  3.         try {  
  4.             IUserOperation userOperation=session.getMapper(IUserOperation.class);            
  5.             List<User> users = userOperation.selectUsers(userName);  
  6.             for(User user:users){  
  7.                 System.out.println(user.getId()+":"+user.getUserName()+":"+user.getUserAddress());  
  8.             }  
  9.         } finally {  
  10.             session.close();  
  11.         }  
  12.     }  


现在在main  方法中可以测试:

[java]  view plain copy print ? 在CODE上查看代码片 派生到我的代码片
  1. public static void main(String[] args) {  
  2.         Test testUser=new Test();  
  3.         testUser.getUserList("%");  
  4.     }  

可以看到,结果成功查询出来。如果是查询单个数据的话,用第二讲用过的方法就可以了。

用mybatis 增加数据 
在 IUserOperation 接口中增加方法:public void addUser(User user);

在 User.xml 中配置

[html]  view plain copy print ? 在CODE上查看代码片 派生到我的代码片
  1. < !--执行增加操作的SQL语句。id和parameterType    
  2.        分别与IUserOperation接口中的addUser方法的名字和    
  3.        参数类型一致。以#{name}的形式引用Student参数    
  4.        的name属性,MyBatis将使用反射读取Student参数    
  5.        的此属性。#{name}中name大小写敏感。引用其他    
  6.        的gender等属性与此一致。seGeneratedKeys设置    
  7.        为"true"表明要MyBatis获取由数据库自动生成的主    
  8.        键;keyProperty="id"指定把获取到的主键值注入    
  9.        到Student的id属性-->   
  10.     <insert id="addUser" parameterType="User"   
  11.         useGeneratedKeys="true" keyProperty="id">   
  12.         insert into user(userName,userAge,userAddress)    
  13.              values(#{userName},#{userAge},#{userAddress})    
  14.     </insert>  

然后在 Test 中写测试方法:

[java]  view plain copy print ? 在CODE上查看代码片 派生到我的代码片
  1. /** 
  2.      * 测试增加,增加后,必须提交事务,否则不会写入到数据库. 
  3.      */  
  4.     public void addUser(){  
  5.         User user=new User();  
  6.         user.setUserAddress("人民广场");  
  7.         user.setUserName("飞鸟");  
  8.         user.setUserAge(80);  
  9.         SqlSession session = sqlSessionFactory.openSession();  
  10.         try {  
  11.             IUserOperation userOperation=session.getMapper(IUserOperation.class);  
  12.             userOperation.addUser(user);  
  13.             session.commit();  
  14.             System.out.println("当前增加的用户 id为:"+user.getId());  
  15.         } finally {  
  16.             session.close();  
  17.         }  
  18.     }  

用mybatis 更新数据
方法类似,先在 IUserOperation 中增加方法:public void addUser(User user);

然后配置 User.xml 

[html]  view plain copy print ? 在CODE上查看代码片 派生到我的代码片
  1. <update id="updateUser" parameterType="User" >  
  2.         update user set userName=#{userName},userAge=#{userAge},userAddress=#{userAddress} where id=#{id}  
  3.  </update>  

Test 类总的测试方法如下:

[java]  view plain copy print ? 在CODE上查看代码片 派生到我的代码片
  1. public void updateUser(){  
  2.         //先得到用户,然后修改,提交。  
  3.         SqlSession session = sqlSessionFactory.openSession();  
  4.         try {  
  5.             IUserOperation userOperation=session.getMapper(IUserOperation.class);  
  6.             User user = userOperation.selectUserByID(4);              
  7.             user.setUserAddress("原来是魔都的浦东创新园区");  
  8.             userOperation.updateUser(user);  
  9.             session.commit();  
  10.         } finally {  
  11.             session.close();  
  12.         }  
  13.     }  

用mybatis 删除数据 
同理,IUserOperation 增加方法:public void deleteUser(int id);

配置User.xml

[html]  view plain copy print ? 在CODE上查看代码片 派生到我的代码片
  1. <delete id="deleteUser" parameterType="int">  
  2.         delete from user where id=#{id}  
  3. </delete>  

然后在Test类中写测试方法:

[java]  view plain copy print ? 在CODE上查看代码片 派生到我的代码片
  1. /** 
  2.  * 删除数据,删除一定要 commit. 
  3.  * @param id 
  4.  */  
  5. public void deleteUser(int id){  
  6.     SqlSession session = sqlSessionFactory.openSession();  
  7.     try {  
  8.         IUserOperation userOperation=session.getMapper(IUserOperation.class);            
  9.         userOperation.deleteUser(id);  
  10.         session.commit();              
  11.     } finally {  
  12.         session.close();  
  13.     }  
  14. }  

这样,所有增删改查都完成了,注意在增加,更改,删除的时候要调用session.commit(),这样才会真正对数据库进行操作,否则是没有提交的。

到此为止,简单的单表操作,应该都会了,接下来的时间了,我会讲多表联合查询,以及结果集的选取。


Carsim2019与Simulink (Matlab2018b)联合仿真成功(超详细) Carsim与Simulink联合仿真成功 阅读详情

相关推荐

MATLAB实战:纯电动汽车动力性仿真从入门到精通(附完整代码)

本文提供了一份基于MATLAB的纯电动汽车动力性仿真从入门到精通的实战指南。通过理论建模与代码实战相结合,详细讲解了如何构建行驶阻力模型、驱动力平衡方程,并利用MATLAB脚本完整实现了最高车速、加速时间和最大爬坡度三大核心性能指标的仿真计算。文章附有完整代码,帮助工程师快速掌握纯电动汽车动力性仿真的核心技能,为设计与优化提供高效的数字工具。

weixin_29074409的博客 368

ibatis学习之--3、根据id查询对应的用户信息

根据id查询对应的用户信息(使用上一节的demo) 1,在总的配置文件中:   总的配置文件已经引用了实体类的配置文件。   2,在实体类的配置文件中: 根据id来查询对应的用户信息-->  select id="selectUserById"parameterClass="int" resultClass="User">      select * fromtb_user wh

左岸人的博客 2909

高频面试题-项目介绍篇

聊聊如何介绍项目经历。

m0_73359763的博客 1908

mybatis以接口方式编程

前面一章mybatis入门中已经搭建好了mybatis的运行环境,并且实现了一个简单的查询,该方式是sqlSession实例来直接执行已映射的sql语句 session.selectOne(“cn.bdyl.model.UserMapper.selectUserById”,1); 下面我们介绍下以接口的方式编程的方法(使用该方式能有效的避免字符串文字和转换的错误): 首先,在src创建一个专门

Zzooper的博客 754

农经权二轮延包—地块示意图生成

本文介绍了地块示意图制作软件的使用方法及模板制作要点。软件通过设置六个参数(示意图模板、属性数据、地块DBF、导航图、地块图片及存放位置)自动生成Word文档,并可导出PDF。文章详细说明了5页Word模板的制作过程,包括页脚三栏设置和页码插入技巧,支持每户最多28个地块的情况。同时指出该软件生成的图片分辨率(300dpi)满足清晰度要求,并提及软件免费提供插件但收费提供后续服务。

weixin_47364423的博客 1112

ROS2实战:从零部署Cartographer激光SLAM系统

本文详细介绍了在ROS2 Humble环境下,从零开始部署Cartographer激光SLAM系统的完整实战流程。内容涵盖环境准备、Cartographer安装(APT与源码编译两种方式对比)、工作空间与功能包创建、核心启动文件与Lua配置文件编写、系统构建与可视化启动,以及地图保存与实战调参技巧,帮助开发者快速构建稳定可靠的机器人SLAM应用。

weixin_29213655的博客 248

Mybatis系列(六)接口式编程

Mybatis系列之接口式编程 引言 在前面的文章《Mybatis系列之简单示例》曾有一段代码涉及到了接口式编程,当时并没有展开阐述,今天我们单独把这一段拿出来表一表。 在讲Mybatis接口式编程之前,我们先回忆一下前面是如何调用映射文件中的SQL代码的。通常情况下,都是使用SqlSession实例的selectXXX(selectOne, selectList, selectMap)...

Chris Mao的专栏 523

手把手教你双目测距理论及生成视差图,深度图,点云图像

Stereo Vision, 也叫双目立体视觉,它的研究可以帮助我们更好的理解人类的双眼是如何进行深度感知的。双目视觉在许多领域得到了应用,例如城市三维重建、3D模型构建(如kinect fusion)、视角合成、3D跟踪、机器人导航(自动驾驶)、人类运动捕捉(Microsoft Kinect)等等。双目测距也属于双目立体视觉的一个应用领域,双目测距的基本原理主要是三角测量原理,即通过视差来判定物体的远近。

qq_53545309的博客 2280

Mybatis学习之接口的方式编程(2)

前面一章,已经搭建好了eclipse,mybatis,mysql的环境,并且实现了一个简单的查询。请注意,这种方式是用SqlSession实例来直接执行已映射的SQL语句: session.selectOne("com.yihaomen.mybatis.models.UserMapper.selectUserByID", 1) 其实还有更简单的方法,而且是更好的方法,使用合理描述参数和SQL语

z742182637的博客 429

YOLOv8 改进:添加 LSK 注意力机制

通过添加 LSK 注意力机制,YOLOv8 能够更有效地捕捉特征图上的重要信息,提高检测性能,尤其是在复杂场景下展现出色的表现。这种方法不仅适用于资源受限的设备,还能在丰富多样的实际应用中提供强劲支持。

走向CTO的路上... 1221

YOLOv8改进 | 主干网络 | 在backbone添加Swin-Transformer层【论文必备】

YOLOv8改进,Swin-Transform,YOLOv8添加Swin-Transform

kay_545 2366

MyBatis的Mapper接口编程方式

使用传统的DAO开发方式虽然可以实现需求所需功能,但是采用这种方式在实现类中会出现大量重复代码,在方法中也需要指定映射文件中执行语句的id,并且不能保证编写时id正确性。

My Blog 1996

API深度集成——OpenClaw与第三方服务无缝对接(2026实战版)

本文介绍了OpenClaw系统与第三方服务的API深度集成技术,重点阐述了RESTful API的实现方案。通过一个功能完善的REST客户端类(RestClient)展示了核心功能:支持请求重试、拦截器机制、错误处理和认证管理等;同时提供了API资源管理器(ApiResourceManager)简化资源操作。这些技术实现了OpenClaw与外部系统的稳定可靠对接,为开发者构建API集成方案提供了2026年的最佳实践。

博客 1214

Mybatis学习之接口编程

回顾 在上一篇Mybatis学习之初步上手我们上手了一个helloworld例子,需要以下几步: 创建mybatis-config.xml 全局配置文件,相关连接数据库配置 创建Mapper文件,存放对应sql语句,注明唯一表示id和返回数据时封装的类型 然后用sqlsession执行sql语句,查询得出结果并自动封装成对应类型 接口编程 面向接口编程通常是编程的良好实践,我们我在查询执行sq...

weixin_34349320的博客 138

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

Mybatis接口编程方式实现增删改查

Mybatis接口编程方式实现增删改查

Evankaka的专栏 8682

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

Mybatis面向接口编程

在使用Mybatis的时候,我们通过sqlSession的各种方法和数据交互,比如查询我们是通过sqlSession.selectList("Namespace.sqlId",paramObj),对于插入数据以及修改和删除数据也是同样的通过sqlSession的方法操作,传入配置文件中sql语句对应的唯一id以及动态拼装sql的参数。然后返回的结果是泛型类型,也就是任意的Object类型。距离来说

dyy_gusi的博客 5859

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

Mybatis基于命名空间的接口编程方式

第一个例子用的是完全限定类名方式操作映射的sql语句: User user = session.selectOne("com.mybatis.entity.UserMapper.selectUserByID",1); Mybatis提供了使用接口方式操作已经映射的sql语句: BlogMapper mapper = session.getMapper(BlogMapper.class

吴兵的专栏 1314

mybatis系列六:使用getMapper方式实现面向接口的编程

mybatis有一个种面向接口的编程方式,即只写接口,不用写接口实现类。 实现这种编程方式的关键是:   1.mapper文件的命名空间必须是包名.接口名的形式,如:com.obtk.dao.IStudentDao  2.mapper文件里面的select标签的id值必须和接口里面的方法名称要一致 具体案例: 接口: package com.obtk.dao; import ja

御前两把刀的专栏 4309

《Mybatis学习-2》Mybatis的接口式编程

mybatis最基本的增删改查是存在一些问题的。因为他第二个参数的类型是object类型,但是数据库中对应的id是int类型,我们这边传入字符(比如:abc)的话,运行是会出错的。所以为了能够限制参数的类型,我们还是使用接口式编程吧。 Employee employee = openSession.selectOne( "njci.software.Emp...

Java是世界上最好的语言 187

Mybatis学习2-接口编程

mybatis常使用接口编程,优点是解耦、类型检查 接口式编程步骤 1.接口式编程 原生 Dao===> DaoImp mybatis:Mapper====>xxMapper.xml 2.SqlSession代表和数据库的一次回访,用完必须关闭 3.SqlSession和connetion一样非线程安全,每次使用都应该获取新的对象 4.mapper接口没有实现类,但mybatis会为...

every place is the center of the universe 174

MyBatis接口绑定的实现方式

从而实现接口绑定。实现步骤:在 Mapper 接口的方法上使用 MyBatis 提供的注解,如 @Select、@Insert、@Update、@Delete。在 MyBatis 配置文件中注册 Mapper 接口所在的包路径。

thehateyou的博客 566

mybatis接口方式编程

上一篇博客是直接对sql语句进行操作,还有一种更简单更安全的方法。

下半夜的风 425

MyBatis进阶-1-面向接口编程

通过 MyBatis 底层自动创建接口实现类,我们可以直接对接口的方法进行编程若简单的 sql 语句可以使用注解的方式进行,复杂的查询建议使用 xml 文件编写语句注解使用时直接在接口的方法上加上对应语句的注解即可,而使用 xml 需要在文件中的标签引用到当前接口和里面的方法。

m0_75138009的博客 1161

Mybatis总结(2)接口式编程

实际工作中使用Mybatis都是使用接口式编程: 使用接口来描述给定的sql的参数和返回值 public interface EmployeeMapper extends BaseMapper<Employee, Long> { void deleteRoleAndEmployee(@Param("empSn") Long empSn); } 将接口与配置文件绑定 &...

myllxy 208

Mybatis(2)基于命名空间的接口编程方式

第一个例子用的是完全限定类名方式操作映射的sql语句: User user = session.selectOne("com.mybatis.entity.UserMapper.selectUserByID",1); Mybatis提供了使用接口方式操作已经映射的sql语句: BlogMapper mapper = session.getMapper(BlogMapper.clas...

a7639915的博客 217

mybatis之接口式编程

接口式编程 1.接口式编程 原生: dao ===> daoImpl mybatis: mapper ===> xxMapper.xml 2.SqlSessio代表和数据库的一次会话,用完必须关闭 3. SqlSession和connection一样,都是非线程安全,每次用完都应该获取新的对象 4.mapper接口没有实现类,但是mybatis会为这个接口生成一个代理对象。 (将接口和xml绑定) EmployeeMapper mapper = sq

weixin_46665411的博客 986
上一篇: Mybatis学习(1)开发环境搭建
下一篇: Mybatis学习(3)实现关联数据的查询
achuo
博客等级 码龄18年 491粉丝 11原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值