无法在myBatis中创建SqlSession

时间:2015-09-19 08:51:21

标签: java spring rest mybatis ibatis

我有一个春天宁静的网络服务。现在我要将mybatis整合到我的项目中。但是,当我创建SqlSession时,我遇到了问题。

从CardValidationController(位于控制器包),我从CardValidationService(位于dao包)中调用方法getCardNoBy。

我调试并发现我陷入了创建SqlSession:

SqlSession session = sqlSessionFactory.openSession();

任何解决方案将不胜感激。感谢。

1 个答案:

答案 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" />