无法在 myBatis 中创建 SqlSession

Cannot create SqlSession in myBatis

我有一个 spring restful 网络服务。现在我要把mybatis集成到我的项目中。但是,我在创建 SqlSession 时遇到了问题。

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

调试了一下发现卡在create SqlSession:

SqlSession session = sqlSessionFactory.openSession();

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

我会做的是尝试一些非常不同的东西,使用 MyBatis-Spring 映射器接口,它允许 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" />