在SpringBoot中使用JPA的Mybatis

时间:2016-09-07 08:08:37

标签: jpa spring-boot mybatis

我正在尝试使用JPA(@ CrudRepository),但我想用Mybatis创建自定义控制器。

我有这个工作,但问题是,例如在程序中,它们不能一起工作。

是否可以与Mybatis一起实施JPA一起工作?

我一直在阅读,我明白Mybatis不是ORM。一些博客表明这是可能的,但不是如何。

2 个答案:

答案 0 :(得分:1)

可以在Spring Transaction下一起管理JPA和mybatis。事实上,它们都可以在同一个事务中一起回滚。但是,请注意副作用,例如:

e.g。

在同一交易中:

        var app = angular
    .module("myModule", [ "ngRoute" ])
    .config(function($routeProvider, $locationProvider) {
        $routeProvider.when("/home", {
            templateUrl : "Templates/home.html",
            controller : "homeController"
        }).when("/courses", {
            templateUrl : "Templates/courses.html",
            controller : "coursesController"
        }).when("/students", {
            templateUrl : "Templates/students.html",
            controller : "studentsController"
        }).when("/students/:id", {
            templateUrl : "Templates/studentDetails.html",
            controller : "studentDetailsController"
        }).otherwise({
            redirectTo : "/home"
        })
        $locationProvider.html5Mode(true);
    })
    .controller("homeController", function($scope) {
        $scope.message = "Home page";
    })
    .controller("coursesController", function($scope) {
        $scope.courses = [ "c#", "Android", "Java", "Html", "PHP" ];
    })
    .controller(
            "studentsController",
            function($scope, $http) {
                $http
                        .get(
                                "http://localhost/angulartest/services/api.php?list")
                        .then(function(response) {
                            $scope.students = response.data;
                        });
            })
    .controller(
            "studentDetailsController",
            function($scope, $http, $routeParams) {
                $http(
                        {
                            url : "http://localhost/angulartest/services/api.php",
                            method : "get",
                            params : {
                                id : $routeParams.id
                            }
                        }).then(function(response) {
                    $scope.student = response.data;
                    $scope.message = "student details";
                    console.log($scope.student);
                })
            });

在上面的场景中,TableB将无法获取TableA的ID。

答案 1 :(得分:0)

我根本不认为这是个好主意。使用其中一种。

我可以想象你可以让它工作,但是你不能在同一个表之上使用它们或者对两个持久性框架使用事务管理。

因此,如果您有这样的用例(您没有解释任何用例),我认为您的应用程序应该分成两个单独的服务。 (可选)考虑将存储分成两个单独的数据库实例。