Mybatis开发dao的方法--原始dao篇

题记

摘抄自传智播客燕青老师,下面的SqlSession使用范围
4.1 SqlSession使用范围
4.1.1 SqlSessionFactoryBuilder
通过SqlSessionFactoryBuilder创建会话工厂SqlSessionFactory
将SqlSessionFactoryBuilder当成一个工具类使用即可,不需要使用单例管理SqlSessionFactoryBuilder。
在需要创建SqlSessionFactory时候,只需要new一次SqlSessionFactoryBuilder即可。
4.1.2 SqlSessionFactory
通过SqlSessionFactory创建SqlSession,使用单例模式管理sqlSessionFactory(工厂一旦创建,使用一个实例)。
将来mybatis和spring整合后,使用单例模式管理sqlSessionFactory。
4.1.3 SqlSession
SqlSession是一个面向用户(程序员)的接口。
SqlSession中提供了很多操作数据库的方法:如:selectOne(返回单个对象)、selectList(返回单个或多个对象)。
SqlSession是线程不安全的,在SqlSesion实现类中除了有接口中的方法(操作数据库的方法)还有数据域属性。
SqlSession最佳应用场合在方法体内,定义成局部变量使用。

原始Dao开发Mybatis

ResourceDao接口

    public interface ResourceDao {
        int deleteByPrimaryKey(String resourceId);

        int insert(Resource record);

        Resource selectByPrimaryKey(String resourceId);

        int updateByPrimaryKey(Resource record);

    }

ResourceDao接口实现类

public class ResourceDaoImpl implements ResourceDao {
    private SqlSessionFactory sqlSessionFactory;

    public ResourceDaoImpl(SqlSessionFactory sqlSessionFactory) {
        this.sqlSessionFactory = sqlSessionFactory;
    }

    @Override
    public int deleteByPrimaryKey(String resourceId) {
        SqlSession sqlSession = null;
        int rs = 0;
        try {
            sqlSession = sqlSessionFactory.openSession();
            rs = sqlSession.delete("com.pingan.hdht.dao.ResourceMapper.deleteByPrimaryKey", resourceId);//第一个参数为命名空间加上statement的id
            sqlSession.commit();
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if (sqlSession != null) {
                sqlSession.close();
            }
        }

        return rs;
    }

    @Override
    public int insert(Resource record) {
        SqlSession sqlSession = null;
        int rs = 0;
        try {
            sqlSession = sqlSessionFactory.openSession();
            rs = sqlSession.insert("com.pingan.hdht.dao.ResourceMapper.insert", record);//第一个参数为命名空间加上statement的id
            sqlSession.commit();
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if (sqlSession != null) {
                sqlSession.close();
            }
        }

        return rs;
    }

    @Override
    public Resource selectByPrimaryKey(String resourceId) {
        SqlSession sqlSession = null;
        Resource rs = null;
        try {
            sqlSession = sqlSessionFactory.openSession();
            rs = sqlSession.selectOne("com.pingan.hdht.dao.ResourceMapper.selectByPrimaryKey", resourceId);//第一个参数为命名空间加上statement的id
            sqlSession.commit();
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if (sqlSession != null) {
                sqlSession.close();
            }
        }

        return rs;
    }

    @Override
    public int updateByPrimaryKey(Resource record) {
        SqlSession sqlSession = null;
        int rs = 0;
        try {
            sqlSession = sqlSessionFactory.openSession();
            rs = sqlSession.update("com.pingan.hdht.dao.ResourceMapper.insert", record);//第一个参数为命名空间加上statement的id
            sqlSession.commit();
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if (sqlSession != null) {
                sqlSession.close();
            }
        }

        return rs;
    }

测试实例就以根据主键查询为实例来介绍,其他增删改类似

public class ResourceDaoImplTest {
    private static SqlSessionFactory sqlSessionFactory = null;

    /**
     * <p>
     * 行为描述:
     * 状态转变:
     * 定义的算法:
     * 操作系统/硬件依赖:
     * 允许的实现变化:
     * 安全约束:
     * </p>
     * @param
     * @return
     * @throws
     * @see
     * @since %I%
     */
    @BeforeClass
    public static void setUpBeforeClass() throws Exception {
        //mybatis配置文件
        String resource = "SqlMapConfig.xml";
        //得到配置文件流
        InputStream inputStream = Resources.getResourceAsStream(resource);
        //创建会话工厂,传递mybatis的配置文件信息
        sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
    }

    @Test
    public void testSelectByPrimaryKey() {
        ResourceDao resourceDao = new ResourceDaoImpl(sqlSessionFactory);
        Resource resource = resourceDao.selectByPrimaryKey("1");
        System.out.println(resource.getResourceDesc());
    }

}

运行结果如下
这里写图片描述
以上就是Mybatis开发dao的方法–原始dao开发的方式

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值