小白大学生学习MyBatis(二)
1 . 接(一)解释测试代码 主要类的介绍
https://blog.csdn.net/hjs_75187712/article/details/118344894?spm=1001.2014.3001.5501
1)Resources:mybatis中的一个类,负责读取主配置文件
InputStream in = Resources.getResourceAsStream(config);
2)SqlSessionFactoryBuilder:创建SqlSessionFactory对象
SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
SqlSessionFactory factory = builder.build(in);
3)SqlSessionFactory:重量级对象,程序创建一个对象耗时比较长,使用资源多
在整个项目里有一个就可以。
SqlSessionFactory:接口
接口的实现类:DefaultSqlSessionFactory
SqlSessionFactory作用:获取SqlSession对象
SqlSession sqlSession = factory.openSession();
openSession()方法说明:
1.openSession():无参数的,获取是非自动提交事物的SqlSession对象
2.openSession(boolean):openSession(true) 获取自动提交事务的SqlSession对象。
openSession(false) 非自动提交事务的SqlSession对象。
4)SqlSession:
SqlSession接口:定义了操作数据的方法,例如 selectOne(),selectList(),insert(),update(),delete(),commit(),rollback(),
SqlSession接口的实现类:DefaultSqlSession
使用要求:SqlSession对象不是线程安全的,需要在方法内部使用,在执行sql语句之前,使用openSession()获取SqlSession
在执行完sql语句后,需要关闭它,执行SqlSession.close(),这样能保证他的使用是线程安全的。
在可视化工具中测试
StudenrMapper.xml
<insert id="insertStudent" >
INSERT INTO student (ID,NAME,AGE) VALUES (#{id},#{name},#{age})
</insert>
package com.sdyu;
import com.sdyu.bean.Student;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;
public class AppTest
{
public static void main(String[] args) throws IOException {
//访问mybatis读取student数据
//1.定义mybatis主配置文件名称,从类路径的根开始(target/classes)
String config = "mybatis.xml";
//2.读取这个config表示的文件
InputStream in = Resources.getResourceAsStream(config);
//3.创建SqlSessionFactoryBuilder
SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
//4.创建SqlSessionFactory对象
SqlSessionFactory factory = builder.build(in);
//5.获取SqlSession对象,从SqlSessionFactory中获取SqlSession
SqlSession sqlSession = factory.openSession();
//6.指定要执行的sql语句的标识,sql映射文件中的namespace + "."+标签的id值
String sqlId = "com.sdyu.dao.StudentDao"+"."+"insertStudent";
//7.执行sql语句,通过sqlId找到语句
Student student = new Student();
student.setId(555);
student.setName("hjs");
student.setAge("50");
//第一个参数为 sql语句,第二个参数为要插入的对象
int nums = sqlSession.insert(sqlId,student);
//mybatis默认不是自动提交事务的,所以在insert、update、delete后手工提交事务
sqlSession.commit();
//8.输出结果
System.out.println("成功"+nums);
//9.关闭SqlSession对象
sqlSession.close();
}
}
运行截图: