1.在使用MyBatis开发包时,修改SqlMapConfig.xml文件来指定数据库的连接参数。
2.获取SqlSession对象
String conf="SqlMapConfig.xml";
Reader reader=Resources.getResourceAsReader(conf);
若上面这个在运行时出现异常,建议使用输入流的方式读取配置文件
InputStream reader=testEmp.class.getClassLoader().getResourceAsStream(conf);
创建SessionFactory对象
SqlSessionFactoryBuilder builder=new SqlSessionFactoryBuilder();
SqlSessionFactory factory=builder.builder(reader);
创建Session
SqlSession session=factory.openSession();
通过上面获取的SqlSession对象后,就可以利用它对数据表进行操作
a.根据数据库中的表编写实体类
b.编写SqlMapConfig.xml映射文件,然后加载sql定义文件
c.获取SqlSession对象,然后执行数据库操作,在执行数据库的增删改时必须要有提交事务的操–>session.commit()
d.关闭SqlSession对象 session.close();
在数据库操作配置文件里添加映射信息
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//ibatis.apache.org//DTD Mapper 3.0//EN"
"http://ibatis.apache.org/dtd/ibatis-3-mapper.dtd">
<mapper namespace="empsql">
<!--查找表-->
<select id="findAll" resultType="org.yang.entity.Emp">
select * from emp
</select>
<!--插入数据-->
<insert id="save" parameterType="org.yang.entity.Emp">
insert into emp (name,salary,age) values (#{name},#{salary},#{age})
</insert>
</mapper>
由于创建SessionFactory对象和获取session程序有点冗杂,我就将其封装到一个类里,后面可以直接调用,在这个类里直接定义一个静态方法就行了
public class MyBatisUtil {
public static SqlSession getSqlSession(){
String conf="SqlMapConfig.xml";
InputStream reader=mainEmp.class.getClassLoader().getResourceAsStream(conf);
//创建sessionFactory对象
SqlSessionFactoryBuilder builder=new SqlSessionFactoryBuilder();
SqlSessionFactory factory=builder.build(reader);
//获取session
SqlSession session=factory.openSession();
return session;
}
}
然后编写测试文件来测试数据库操作配置文件里的配置信息
public class mainEmp {
public static void main(String[] args) {
SqlSession session=MyBatisUtil.getSqlSession();//这块直接调用上面封装的获取session方法
//查询操作,这块使用的是List集合封装查询后的结果
List<Emp> list=session.selectList("findAll");
for(Emp e:list){
System.out.println(e.toString());
}
//插入操作
Emp emp=new Emp();
emp.setName("王麻子");
emp.setSalary(8000.0);
emp.setAge(30);
session.insert("save",emp);
//这里的操作必须要进行事务提交,要不运行过后数据表并没有插入到信息,数据表的增删改都需要提交事务
session.commit();
}
}