我有一个春天宁静的网络服务。现在我要将mybatis整合到我的项目中。但是,当我创建SqlSession时,我遇到了问题。
从CardValidationController(位于控制器包),我从CardValidationService(位于dao包)中调用方法getCardNoBy。
我调试并发现我陷入了创建SqlSession:
SqlSession session = sqlSessionFactory.openSession();
任何解决方案将不胜感激。感谢。
答案 0 :(得分:0)
我要做的是使用MyBatis-Spring Mapper接口尝试一些非常不同的东西,它允许MyBatis创建可以注入代码的简单,线程安全的映射器对象。此映射器对象将有效地允许您通过方法访问映射的查询。
一个例子是here,但基本的想法是简单地创建一个镜像xml映射器定义的接口,例如......
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.mybatis3.mappers.StudentMapper">
<resultMap type="Student" id="StudentResult">
<id property="studId" column="stud_id" />
<result property="name" column="name" />
<result property="email" column="email" />
<result property="dob" column="dob" />
</resultMap>
<select id="findAllStudents" resultMap="StudentResult">
SELECT * FROM STUDENTS
</select>
<!-- etc. -->
</mapper>
...可以通过接口com.mybatis3.mappers.StudentMapper
映射:
public interface StudentMapper {
List<Student> findAllStudents();
// etc.
}
...这将允许您简单地调用StudentMapper.findAllStudents()
,而不是手动调用您的查询。
您可以通过MyBatis-Spring处理地图制作器,请参阅here。最简单的方法是扫描它们,然后像对待任何其他Spring托管bean一样注入它们:
<mybatis:scan base-package="org.mybatis.spring.sample.mapper" />