SqlSession 主要 SQL 方法

SqlSession 主要 SQL 方法

SqlSession 是 MyBatis 的核心接口之一,提供了多个执行 SQL 语句的方法,包括 查询(select)、插入(insert)、更新(update)、删除(delete) 以及 管理事务 的方法。

1. SqlSession 主要 SQL 方法

SqlSession 主要提供了以下几类 SQL 相关的方法:

方法名作用适用场景selectOne(String statement, Object parameter)查询单条记录当查询结果最多只有一条数据时selectList(String statement, Object parameter)查询多条记录获取列表数据selectMap(String statement, Object parameter, String mapKey)查询结果并转换为 Map以某个字段作为 Map 的 Keyinsert(String statement, Object parameter)插入数据执行 INSERT 语句update(String statement, Object parameter)更新数据执行 UPDATE 语句delete(String statement, Object parameter)删除数据执行 DELETE 语句

2. select 查询方法

(1) 查询单条数据:selectOne()

User user = sqlSession.selectOne("com.example.mapper.UserMapper.getUserById", 1);

System.out.println(user);

特点:

只能返回一条数据,如果结果超过一条,会抛出 TooManyResultsException。适用于通过主键查询单个对象的场景。

(2) 查询多条数据:selectList()

List userList = sqlSession.selectList("com.example.mapper.UserMapper.getAllUsers");

for (User user : userList) {

System.out.println(user);

}

特点:

返回 List 类型的结果集,适用于查询多条记录。

(3) 查询并转换为 Map:selectMap()

Map userMap=sqlSession.selectMap("com.example.mapper.UserMapper.getAllUsers", null, "id"); System.out.println(userMap);

特点:

适用于需要将查询结果转换为 Map 结构的情况,mapKey 作为 Map 的 Key。比如 mapKey="id",那么 Map 的 Key 是 id,Value 是 User 对象。

3. insert 插入数据

User newUser = new User(null, "Alice", "alice@example.com");

int rows = sqlSession.insert("com.example.mapper.UserMapper.insertUser", newUser);

sqlSession.commit();

// 记得提交事务

System.out.println("影响行数:" + rows);

特点:

返回值是受影响的行数。MyBatis 默认不是自动提交事务,需要 sqlSession.commit(); 提交事务。

4. update 更新数据

User user = new User(1, "UpdatedName", "updated@example.com");

int rows = sqlSession.update("com.example.mapper.UserMapper.updateUser", user);

sqlSession.commit();

System.out.println("更新成功:" + rows);

特点:

适用于 UPDATE 语句,返回值是受影响的行数。

5. delete 删除数据

int rows = sqlSession.delete("com.example.mapper.UserMapper.deleteUserById", 1);

sqlSession.commit();

System.out.println("删除成功:" + rows);

特点:

适用于 DELETE 语句,返回值是受影响的行数。

6. 事务管理

手动提交事务

sqlSession.commit(); // 提交事务

回滚事务

sqlSession.rollback(); // 回滚事务

默认情况下,MyBatis 不会自动提交事务,必须手动调用 commit()。如果使用 openSession(true),则会自动提交事务:

SqlSession sqlSession = sqlSessionFactory.openSession(true); // 自动提交

7. 总结

方法作用selectOne()查询单条数据selectList()查询多条数据selectMap()查询数据并转为 Mapinsert()插入数据update()更新数据delete()删除数据commit()提交事务rollback()回滚事务

相关推荐

男生为什么喜欢抱女生(男生为何喜欢抱女生)
beat365唯一官网

男生为什么喜欢抱女生(男生为何喜欢抱女生)

📅 07-01 👁️ 5591
公路车指拨使用教程
beat365唯一官网

公路车指拨使用教程

📅 07-17 👁️ 7106
2018世界杯四大养眼女球迷排行榜,中国红衣女孩人气力压J罗妹妹
2025无损音乐歌曲下载全平台指南:从APP到网站【不定期更新】
优酷转码怎样设置?转码设置流程图文介绍_
365bet滚球网

优酷转码怎样设置?转码设置流程图文介绍_

📅 07-27 👁️ 4123
《咏鹅》原文、译文、赏析(精选14篇)
监控sh365下载

《咏鹅》原文、译文、赏析(精选14篇)

📅 06-29 👁️ 2390
漏尿的尴尬,羞辱着三分之一的中国女性
365bet滚球网

漏尿的尴尬,羞辱着三分之一的中国女性

📅 07-11 👁️ 3882
免费在线YouTube视频下载器(1080p & 4k)
监控sh365下载

免费在线YouTube视频下载器(1080p & 4k)

📅 07-17 👁️ 5475
什么是 MD5 文件?它的用途以及如何打开它
365bet滚球网

什么是 MD5 文件?它的用途以及如何打开它

📅 07-20 👁️ 9953