mybatis不通过mapper直接执行sql
时间: 2023-09-14 21:07:48 浏览: 220
MyBatis直接执行SQL的工具SqlMapper
在 MyBatis 中,可以通过 SqlSession 的 selectOne()、selectList()、update()、insert()、delete() 等方法来执行 SQL 语句。如果想要直接执行 SQL 语句而不通过 Mapper 接口,可以使用 SqlSession 的 select() 方法。
select() 方法需要传入一个字符串类型的参数,这个参数就是 SQL 语句。例如,执行一个查询语句:
```
String sql = "SELECT * FROM user WHERE id = 1";
List<User> userList = sqlSession.selectList(sql);
```
这里的 sqlSession 是 MyBatis 中的 SqlSession 对象,User 是查询结果需要封装的 Java 类型。selectList() 方法表示这个 SQL 语句可能返回多条结果,如果只返回一条结果可以使用 selectOne() 方法。
除了 select() 方法外,也可以使用 SqlSession 的 insert()、update()、delete() 方法执行相应的操作。例如,执行一个插入语句:
```
String sql = "INSERT INTO user (name, age) VALUES ('张三', 18)";
int result = sqlSession.insert(sql);
```
这里的 result 表示插入语句影响的行数。需要注意的是,通过这种方式执行 SQL 语句,需要手动关闭 SqlSession 对象,否则会造成连接池资源泄露。可以使用 try-with-resources 语句块来自动关闭 SqlSession 对象,例如:
```
try (SqlSession sqlSession = sqlSessionFactory.openSession()) {
String sql = "SELECT * FROM user WHERE id = 1";
List<User> userList = sqlSession.selectList(sql);
}
```
阅读全文