mybatis学习笔记二:接口编程与注解

MyBatis学习笔记(七)。使用注解开发。事务的自动提交设置,关于@Param注解,#与$的区别 文章目录使用注解开发1. 面向接口编程2. 利用注解开发3. 本质探究4. 事务的自动提交设置5. CRUD5.1 查询5.2 新增5.3 修改5.4 删除6. 关于@Param注解7. \#与$的区别 使用注解开发 1. 面向接口编程 大家之前都学过面向对象编程,也学习过接口,但在真正的开发中,很多时候我们会选择面向接口编程。 根本原因 : 解耦 , 可拓展 , 提高复用 , 分层开发中 , 上层不用管具体的实现 , 大家都遵守共同的标准, 使得开发变得容易 , 规范性更好 在一个面向对象的系统中,系统 阅读详情

一、接口编程

1、概述:接口与动态文件进行动态绑定,即通过(配置文件的命名空间+id)与(接口全类名+方法进行绑定)
2、具体实现(创建表结构、实体类、mybatis配置文件,见学习笔记一)

  • 新建接口UserMapper,并添加selectUser()方法
public interface UserMapper {
    public User selectUser(String userName);
}
  • 创建UserMapper.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">
<mapper namespace="com.chensr.until.mybatis.UserMapper">
    <!-- resultType为返回类型 -->
    <select id="selectUser" resultType="com.chensr.until.mybatis.User">
        select id,user_name as userName, age from user where user_name = #{userName}
    </select>
</mapper>

  注:这里的命名空间namespace值为UserMapper接口的全类名,select标签的id为UserMapper接口的selectUser()方法

  • 测试类
@org.junit.Test
public void selectUserByInterface() throws Exception{
    String resource = "mybatis-config.xml";
    //加载配置文件
    InputStream inputStream = Resources.getResourceAsStream(resource);
    //获取sessionFactory
    SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
    //获取SqlSession,openSession无参时,需要手动提交事务;如果为参数为true,则自动提交事务
    SqlSession session = sqlSessionFactory.openSession();
    try{
        //接口与userMapper.xm绑定,并为UserMapper创建一个代理类
        UserMapper mapper = session.getMapper(UserMapper.class);
        User user =mapper.selectUser("陈大爷");
        System.out.println(user.toString());
    }finally {
        session.close();
    }
}

  注:UserMapper mapper = session.getMapper(UserMapper.class);就是用于接口与mapper.xml绑定

  • 测试结果

      
 

二、基于注解(无需mapper.xml)

  • 通过在接口上写注解(sql),实现对数据库的操作
  • 具体实现(在接口UserMapper里添加saveUser方法)
public interface UserMapper {
    public User selectUser(String userName);

    @Insert("INSERT INTO user (user_name,age) VALUE (#{userName},#{age})")
    public void saveUser(User user);
}

  注:使用Insert注解,sql写法与配置文件写法一致

  • 测试类
@org.junit.Test
public void saveUserByInterface() throws Exception{
    String resource = "mybatis-config.xml";
    //加载配置文件
    InputStream inputStream = Resources.getResourceAsStream(resource);
    //获取sessionFactory
    SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
    //获取SqlSession,openSession无参时,需要手动提交事务;如果为参数为true,则自动提交事务
    SqlSession session = sqlSessionFactory.openSession();
    try{
        User user = new User();
        user.setUserName("李大爷");
        user.setAge(30);
        //接口与userMapper.xm绑定,并为UserMapper创建一个代理类
        UserMapper mapper = session.getMapper(UserMapper.class);
        mapper.saveUser(user);
        //提交事务
        session.commit();
    }finally {
        session.close();
    }
}
  • 测试结果

      


注:由于mybatis的原则就是要将sql与java代码分离,所以不建议使用注解

宜搭子表单(自定义页面全部展示) 效果:增加自定义页面添加表格组件,配置数据源变量: formUuid'表单编码'变量: pageSize10变量: currentPage1。 阅读详情

相关推荐

新手也能搞定!用ADS 2023从零设计一个超宽带Wilkinson功分器(附完整版图)

本文详细介绍了如何使用ADS 2023从零开始设计超宽带Wilkinson功分器,涵盖介质板参数设置、微带线计算优化、版图生成验证等关键步骤。通过实例演示和常见问题排查,帮助射频工程新手快速掌握功分器设计技巧,提升设计效率。

weixin_42692935的博客 476

MyBatis框架核心之(三)注解使用接口映射

二、Mybatis接口映射(注解) 传统的mapper.xml+接口使用接口映射相对较麻烦 所以我们可以使用注解来简化开发   支持的注解有以下: MyBatis可以利用SQL映射文件来配置,也可以利用Annotation来设置。MyBatis提供的一些基本注解如下表所示。 注解 目标 相对应的 XML 描述 @C

弱弱的猿 7555

解决TextMeshPro在AB打包中的字体冗余问题:源码修改全记录

本文详细介绍了如何解决TextMeshPro在AB打包中的字体冗余问题,通过源码改造和工程实践优化Unity项目的性能。内容包括资源加载路径重构、AB打包策略优化及运行时加载方案,有效减少包体体积和构建时间,提升内存效率。

weixin_42558257的博客 185

Mybatis XML和接口注解 两种方式CURD

mybatis CURD

Youngholl2016的博客 9833

告别“静态组件”:Adobe XD的堆栈+状态,打造“活”的响应式UI

今天,我想分享一套能彻底告别这种“笨方法”的、Adobe XD中的进阶技巧,通过组合使用“堆栈”、“内边距”和“组件状态”,去构建一个能自动适应内容、真正“活”起来的智能响应式组件。

Kingsdesigner的博客 761

潜在图神经网络学习笔记(Latent Graph Neural Networks for Human Skeleton-based Action Recognition)

在本文中,我们从一个新的角度来解决这个问题,通过将非结构化的骨架数据映射到潜在空间,如图2所示,这里称为潜在特征空间或嵌入空间,其中一组项嵌入在一个流形中[ 1 ],并且在潜在空间中彼此更相似的项被放置在彼此更接近的位置。潜在空间中的位置可以被认为是由一组潜在变量定义的,这些潜在变量来源于对象的相似性。将骨架数据嵌入到流形中,消除了远近邻居之间的冗余依赖关系,以解决加权问题。得到具有多尺度聚合特征的稀疏图矩阵结构,以更好地理解骨骼关节的直接加权信息。

qq_45631885的博客 489

mybatis入门实例

package bean;        public class User {        private String name;        private Integer age;            public String getName() {           return name;        }        public void setNam

cuihuaming198809的专栏 810

本地化部署dify,使用Database插件实现dify直连数据库报错No module named ‘MySQLdb‘解决方案

网上查阅各种资料,有说修改/dify-main/docker/volumes/sandbox/dependencies目录下的python-requirements.txt文件,添加了如下两行,试验后无效。,看到有人是其他报错,但是URI配置如下(在mysql后面加了pymysql),尝试后果真成功了。按照系统提示设置完数据库URI后保存出现错误。在工具市场查询Database,点击后进行授权。最后在该插件的项目地址获得灵感。

qiaoxu1989的博客 4333

Mybatis框架实现CRUD操作

Mybatis框架实现CRUD操作 为了方便测试,分别增加@Before 和@After,代码如下: public class MyBatisTest { private SqlSession sqlSession; private UserMapper userMapper; /*** * 在执行@Test之前执行 */ @Befor...

少营营的博客 464

FastAdmin框架Token验证实战:从登录到API调用的完整流程

本文详细解析了在FastAdmin框架中实现Token验证的完整流程,从数据表设计、登录接口签发Token,到核心验证中间件的编写与路由配置,并探讨了在业务API中的调用与安全实践。内容涵盖Token生成策略、有效期管理及安全增强措施,为开发者提供了一套可落地的API身份验证解决方案。

nnn11的博客 917

【Python搞定车载自动化测试】——Python实现车载以太网DoIP刷写(含Python源码)

随着智能电动汽车行业的发展,汽车=智能终端+四个轮子,而人工智能也发展越来越快,Python语言使用越来越广,本章节主要介绍如何使用Python语言基于Pytest自动化框架来实现DoIP诊断自动化测试。首先回顾一下DoIP诊断基础知识:DoIP(Diagnosis over Internet Protocol)是一种用于车辆诊断的网络通信协议。它基于现代互联网技术,允许通过以太网或IP网络进行车辆诊断和通信。

测试领域技术分享 3795

Mybatis的配置优化和CRUD操作

参数传递机制、核心配置文件优化、模糊查询、获取主键、resulType和reultMap的区别

卡卡的博客 347

Python中的字典(Dictionary)学习

上一章节,我们学习了列表(List) 和 元组(tuple) 来表示有序集合。而我们在讲列表(list)的时候,我们用了列表(list) 来存储用户的姓名。那么如果我们为了方便联系这些童鞋,要把电话号码也添加进去,该怎么做呢?但是这样很不方便,我们把电话号码记录下来,就是为了有什么事能及时联系上这些童鞋。如果用列表来存储这些,列表越长,我们查找起来耗时就越长。

热情、奔放、快乐编程! 503

MyBatis 从入门到精通:使用注解开发的MyBatis

优点描述解耦降低模块之间的依赖性,使系统更加灵活可拓展方便对系统进行扩展,增加新的功能模块提高复用多个模块可以共享同一个接口,提高了代码的复用性规范性更好接口定义了模块之间的通信规范,使得系统的设计更加规范化本文介绍了使用注解开发的MyBatis应用,包括面向接口编程的优点、实践方式,以及如何利用注解简化CRUD操作。通过合理地应用面向接口编程和注解开发,能够提高系统的灵活性和开发效率。

沉淀所学,分享所思,让热爱与成长同行。商务记录AI实战经验,助力开发者快速成长。 热爱AI,希望做出有影响力的技术成果。 技术点亮生活,分享连接价值与机会。 专注AI落地实战,陪你走好技术每一步。 1227

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

狂神说MyBatis04:使用注解开发

狂神说MyBatis系列连载课程,通俗易懂,基于MyBatis3.5.2版本,欢迎各位狂粉转发关注学习,视频同步文档。未经作者授权,禁止转载使用注解开发上集回顾:狂神说MyBatis03...

狂神说 5102

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

mybatis的接口绑定方式(注解绑定和配置xml文件)

1、创建pojo类 2、创建mapper.java接口 3、在mybatis-config.xml中更改mapper配置 4、创建测试类 这里以teacher表为例进行编码: 1、创建pojo类(Teacher 对象) 给定是三个属性 id,name,sex 并 右击 generate 出他们的getter and setter 和 toString()方法 public class Teacher { private Integer id; private Str.

车车的博客 1万+

MyBatis注解配置

通过MyBatis注释的方式进行——单表增删改查、多表关联查询、实现动态SQL方法

2302_80892440的博客 2129

MyBatis(二)接口绑定方式介绍(xml和注解)

MyBatis的真正强大之处在于其映射语句。由于其映射语句很强大,映射器的XML文件就显得相对简单。若将其与具有相同功能的JDBC代码进行对比,会发现,使用这种方法节省了近95%的代码量。MyBatis3.0相较2.0版本一个最大的变化,就是支持使用接口来调用方法。MyBatis使用Java的动态代理可以直接通过接口来调用相应的方法,不需要提供接口的实现类,也不需要在实现类中使用SqlSess...

duanduan_l的博客 3690

Spring5学习笔记5——注解编程

Spring5学习笔记5——注解编程 文章目录Spring5学习笔记5——注解编程第五部分:Spring基于注解的编程第一章、注解基础概念1. 什么是注解编程2. 为什么要学习注解编程3. 注解的作用4. Spring注解的发展历程5. Spring注解开发的一个问题第二章、Spring的基础注解(Spring2.x)1. 对象创建相关注解2. 注入相关注解3. 注解扫描详解3.1 排除过滤3.2 包含过滤4. 对于注解开发的思考5. SSM整合开发(半注解开发)第三章、Spring的高级注解(Spring

Ning_chuan的博客 2775

Mybatis学习笔记5:面向接口编程、注解开发

一、面向接口编程 面向对象编程:在一个面向对象的系统中,系统的各种功能是由许许多多的不同对象协作完成的。这种情况下,各个对象内部是如何实现自己的,对系统设计人员来讲就不那么重要了;而各个对象之间的协作关系则成为系统设计的关键。 面向接口编程:就是为了处理对象之间的协作关系,去实现类之间的通信,模块之间的交互等等而设计出来的编程思想。 使用原因:解耦 , 可拓展 , 提高复用 , 分层开发中 , 上层不用管具体的实现 , 大家都遵守共同的标准 , 使得开发变得容易 , 规范性更好。 关于接口:接口从.

Vincent9847的博客 299

Mybatis 使用注解开发

Param多参数方法,避免参数混淆通过名字直接引用参数,尤其在动态 SQL 中#{}与${}${}和#{}的区别_#{}和${}-优快云博客lambokLombok 使用教程(超级详细) - 犬小哈教程是什么?一个java库,通过注解的方式简化了java代码的编写。

redemption_2的博客 935

【SSM-Mybatis】Mybatis配置方式(不用接口,用mapper,使用注解)

用最简单的只有 id 和name的表演示 对应World类 public class World { int id; String name; @Override public String toString() { return "World{" + "id=" + id + ", n...

codeDonald的博客 4438

MyBatis基础三(注解开发)

为什么要分页?减少数据的处理量。使用Mybatis实现分页,核心 SQL1、接口3、测试。

await_9的博客 1121

MyBatis知识汇总(第六篇)面向接口编程,使用注解开发,关于@Param注解,#与$的区别

前言:学习自https://www.bilibili.com/video/BV1NE411Q7Nx?p=9 文章目录一、面向接口编程1、简介2、关于接口二、使用注解开发1、实例测试2、官方文档的建议3、部分原理的补充(1)反射机制(2)动态代理 一、面向接口编程 1、简介 根本原因:解耦,可扩展,提高复用性。 在分层开发中,上层不用管具体的实现,大家都遵守共同的标准,使得开发更加规范化,简便化。 使主要精力放到各对象之间的写作关系上,减少在各种功能对象的内部实现上花过多精力。 2、关于接.

Zhou_LC的博客 423

Mybatis接口注解

面向接口编程 大家之前都学过面向对象编程,也学习过接口,但在真正的开发中,很多时候我们会选择面向接口编程 - 根本原因 : 解耦 , 可拓展 , 提高复用 , 分层开发中 , 上层不用管具体的实现 , 大家都遵守共同的标准 , 使得开发变得容易 , 规范性更好 - 在一个面向对象的系统中,系统的各种功能是由许许多多的不同对象协作完成的。在这种情况下,各个对象内部是如何实现自己的,对系统设计人员来讲就不那么重要了; - 而各个对象之间的协作关系则成为系统设计的关键。小到不同类之间的通信,大到各模块之间的交

m0_53698336的博客 299

手写MyBatis第111弹:Spring Boot自定义注解@MybatisMapperScan注解深度解析:从注解定义到接口代理的完整实现

本文深入解析了如何自定义实现@MybatisMapperScan注解的完整过程。首先介绍了注解设计的关键点,包括元数据定义和重复注解支持。然后详细阐述了MybatisMapperScannerRegistrar的实现原理,展示了如何通过ImportBeanDefinitionRegistrar接口实现配置类处理。文章还重点分析了自定义扫描器MybatisClassPathMapperScanner的核心逻辑,以及增强版MapperFactoryBean的实现细节。最后,通过示例演示了该注解的使用方式,并提供

源码获取 | 运行部署 | 定制二开修改,如果回复不及时请耐心等待,请见谅。 1149

Mybatis接口注解说明+MybatisPlus

Mybatis接口注解说明+MybatisPlus 1. Mybatis 接口注解说明 1.1 需求说明 Mybatis实现数据查询时有2种Sql的写法。 1.将所有的Sql语句都写到xml 映射文件中。(万能操作方式) 2.可以将Sql语句通过注解的方式标识在接口方法中.(只适用于简单操作) //注意事项:映射文件和注解二选一 @Select("select * from demo_user where id = #{id}") User fidUserById(int id);

无名氏—不学代码的博客 808
上一篇: mybatis学习笔记一:增删改查
下一篇: mybatis学习笔记三:mybatis-config.xml配置文件简要说明
chenshourui
博客等级 码龄14年 57粉丝 37原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值