Rumah > Java > javaTutorial > teks badan

Apakah masalah yang mungkin dihadapi apabila SpringBoot menyepadukan MyBatis?

WBOY
Lepaskan: 2023-05-17 20:43:04
ke hadapan
1387 orang telah melayarinya

Cuba untuk tidak menggunakan ujian unit yang disediakan oleh jUnit

Buat permintaan dan cuba gunakan kelas ujian yang disediakan oleh SpringBoot untuk ujian, yang boleh mengimbas komponen secara automatik dan menggunakan objek kacang dalam bekas

Dan jika jika terdapat objek yang disuntik dalam komponen, maka komponen ini mesti dikeluarkan dari bekas SpringBoot dan kemudian fungsi objek yang disuntik boleh digunakan! ! !

Terdapat ralat hari ini dan saya mengambil masa yang lama untuk menyelesaikannya Akhirnya, saya mendapati bahawa ia adalah ralat yang sangat rendah dan asas!

Ini ialah antara muka pemeta menggunakan @mapper adalah sama dengan mendaftarkan objek proksi antara muka ke dalam kacang, tetapi ia tidak boleh ditemui dalam konteks (sebenarnya ia adalah perkara biasa)

Kerana. anotasi @Mapper ialah Mybatis yang disediakan, dan anotasi @Autowried disediakan oleh Spring IDEA boleh memahami konteks Spring, tetapi ia tidak berkaitan dengan Mybatis. Dan kita boleh lihat daripada kod sumber @Autowried bahawa secara lalai, @Autowried memerlukan objek bergantung mesti wujud, jadi IDEA hanya boleh memberikan amaran merah pada masa ini.

package com.bit.mapper;
import com.bit.pojo.User;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
@Mapper
public interface UserMapper {
    User selectById(@Param("userid") Integer id);
}
Salin selepas log masuk

Ini ialah fail xml yang sepadan dengan antara muka pemeta, dan tiada masalah

<?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.bit.mapper.UserMapper">
        <select id="selectById" resultType="com.bit.pojo.User">
            select * from users where id = #{userid}
        </select>
</mapper>
Salin selepas log masuk

Tambahkan fail xml dalam direktori java pada sumber sumber dan sarangkannya dalam binaan. teg. Juga tiada masalah. , terus kata tak boleh disuntik selalu fikir ada Masalah (tapi akhirnya didapati tiada masalah)

Saya habis menulis. kelas pelaksanaan perkhidmatan, dan tidak ada masalah

<resources>    
    <resource>        
        <directory>src/main/java</directory>        
        <includes>            
            <include>**/*.xml</include>        
        </includes>    
    </resource>
</resources>
Salin selepas log masuk
Apakah masalah yang mungkin dihadapi apabila SpringBoot menyepadukan MyBatis?Kemudian saya pergi untuk mengujinya secara langsung, saya mengujinya Kain bulu?

Instantiate UserService, cipta objek baharu, dan kemudian panggil kaedah terus untuk melihat sama ada UserMapper boleh dipanggil untuk menanyakan pangkalan data. Kemudian saya terus mendapat ralat pengecualian penunjuk nol

package com.bit.service;
import com.bit.mapper.UserMapper;
import com.bit.pojo.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class UserServiceImpl implements UserService{
    @Autowired
    private UserMapper userMapper;
    @Override
    public User queryById(Integer id) {
        System.out.println("进入了service");
        return userMapper.selectById(id);
    }
}
Salin selepas log masuk

  Selepas beberapa jam, saya menjumpai jawapan dalam blog orang lain

Apakah masalah yang mungkin dihadapi apabila SpringBoot menyepadukan MyBatis?  UserMapper kami disuntik ke dalam UserServiceImpl, Kami tidak boleh menggunakan UserServcieIml secara langsung Jika kami menggunakan fungsinya dalam kelas lain, kami mesti menyuntik kelas ini ke dalam kelas semasa dan dapatkan UserService daripada bekas sebelum kita boleh memanggilnya dengan betul tanpa pengecualian penuding nol Saya selalu Tidak dijumpai, ini adalah ralat peringkat rendah.

Pendekatan yang betul: mula-mula himpunkannya ke dalam objek semasa, dan kemudian dapatkan kacang dari bekas untuk digunakan

@SpringBootTest
class BitApplicationTests {
    @Test
    void contextLoads() {
        UserService userService = new UserServiceImpl();
        userService.queryById(13);
        System.out.println(userService);
        System.out.println(userService.queryById(15));
        System.out.println(userService.queryById(13));
    }
}
Salin selepas log masuk

Atas ialah kandungan terperinci Apakah masalah yang mungkin dihadapi apabila SpringBoot menyepadukan MyBatis?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:yisu.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan