SSM-Spring-MyBatisSpring项目-配置SqlSessionTemplate组件
程序员文章站
2022-06-17 08:47:07
...
SSM-Spring-MyBatisSpring项目-配置SqlSessionTemplate组件
是一个线程安全的类,确保每个线程使用的SqlSession唯一且不冲突。提供一系列增删改查功能,使用前需要配置:
<bean id="sqlSessionTemplate" class="org.mybatis.spring.SqlSessionTemplate">
<constructor-arg ref="SqlSesstionFactory"></constructor-arg>
<constructor-arg value="BATCH"></constructor-arg>
</bean>
SqlSessionTemplate要通过带参数构造器去创建方法,常用参数是SqlSessionFactory和Mybatis执行器类型,取值范围:SIMPLE,REUSE,BATCH
public class Test {
public static void main(String[] args) {
ApplicationContext ctx=new ClassPathXmlApplicationContext("spring/spring-mybatis.xml");
SqlSessionTemplate sqlSessionTemplate=ctx.getBean(SqlSessionTemplate.class);
Role role=new Role();
role.setId(2);
role.setRoleName("role_name_sqlsessionTempl");
role.setNote("note_sqlSessionTeml");
//sqlSessionTemplate.insert("com.ssm.mapper.RoleMapper.insertRole",role);
Long id=role.getId();
Object o = sqlSessionTemplate.selectOne("com.ssm.mapper.RoleMapper.getRole", id);
System.out.println(o.toString());
role.setNote("update_Sql");
sqlSessionTemplate.update("com.ssm.mapper.RoleMapper.updateRole",role);
sqlSessionTemplate.delete("com.ssm.mapper.RoleMapper.deleteRole",id);
}
}
从运行结果的日志中得出,当运行一个SqlSessionTemplate,它会重新获取一个新的SqlSession,所以每个方法都是独立的,意味着他是线程安全的。
当同时配置SqlSessionTemplate和SqlSessionFactory时候,SqlSessionTemplate优先级大于SqlSessionFactory