由于下面这段代码的重复性很高,我们可以单独创建一个工具类
//1.加载mybatis的核心配置文件,获取SqlSessionFactory
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory =
new SqlSessionFactoryBuilder().build(inputStream);
//2.获取SqlSession对象,用他来执行Sql
SqlSession sqlSession = sqlSessionFactory.openSession();
工具类
public class MyBatisUtils {
private static SqlSessionFactory factory;
static {
try {
factory = new SqlSessionFactoryBuilder.build(new FileInputStream("mybatis-config.xml"));
} catch(FileNotFoundException e) {
e.printStackTrace();
}
}
//自动提交
public SqlSession openSession(boolean autoCommit) {
return factory.openSession(autoCommit);
}
}
简化后的代码
```java
public class TestUser {
@Test
public void testUser() throws IOException {
SqlSession sqlSession = MyBatisUtils.openSession(true);
//3.执行Sql
List<User> users = sqlSession.selectList("test.selectAll");
System.out.println(users);
}
}
selectMap方法
Map<String, User> map selectMap("selectAllUser", "id")
表示以id
作为key
,查询到的结果作为Map
基于注解实现MyBatis
@Mapper //标记Mapper接口
@Select("执行查询语句,返回结果")
@Insert("执行插入语句")
@Update("执行更新语句")
@Delete("执行删除语句")
MyBatis
- 添加依赖:
mybatis
,mariadb
驱动 - 配置数据库
spring: datasource: url: jdbc:mariadb://localhost:3306/mybatis username: root password: root driver-class-name: org.mariadb.jdbc.Driver
- 写
Mapper
@Mapper
public interface UserInfoMapper {
@Select("select * from userinfo") //接口方法的实现
List<UserInfo> getUserInfoAll();
}
selectCursor方法
Cursor<User> cursor = session.selectCursor("selectAllUser");
for(User user : cursor) {
System.out.println(user);
cursor.isOpen(); //是否已经开始遍历
cursor.getCurrentIndex();//获取遍历到第几个(下标)
}
cursor.isConsumed(); //是否遍历完了
select方法
session.select("selectAllUser", context -> {
System.out.println(context.getResultCount());
System.out.println(context.getREsultObject());
context.stop();
})