笔记(一)——MyBatis框架的基本应用

来源:互联网 发布:应用市场windows phone 编辑:程序博客网 时间:2024/05/01 12:59

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();    }}
1 0
原创粉丝点击