mybatis开发原始dao
程序员文章站
2022-06-17 15:30:09
...
mybatis开发原始dao
- 程序员需要编写dao接口和dao实现类
-
SqlSession在代码中的使用场合
使用场合:sqlSession在使用时由SqlSessionFactory生成创建一个Sqlsession会话对象,对象在代码中可以定义为成员变量、方法形参、方法的局部变量。
-
SqlSessionFactory
SqlSessionFactory作为会话工厂,创建sqlSession,可以将SqlSessionFactory以单例方式。
-
SqlSessionFactoryBuilder
SqlSessionFactoryBuilder用于创建SqlSessionFactory,又由于SqlSessionFactory以单例方式,可以将SqlSessionFactoryBuilder简单的当成一个工具类来使用即可。
-
SqlSession
sqlSession是一个面向程序员接口。 SqlSession作用是操作数据库,sqlSession对象要存储数据库连接、事务、一级缓存结构等。 sqlSession对象是线程不安全的(多线程访问系统,当多线程同时使用一个sqlsession对象时会造成数据冲突问题) 由于sqlSession对象是线程不安全的,sqlSession最佳使用场合在方法体内作为局部变量来使用。
代码实现(此案例沿用mybatis入门案例中的数据)
第一步:
在之前案例的基础上添加以下画框中数据
第二步:
编写UserDao接口代码,代码如下:
public interface UserDao {
// 根据用户id查询用户信息
public User findUserById(int id);
}
编写UserDaoImpl接口实现类代码,代码如下:
// 用户的dao实现类
public class UserDaoImpl implements UserDao {
// 注入SqlSessionFactory
private SqlSessionFactory sqlsessionFactory;
// 因为此时没有被spring框架管理,所以需要手动注入SqlSessionFactory---这里用构造方法进行注入
public UserDaoImpl(SqlSessionFactory sqlsessionFactory) {
this.sqlsessionFactory = sqlsessionFactory;
}
// 通过用户id查询用户
@Override
public User findUserById(int id) {
// 通过SqlSessionFactory,获取SqlSession---
// 因为SqlSession是线程不安全的,所以不能定义为成员变量,需要定义为局部变量
SqlSession sqlSession = sqlsessionFactory.openSession();
// 关闭会话
sqlSession.close();
return user;
}
}
第三步:
对编写好的代码进行测试,创建测试类时,选中需要测试的UserDaoImpl这个类然后鼠标右键,执行下图操作
编写测试类代码如下:
public class UserDaoImplTest {
private SqlSessionFactory sqlSessionFactory;
// @Before这个注解标识的方法在测试方法执行之前执行
@Before
public void setUp() throws Exception {
// 创建SqlSessionFactory---可在入门程序中的MyBatisDemo中拷贝
// mybatis的全局配置文件
String resource = "SqlMapConfig.xml";
// 根据mybatis的全局配置文件构造一个输入流
InputStream inputStream = Resources.getResourceAsStream(resource);
// 创建会话工厂SqlSessionFatory_需要给一个input流,这个流就是配置文件SqlMapConfig.xml
sqlSessionFactory = new SqlSessionFactoryBuilder()
.build(inputStream);
}
@Test
public void testFindUserById() {
UserDao userDao = new UserDaoImpl(sqlSessionFactory);
// 调用dao的方法
User user = userDao.findUserById(1);
System.out.println(user);
}
}
结果如下:
推荐阅读
-
Spring+Spring MVC+Mybatis 框架整合开发(半注解半配置文件)
-
mybatis 的 dao 接口跟 xml 文件里面的 sql 是如何建立关系的?一步步解析
-
java开发中的Dao设计模式解析
-
一个用于MyBatis的辅助页面,自动生成实体,mapper,impl,dao,注册spring,mybatis的小玩意
-
go web开发(gin&gorm) 之DB配置及DAO的基本使用
-
荐 MyBatis基于注解的开发
-
JSP 开发之servlet中调用注入spring管理的dao
-
(六) mybatis 源码之 四大对象与插件开发
-
AngularJS整合Springmvc、Spring、Mybatis搭建开发环境
-
Spring 整合Mybatis dao原始方法