Mybatis开发dao的方法--原始dao篇
来源:互联网 发布:软件实施管理制度 编辑:程序博客网 时间:2024/05/16 08:18
题记
摘抄自传智播客燕青老师,下面的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开发的方式
- Mybatis开发dao的方法--原始dao篇
- mybatis 用原始的dao方法开发
- Mybatis原始的dao开发
- 原始DAO开发mybatis
- Mybatis(原始dao开发)
- Mybatis开发原始Dao(即有Dao的实现)
- mybatis 原始dao开发存在的问题
- mybatis开发原始dao的方式
- Mybatis-Dao层开发之原始dao
- 【MyBatis框架点滴】——MyBatis开发DAO的两种方法:原始DAO开发方法和Mapper代理方法
- 使用mybatis开发原始dao
- MyBatis原始Dao开发方式
- Mybatis之原始dao开发方法(程序员需要写dao接口和dao实现类)(11)
- Mybatis开发dao的方法
- mybatis开发dao的方法
- mybatis开发dao的方法
- Mybatis中mapper代理方法替换原始Dao开发方法
- 【MyBatis学习03】原始dao开发方法及其弊端
- Hello World!
- 要考驾照科目二了,好紧张
- 用spring的InitializingBean的afterPropertiesSet来初始化
- Android 5.0 Activity切换动画
- Java程序猿之网络编程(29)
- Mybatis开发dao的方法--原始dao篇
- 通过AJAX与Servlet进行交互:通过JSON传递数据
- Linux上Oracle 11g安装步骤图解
- BZOJ 3555 [Ctsc2014] 企鹅QQ [求纠错……]
- 机器人制作入门(三)----速度控制
- OpenCV+Tesseract进行OCR学习(二)文字识别
- ajax分页
- MaterialProgress等待框
- JAVA反射系列之Field