当前位置: 首页 > news >正文

数据库操作的方法签名

数据库操作的方法签名 在 MyBatis 或 JPA 等ORM框架的上下文中,指的是在 Mapper 接口 或 Dao 接口 中声明的、用于执行数据库操作的方法的结构定义

它主要由以下几个部分组成:

一、方法签名的核心组成部分

一个典型的数据库操作方法签名包括:

  1. 访问修饰符 (public)

  2. 返回类型 (intvoidUserList<User> 等)

  3. 方法名称 (insertdeleteByIdselectUserByName 等)

  4. 参数列表 ((User user)(Integer id)(String name, Integer age) 等)

  5. 可选的注解 (@Param@Insert@Select 等)


二、不同数据库操作的方法签名示例

我们结合 MyBatis 的 Mapper 接口来看一些具体的例子。

1. 插入操作 (Insert)

 
// 返回插入的行数(通常为1)
int insert(User user);// 返回插入的行数,并且要求获取自增主键(主键值会回填到参数对象中)
int insert(User user); // 配合XML中的 useGeneratedKeys="true"// 返回布尔值表示成功与否(不常用,但可行)
boolean insertUser(User user);

2. 删除操作 (Delete)

 
// 根据主键删除,返回删除的行数
int deleteById(Integer id);// 根据实体条件删除,返回删除的行数
int deleteByEntity(User user);// 根据Map条件删除
int deleteByMap(Map<String, Object> params);

3. 更新操作 (Update)

 
// 更新一个实体,返回受影响的行数
int update(User user);// 根据主键更新
int updateById(User user);

4. 查询操作 (Select) - 返回类型最丰富

返回单个对象:

 
// 根据主键查询,可能返回null
User selectById(Integer id);
User getById(Integer id); // get和select通常可以互换// 根据条件查询单个对象
User selectByUsername(String username);
User selectByUsernameAndPassword(@Param("username") String username, @Param("password") String password); // 多参数使用@Param

返回集合(列表):

 
// 查询所有用户
List<User> selectAll();
List<User> findAll();// 根据条件查询列表
List<User> selectByAgeGreaterThan(Integer age);
List<User> selectByEntity(User user); // 以非空属性作为条件
List<User> selectByMap(Map<String, Object> params);

返回特殊类型:

 
// 查询数量
Long selectCount();// 查询某个字段
String selectUsernameById(Integer id);// 查询结果封装到Map中(key为记录的某个字段,value为实体)
@MapKey("id") // 指定用id字段作为Map的key
Map<Integer, User> selectAllAsMap();

三、方法签名与 XML 映射的绑定规则

方法签名之所以能工作,是因为它与 Mapper XML 文件中的定义严格对应。MyBatis 通过以下规则进行绑定:

  1. 方法名 = SQL语句的id

     
    // 接口中的方法名
    User selectUserById(Integer id);
     
    <!-- XML中SQL的id必须与方法名一致 -->
    <select id="selectUserById" resultType="User">SELECT * FROM user WHERE id = #{id}
    </select>
  2. 参数类型 = parameterType

    • 如果只有一个参数,#{...} 里的名字可以任意,但通常与参数名一致。

    • 如果有多个参数,必须使用 @Param 注解#{...} 里的名字就是注解的值。

     
    // 多参数示例
    User selectByUsernameAndPassword(@Param("uname") String username, @Param("pwd") String password);
     
    <select id="selectByUsernameAndPassword" resultType="User">SELECT * FROM user WHERE username = #{uname} AND password = #{pwd}
    </select>
  3. 返回类型 = resultType / resultMap

    • 返回单个对象:resultType="User" 或 resultMap="UserMap"

    • 返回集合:同样是 resultType="User" 或 resultMap="UserMap",MyBatis 会自动识别并包装成 List。


四、在你项目中的具体例子

根据你之前的 BaseDao<T> 接口,我们可以看到一系列非常标准的方法签名:

java
public interface BaseDao<T>{// 插入:返回int,参数是泛型实体Tint insert(T entity);// 删除:返回void或int,参数是主键ID(Serializable或具体类型)void deleteById(Serializable id);// 更新:返回void或int,参数是泛型实体Tvoid update(T entity);// 查询单个:返回泛型T,参数是主键IDT getById(Serializable id);// 查询列表:返回List<T>,参数是Map或实体List<T> listByMap(Map<String,Object> params);List<T> listAllByEntity(T entity);
}

总结

数据库操作的方法签名的本质是:一个在Java接口中定义的、与Mapper XML文件中的SQL语句id一一对应的、包含了完整参数和返回类型信息的方法声明。

它的核心作用是建立Java方法调用和SQL语句执行之间的桥梁。MyBatis框架在运行时,会根据这个签名找到对应的SQL,将参数传递过去,并按照声明的返回类型来处理结果。

http://www.hskmm.com/?act=detail&tid=14322

相关文章:

  • 完整教程:第33章 AI在教育领域的应用
  • 易软通openWMS - 功能齐全的开源WMS
  • C# 中的 ReferenceEquals 方法 - 教程
  • 遇到一件循环导入事件
  • flask实现后端接口的封装和开发部分
  • 上海这样的地段简直是逆天
  • 【GitHub每日速递 250923】 Google 又放大招!TimesFM 2.5 参数减半,预测更准更快
  • 具身智能机器人架构:人形机器人系统架构深度拆解
  • 卓驭,欧洲无绝境
  • 下周审核4家IPO,2家再融资。其中两家IPO企业于在审期间调减募资规模
  • 280亿国产AI独角兽,惹怒“地表最强法务部”
  • 读人形机器人20财富再分配
  • Java 与人工智能的深度融合:从数据到推理服务
  • Java 与大数据实时处理:Kafka、Flink 与企业应用
  • Java 与企业级中间件:消息、缓存与数据库集成
  • 基于 Vite7 与 Vue3 的 WebOS 后台系统架构实践
  • 啊哈哈20250923_03:23
  • js获取浏览器指纹
  • gitIgnore 无法忽略dist目录的变更
  • 翻转二叉树
  • 我的第一篇博客
  • 测试测试测试测试测试
  • java中的浮点数计算
  • XYCTF2025复现(WEB)
  • 洛谷 P13973 [VKOSHP 2024] Nightmare Sum
  • 发布/订阅(Publish/Subscribe)与交换机(Exchange)
  • 线性结构之链表
  • 二叉树最近公共祖先
  • AI 编程“效率幻觉”:为何你感觉快了,项目却慢了?
  • lc1033-移动石子直到连续