首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

修改查询只能使用void或int/Integer作为返回类型

在编程中,特别是在Java等语言中,修改查询(如更新、插入或删除操作)通常使用voidint/Integer作为返回类型。这两种返回类型各有其用途和优势。

基础概念

  1. void
    • void表示方法不返回任何值。对于修改查询,这意味着方法执行后不会返回任何结果。
    • 适用于不需要知道操作是否成功的场景。
  • int/Integer
    • intInteger表示方法返回一个整数值,通常用于表示受影响的行数。
    • 适用于需要知道操作影响了多少行的场景。

优势

  • void
    • 简单明了,不需要处理返回值。
    • 适用于简单的更新操作,不需要关心具体的影响行数。
  • int/Integer
    • 可以提供操作的反馈,了解操作是否成功以及影响了多少行。
    • 适用于需要记录或处理操作结果的场景。

类型

  • void
  • void
  • int/Integer
  • int/Integer

应用场景

  • void
    • 当你只需要执行更新操作而不关心结果时,例如日志记录或简单的状态更新。
  • int/Integer
    • 当你需要知道操作是否成功以及影响了多少行时,例如在事务处理中需要确认操作结果。

遇到的问题及解决方法

问题:为什么使用void时无法知道操作是否成功?

原因

  • void方法不返回任何值,因此无法直接获取操作的结果。

解决方法

  • 可以通过抛出异常来表示操作失败,例如:
  • 可以通过抛出异常来表示操作失败,例如:
  • 或者在调用方法后检查其他状态信息,例如数据库连接状态或日志记录。

问题:为什么使用int/Integer时返回值为0?

原因

  • 返回值为0表示没有行受到影响,可能是由于以下原因:
    • 查询条件不匹配任何行。
    • 数据库连接问题。
    • SQL语句错误。

解决方法

  • 检查SQL语句是否正确。
  • 确保数据库连接正常。
  • 检查查询条件是否正确。

示例代码

代码语言:txt
复制
public int updateUser(int userId, String newName) {
    String sql = "UPDATE users SET name = ? WHERE id = ?";
    try (Connection conn = DriverManager.getConnection(url, username, password);
         PreparedStatement pstmt = conn.prepareStatement(sql)) {
        pstmt.setString(1, newName);
        pstmt.setInt(2, userId);
        int affectedRows = pstmt.executeUpdate();
        return affectedRows;
    } catch (SQLException e) {
        e.printStackTrace();
        throw new RuntimeException("Database error: " + e.getMessage());
    }
}

参考链接

通过以上解释和示例代码,你应该能够理解为什么修改查询只能使用voidint/Integer作为返回类型,并知道在不同场景下如何选择合适的返回类型以及如何处理相关问题。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

【C 语言】数据类型本质 ( void 关键字作用 | 数据类型封装 | 作为 参数 返回值 代表无 | void* 指针赋值与被赋值 | void 类型变量不存在 )

文章目录 一、数据类型封装 二、作为 参数 返回值 代表无 三、void* 指针赋值与被赋值 四、void 类型变量不存在 一、数据类型封装 ---- 实现函数 的 底层函数开发者 , 不想将 底层的数据结构...中 , 拷贝 unsigned n 个字节的数据 , 到 void *destin 指针指向的内存空间中 ; 二、作为 参数 返回值 代表无 ---- void 数据类型 , 作为函数的 参数 ...返回值 , 代表无参数 , 或者无返回值 ; 如果函数没有参数 , 可以声明为 int fun(void) 其中 , 如果 函数的参数是 void , 则可以省略 ; int fun() 上述两种表示时等价的...; 三、void* 指针赋值与被赋值 ---- C 语言中 , 对指针赋值时 , 只有 相同类型的指针 , 才能相互赋值 ; void* 作为 左值 可以 被赋值 任意类型的 指针 ; void* 作为...右值 赋值给其它类型的指针类型变量时 , 必须将 该指针强转为其它类型 ; 最常见的是使用 malloc() 函数申请内存时 , 其返回一个 void * 类型的指针 ; void *malloc(unsigned

2.5K10

Data Access 之 MyBatis(三) - SQL Mapping XML(Part B)

使用行内参数映射和 parameterType 属性。 resultType 期望从这条语句中返回结果的类全限定名别名。...注意,如果返回的是集合,那应该设置为集合包含的类型,而不是集合本身的类型。 resultType 和 resultMap 之间只能同时使用一个。...修改getEmployeeByIdAndName的映射SQL,使用#{tableName}获取表名,再次执行测试 出现报错,SQL语句中只有参数位置是支持预编译的 查询返回List EmployeeDao...Map 查询返回单条记录的情况下列名作为Key,值作为Value 新增方法 Map getEmployeeByIdWithMap(Integer id); 增加SQL映射语句...Key,值作为Value 查询返回多条记录情况下封装成Map 定义方法 Map getAllEmployeesWithMap(); employee.xml中增加SQL

33220
  • Java 比较器 和 包装类

    = 比较对象地址值,是否相同,取反~ 不能使用 > < 的 但是在开发场景中,我们需要对多个对象进行排序,言外之意,就需要比较对象的大小 以 JD 商城举例场景: 查询商品可以对商品进行...根据用户点击,从数据库中查询到一个商品对象/数组 进行排序,返回数据给前端进行排序展示~ 当然, 一个功能可以有很多种实现方式, 也有直接在数据库中根据传过来的类型, 动态sql 直接在数据库中查询返回排好序的数据...像String类、包装类等JDK内置类实现了Comparable接口默认是升序排序 如果要降序排序指定其他排序规则只能使用Comparator接口。...八大基本数据类型都有对应的包装类,使基本数据类型也具有对象的操作… 并且内部定义了一些方法,方便使用… 结合: 自动装箱/拆箱 基本数据类型使用起来更加的心用手~ Integerint的区别 int...可以区分出未赋值和值为0的区别 **int则无法表达出未赋值的情况 判断一个人考试,0分 和 缺考 则只能使用Integer 在JSP开发中,Integer的默认为null 所以用el表达式在文本框中显示时

    9410

    springboot第15集:MyBatis分页

    UPDATE:用于更新数据库中的数据,可以修改已有记录新增记录,并返回被更新的记录数。...DELETE:用于删除数据库中的数据,可以根据指定的条件删除单条记录多条记录,并返回被影响的记录数。 这些操作类型是 SQL 语言中最基础的操作,用于对数据库进行增删改查等操作。...在实际应用中,我们可以通过组合使用这些操作类型来完成更加复杂的操作,例如多表联合查询、批量更新等。掌握这些操作类型对于开发 SQL 数据库和进行数据处理非常重要。...以下是一些使用原则: 在方法只接受一个参数时,可以不使用 @Param 注解。此时,MyBatis 会将参数作为"param1"来处理。...如果不使用 @Param 注解,那么方法中只能有一个参数,并且这个参数必须是 JavaBean 类型。 总之,使用 @Param 注解可以提高代码的可读性和可维护性,特别是在方法接收多个参数的情况下。

    18210

    Mybatis的增删改查

    中添加一个接口方法 //根据id删除数据,返回受影响的行数,返回1,如果删除失败返回0 Integer deleteUserById(int id); 在UserMapper.xml中配置<delete...,让客户以为已经被删除了 Mybaits参数规则 mybatis默认支持一个参数,即是定义的接口方法中只能有一个参数 如果需要支持多个参数,那么需要使用@Param()注解 如果接口方法中的参数类型是基本类型的可以不用...parameterType指定类型,如果不是基本类型的,规范要求需要使用parameterType指定类型,但是可以不写 @Param() mybatis默认支持一个参数,即是定义的接口方法中只能有一个参数... 在修改数据的时候,mybatis自动返回受影响的行数,因此我们不需要定义返回类型,默认的返回数据就是受影响的行数 在UserMapper.java接口中定义根据id修改数据的方法 使用...增加,修改,删除,方法返回的永远是受影响的行数 在定义实体类属性的时候,尽量使用包装类,比如`Integer age` 只要是节点,那么必须写返回类型resultType,无论是基本型还是其他类型

    2.1K50

    编程思想 之「数组、容器」

    此外,Arrays.asList()接受任意的序列数组作为其参数,并将其转为List容器,但是在这种情况下,其底层表示的仍是数组,因此不能调整尺寸。...通过使用泛型,就可以在编译期防止将错误类型的对象放置到容器中,而且当我们指定了某个类型作为泛型参数时,并不仅限于只能将该确切类型的对象放置到容器中,向上转型也可以像作用于其他类型一样作用于泛型。...在创建容器的时候,我们习惯于使用接口的形式,例如: List list = new ArrayList(); 这样做的目的在于如果我们决定修改接口的实现,我们只需要在创建处修改它...; 使用hasNext()方法检查序列中是否还有元素,返回boolean值; 使用remove()方法将迭代器新返回的元素删除。...HashSet、TreeSet、LinkedHashSet都是Set的子类型,对于相同的对象,其只保存一次,其中HashSet使用相当复杂的方式来存储对象,以保障查询时的速度,因此其拥有最快的查询速度;

    46520

    一文带你系统掌握JDK8新特性

    1 Lambda表达式 Lambda表达式 是用来替代匿名函数,可以将一个函数赋值给一个变量作为参数传入另一个函数,java的闭包 原则:可推导就是可省略,比如说参数类型返回值。...接收2个int型整数,返回他们的和 (int x, int y) -> x + y // 5....1.2 Lambda表达式变量作用域 lambda 表达式只能引用final 类型的外层局部变量,就是说不能在 lambda 内部修改定义在域外的局部变量,否则会编译错误。...与匿名函数同理 lambda 表达式的局部变量可以不用声明为 final,但是必须不可被后面的代码修改(即隐性的具有 final 的语义) int num = 1; Converter<Integer...resize的过程,解决JDK7在resize在并发场景下死锁的隐患 (3)JDK1.7存储使用Entry数组,JDK8使用Node或者TreeNode数组存储 当链表长度大于8是链表的存储结构会被修改成红黑树的形式

    43340

    Jetpack组件之Room

    //exportSchema = true 生成数据库创建表升级等操作及字段描述的json文件 //修改数据库版本直接通过version修改 //SkipQueryVerification注解是编译时候是否验证...需要注意的是:启用Fts的表必须使用Integer类型的主键,且列名为“rowid”。 如果表支持以多种语言显示内容,可以使用languageId指定用于存储每一行语言信息的列。...如果应用不支持使用全文搜索,可以将数据库的某些列编入索引,加快查询速度,通过@Entity注解添加indices,列出要在索引符合索引中包含的列名称。...long rowID = StudentDatabase.getInstance().getCache().save(cache); //返回int,这是删除的行数,更新返回也是int,代表更新的行数...int lines = StudentDatabase.getInstance().getCache().delete(cache); 销毁与重建 如果需要对数据库中的字段类型进行修改,最好的方式就是销毁与重建

    1.9K20

    Java泛型总结

    泛型的设计背景 集合容器类“设计阶段/声明阶段”不能确定这个容器到底实际存的是什么类型的对象,所以在JDK1.5之前只能把元素类型设计为 Object,JDK1.5 之后使用泛型来解决。...这个类型参数将在使用时(例如,继承实现这个接口,用这个类型声明变量、创建对象时)确定(即传入实际的类型参数,也称为类型实参)。...; } } 应用总结 1、集合接口集合类在jdk5.0时都修改为带泛型的结构。...3、指明完以后,在集合类接口中凡是定义类接口时,内部结构(比如:方法、构造器、属性等)使用到类的泛型的位置,都指定为实例化的泛型类型。...return false; } //修改一条记录 public void update(int index,T t){ } //查询一条记录

    84430

    浅入ElasticSearch

    ,不会走索引,会全表扫描,性能低 功能弱:如果以”华为手机“作为条件,查询不出来数据 Es使用倒排索引,对title 进行分词 使用“手机”作为关键字查询 生成的倒排索引中,词条会排序,形成一颗树形结构...,提升词条的查询速度 使用“华为手机”作为关键字查询 华为:1,3 手机:1,2,3 ES概念详解 •ElasticSearch是一个基于Lucene的搜索服务器 •是一个分布式、高扩展...满足这些约束条件和原则的应用程序设计就是RESTful。就是一种定义接口的规范。 2.基于HTTP。 3.使用XML格式定义JSON格式定义。 4.每一个URI代表1种资源。...keyword:不会分词,将全部内容作为一个词条,支持聚合 数值 布尔:boolean 二进制:binary 范围类型 integer_range, float_range, long_range...、查询、删除文档 1.修改文档:添加文档时,如果id存在则修改,id不存在则添加 /** * 修改文档:添加文档时,如果id存在则修改,id不存在则添加 */ @Test

    34920

    Java中方法重写和方法重载的6个区别?

    public; 注意事项 2:子类方法返回类型只能变小,也就是说如果父类方法返回的是 Number 类型,那么子类方法只能返回 Number 类型 Number 类的子类 Long 类型,而不能返回...String 参数类型的重载方法; 第 2 匹配原则:如果是基本数据类型,会自动转换成更大的基本数据类型进行匹配,比如调用的参数是 int 类型,那么会优先调用基本类型 long,而非包装类型 Integer...第 3 匹配原则:自动装箱和自动拆箱匹配,参数调用也会进行自动拆箱和自动装箱的方法匹配,比如调用参数传递的是 int 类型,那么它可以匹配到 Integer 类型的重载方法; 第 4 匹配原则:会按照继承路线依次向上匹配父类...除了以上匹配原则之外,还需要特殊注意一点,不同的返回类型不能作为方法重载的依据,也就是不同的返回类型不算方法重载,关于这一点的详细介绍可参考:https://mp.weixin.qq.com/s/4pi1OZx8So6GjHD6yxjB3Q...@Override 关键字修饰 不需要 参数类型和参数个数 不能修改 必须修改 返回类型 只能变小相同,不能变大 可修改 抛出异常 只能变小删除,不能抛出新的或者更大的异常 可修改

    51950

    Java 泛型:理解和应用

    泛型方法 泛型方法是一种在方法声明中使用泛型类型参数的特殊方法。它允许在方法中使用参数返回值的类型参数化,从而实现方法在不同类型上的重用和类型安全性。...泛型边界的使用场景包括: 类型限定:当我们希望泛型类型参数只能是特定类型特定类型的子类时,可以使用泛型边界。...super Integer>,你可以向这个 List 中添加 Integer 其子类的对象,但不能从中读取具体类型的元素(只能读取为 Object),示例: public void doSomething...这意味着在运行时你不能查询一个泛型对象的真实类型 不能实例化泛型类型的类:你不能使用 new T(),new E()这样的语法来创建泛型类型的对象,还是因为类型被擦除 不能使用基本类型作为类型参数:因为是编译器的语法糖...,所以只能使用包装类型Integer,Double 等作为泛型类型参数 通配符的使用可能会导致代码复杂:如 ?

    24431

    最新 Restful API 风格 ResponseEntity 用法大全

    Body中的Code来判断API状态即几乎所有API的HttpResponse Code=200,那么完全可以不使用ResponseEntity作为返回数据类型,只需要去返回Response Body...ResponseEntity(HttpStatus.NO_CONTENT); } //2 .查询返回查询 //@GetMapping("/demoss") public ResponseEntity...ResponseEntity进行CRUD 这题是使用ResponseEntity进行返回值,不包含通用异常处理。...客户端应继续使用原有URI 303 See Other 查看其它地址。与301类似。使用GET和POST请求查看 304 Not Modified 未修改。...所请求的资源未修改,服务器返回此状态码时,不会返回任何资源。客户端通常会缓存访问过的资源,通过提供一个头信息指出客户端希望只返回在指定日期之后修改的资源 305 Use Proxy 使用代理。

    42110

    java核心技术第六篇之断言、日志、包装类型和工具类

    index):返回指定索引处的元素 public E set(int index,E element):修改指定索引处的元素,返回修改的元素 public int size():返回集合中的元素的个数...(各种数组,集合不行) 返回该数组的全部内容的特定格式(遍历数组) 方法重载: 1.方法名相同 2.参数列表不同(数量、类型、顺序) 方法覆盖: 1.访问修饰符相同更宽 2.返回类型相同...使用 instanceof 只能得出某对象的实际乐行是不是某类型的子类 2....- Integer char -- Character 其他基本数据类型 -- 首字母大写 int Integer String 之间的相互转换: 1....使用数组实现 2. 增删慢,查询快 LinkedList 1. 使用链表实现 2. 增删快,查询慢 Vector 1.

    85210

    【Java】泛型

    泛型的使用减少了程序中的强制类型转换和运行时错误的可能性。 因为在一般的类和方法,只能使用具体的类型: 要么是基本类型 要么是自定义的类。...思路: 我们以前学过的数组,只能存放指定类型的元素,例如:int[] array = new int[10]; String[] strs = new String[10] ; 所有类的父类,默认为...3.2 示例 MyArray list = new MyArray(); 注意:泛型只能接受类,所有的基本数据类型必须使用包装类!...设定类型通配符的下限后,类型实参只能是设定的类型其父类型。 设定类型通配符的下限的语法格式如下: <?...类型、Object 类型Integer 类型类型实参 然后分别以上面创建的3个 Collection 对象作为参数调用 getElement()方法,由于 l3 在创建时传入的 Integer类型

    9010

    数据库访问框架 - Mybatis

    -- 内置类型可以用简称int,也可以用全限定名java.lang.Integer,但自定义类型必须用全限定名 --> <select id="findById" parameterType="<em>int</em>"...#{}可以接收简单类型 pojo 属性值。 如果 parameterType 传输单个简单类型值,#{}括号中可以是 value 其它任意名称。...resultMap sql语句中的查询返回列必须和resultType类型中的属性名对应,否则会赋值为null,如果仅大小写不同,仍可以赋值成功,因为mysql 在 windows 系统中不区分大小写!...如果连接处于自动提交模式下,则它的所有SQL语句将被执行并作为单个事务提交。否则,它的SQL语句将聚集到事务中,直到调用commit 方法 rollback 方法为止。...需要装配的属性名one 需要使用的@One注解many 需要使用的@Many注解 @One 用来指定子查询返回单一对象,属性介绍:select 指定用来多表查询的 sqlmapperfetchType

    5.4K30
    领券