Essayez de ne pas utiliser le test unitaire fourni par jUnit
En guise de demande, essayez d'utiliser la classe de test fournie par SpringBoot pour les tests, qui peut analyser automatiquement les composants et utiliser des objets bean dans le conteneur
De plus, s'il y a un injecté objet dans le composant, alors il doit retirer ce composant dans le conteneur SpringBoot et utiliser les fonctions de l'objet injecté ! ! !
Il y a eu une erreur aujourd'hui et il m'a fallu beaucoup de temps pour la résoudre. Finalement, j'ai découvert qu'il s'agissait d'une erreur de très bas niveau et basique !
Il s'agit de l'interface du mappeur. Utiliser @mapper équivaut à enregistrer l'objet proxy de l'interface dans le bean, mais il est introuvable dans le contexte (en fait c'est normal)
Car l'annotation @Mapper est fournie par Mybatis. , et l'annotation @Autowried est fournie par Spring, IDEA peut comprendre le contexte de Spring, mais elle n'est pas liée à Mybatis. Et nous pouvons voir dans le code source de @Autowried que par défaut, @Autowried exige que les objets dépendants existent, donc IDEA ne peut donner qu'un avertissement rouge pour le moment.
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); }
Il s'agit du fichier xml correspondant à l'interface du mappeur. Il n'y a également aucun problème.
<?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>
Ajoutez le fichier xml dans le répertoire java à la ressource et imbriquez-le dans la balise build.
<resources> <resource> <directory>src/main/java</directory> <includes> <include>**/*.xml</include> </includes> </resource> </resources>
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); } }
@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)); } }
@SpringBootTest class BitApplicationTests { @Autowired private UserService userService; @Test void contextLoads() { System.out.println(userService.queryById(15)); System.out.println(userService.queryById(13)); } }
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!