开门见上,先来看看selectOne方法的源代码
通过源码我们清晰的看到,selectOne调用了selectList方法,当selectList方法返回值的size小于1 的时候,selectOne方法会返回null值。我们再来看一下mybatis的xml.
如果你写了resultType为Integer,然后在业务代码中很自然的用一个变量int去接当前这个方法的返回值:int id = dao.methodName(param);如果按照你传入的条件在数据库中没有找到相关的值,此时selectOne方法的返回值会是一个null,当你使用Java的自动拆箱机制的时候会报出一个无情的NPE。
原因:Java在自动拆箱的时候会调用Integer类中的intValue方法,如果当前对象为null,则抛出NPE。
所以我们在使用mybatis的这个selectOne方法的时候一定要多加小心。不要踩到坑里。
怎么破: 用一个Integer去接一次返回值,然后判断是否为空,然后再进行具体的业务逻辑处理。但是!但是!但是!如果把resultType写成int,呵呵,恐怕无解了。
相关推荐
在这个示例代码中,我们将深入探讨`selectById`、`selectOne`、`selectBatchIds`、`selectByMap`以及`selectPage`这五个查询方法的使用。 1. `selectById`方法: 这个方法用于根据主键ID获取单条数据。在...
这时,我们可以使用`SqlSession`对象的`selectList`, `selectOne`, `insert`, `update`, `delete`等方法,配合`Statement`类型来执行自定义的SQL字符串: ```java String sql = "SELECT * FROM users WHERE name ...
- DAO接口和实现类中的方法可以直接调用`getSqlSession().selectOne()`等方法执行SQL。 这三种整合方法各有优缺点。注解方式简单快捷,但可能使得业务逻辑和数据访问混合;XML配置方式则更灵活,适合大型项目,但...
3. 执行SQL:调用SqlSession的方法,如selectOne、selectList、insert、update和delete,它们对应于SQL的CRUD操作。 4. 关闭资源:操作完成后,关闭SqlSession和SqlSessionFactory。 四、MyBatis注解使用 1. @...
在Java代码中,可以通过`SqlSession.selectOne()`或`SqlSession.selectList()`执行查询。如果查询结果是唯一的,`selectOne()`会自动封装成对象返回。 3. **更新(UPDATE)**: 更新数据涉及到修改已存在记录。在...
这篇文章将详细讲解MyBatis-Plus中的`getOne`方法以及如何实现逻辑删除。 `getOne`方法是MyBatis-Plus提供的一种便捷的获取单个实体对象的方法。当我们在查询数据库时,如果预期结果只有一条记录,可以直接使用`get...
Mybatis-plus的CRUD操作主要包括:insert、update、delete、select方法。insert方法用于添加数据,update方法用于更新数据,delete方法用于删除数据,select方法用于查询数据。 Mybatis-plus支持多种查询条件构造器...
例如,`@Select`, `@Insert`, `@Update`, `@Delete`这些注解可以直接在Mapper接口的方法上使用,简化了映射文件的编写。 3. **一对一关系映射**(mybatis03_one2one.rar) 在mybatis03_one2one.rar中,演示了一对...
- `selectOne()`:通过Wrapper构造查询条件,返回单条数据。 使用Lambda表达式可以进一步简化代码,例如: ```java User user = userMapper.selectOne(User::getId.eq(1)); List<User> userList = userMapper....
Expected one result (or null) to be returned by selectOne(), but found:18 下面展示一些 mapper.xml。 SELECT st.title as titlest ,st.info_text as info_text , sbt.title as titlesbt,sbt.icon as icon...
2. 调用Mapper接口方法:通过SqlSession的`selectOne`或`delete`方法执行删除操作。由于我们的操作是删除,所以应该调用`delete`方法。 ```java UserMapper mapper = sqlSession.getMapper(UserMapper.class); ...
Mybatis 执行 SQL 语句的方式 ...我们也可以使用 selectOne 方法和 selectList 方法来执行 SQL 语句。 Mybatis 提供了多种方式来执行 SQL 语句,开发者可以根据需要选择合适的方式来实现业务逻辑。
- SqlSession 提供了执行 SQL 语句和管理事务的方法,例如:selectOne、insert、update 和 delete。 2. **Mapper 接口与 XML 映射文件** - MyBatis 允许开发者定义自己的 Mapper 接口,每个方法对应一个 SQL 语句...
SqlSession提供了与数据库交互的方法,如execute(用于执行SQL语句)、insert(用于插入数据)、update(用于更新数据)、delete(用于删除数据)以及selectList(用于查询列表)、selectOne(用于查询单个对象)等...
9. **SQL执行**:使用SqlSession的selectOne、selectList、insert、update和delete方法执行SQL操作。注意,对于可能返回多条结果的selectOne,如果没有找到结果会抛出异常。 10. **MyBatis Generator**:这是一个...
- `select`:查询操作可以是单个记录或多个记录,可以使用`selectOne`或`selectList`方法,同时可以利用MyBatis的动态SQL功能进行条件判断。 5. **关联查询**: - MyBatis支持一对一、一对多、多对多等关联查询。...
5. **使用SqlSession执行SQL**:在Java代码中,通过SqlSessionFactory创建SqlSession对象,然后调用SqlSession的selectOne()或selectList()方法执行SQL。例如: ```java SqlSession session = sqlSessionFactory....
Map, Object> person = session.selectOne("org.mybatis.example.PersonMapper.selectPerson", 101); System.out.println(person); } ``` MyBatis的强大之处在于它的灵活性和可扩展性,你可以根据项目需求自定义...
User user = (User) session.selectOne("com.yihaomen.mybatis.models.UserMapper.selectUserByID", 1); System.out.println(user.getUserAddress()); System.out.println(user.getUserName()); } finally { ...