Maison >Java >javaDidacticiel >Présentation de la solution pour le chargement paresseux de mybatis
Cet article présente principalement l'explication détaillée du chargement différé dans le tutoriel mybatis. La signification et l'utilisation de la mise en œuvre du chargement paresseux sont présentées en détail. Ceux qui sont intéressés peuvent en apprendre davantage sur le
le chargement paresseux
1 La signification de l'utilisation du chargement paresseux.
Lors de l'exécution d'une requête de données, afin d'améliorer les performances des requêtes de base de données, essayez d'utiliser une requête à table unique, car la requête à table unique est plus rapide que la requête à table unique requête connexe.
Si l'interrogation d'une seule table peut répondre aux besoins, interrogez d'abord la table unique. Lorsque des informations associées sont nécessaires, puis une requête associée lorsque des informations associées sont nécessaires, interrogez à nouveau. C'est ce qu'on appelle le chargement paresseux.
Le resultMap dans mybatis fournit la fonction de chargement paresseux, et le chargement paresseux est configuré via le resultMap.
2 Configurez mybatis pour prendre en charge le chargement différé
Configurez les paramètres globaux dans SqlMapConfig.xml :
<!-- 全局配置参数 --> <settings> <!-- 延迟加载总开关 --> <setting name="lazyLoadingEnabled" value="true" /> <!-- 设置按需加载 --> <setting name="aggressiveLazyLoading" value="false" /> </settings>
3 Implémentation du chargement paresseux
3.1 Idées d'implémentation
Exigences :
Demander des informations sur la commande et l'utilisateur, enquête individuelle.
Au début, seules les informations de commande sont interrogées
Lorsqu'un utilisateur est nécessaire, la méthode getUser() de la classe Orders est appelée pour effectuer un chargement paresseux et émettre du SQL à la base de données.
3.2 mapper.xml
<!-- 一对一查询延迟加载 开始只查询订单,对用户信息进行延迟加载 --> <select id="findOrderUserListLazyLoading" resultMap="orderCustomLazyLoading"> SELECT orders.* FROM orders </select>
3.3 resultMap
<!-- 一对一查询延迟加载 的配置 --> <resultMap type="orders" id="orderCustomLazyLoading"> <!-- 完成了订单信息的映射配置 --> <!-- id:订单关联用户查询的唯 一 标识 --> <id column="id" property="id" /> <result column="user_id" property="userId" /> <result column="number" property="number" /> <result column="createtime" property="createtime" /> <result column="note" property="note" /> <!-- 配置用户信息的延迟加载 select:延迟加载执行的sql所在的statement的id,如果不在同一个namespace需要加namespace sql:根据用户id查询用户信息 column:关联查询的列 property:将关联查询的用户信息设置到Orders的哪个属性 --> <association property="user" select="com.sihai.mybatis.mapper.UserMapper.findUserById" column="user_id"></association> </resultMap>
3.4 mapper.java
//一对一查询,延迟加载 public List<Orders> findOrderUserListLazyLoading() throws Exception;
3.5 Code de test
// 一对一查询延迟加载 @Test public void testFindOrderUserListLazyLoading() throws Exception { SqlSession sqlSession = sqlSessionFactory.openSession(); // 创建mapper代理对象 OrdersMapperCustom ordersMapperCustom = sqlSession .getMapper(OrdersMapperCustom.class); // 调用方法 List<Orders> list = ordersMapperCustom.findOrderUserListLazyLoading(); //这里执行延迟加载,要发出sql User user = list.get(0).getUser(); System.out.println(user); }
4 résumé de resultType, resultMap, scénarios d'utilisation de chargement paresseux
4.1 Chargement paresseux :
Il existe de nombreuses façons d'implémenter le chargement paresseux. L'interrogation d'une seule table peut répondre à la demande. Afin d'améliorer les performances des requêtes de base de données, le chargement paresseux. est utilisé, puis les informations associées sont interrogées.
mybatis fournit une fonction de chargement paresseux pour la couche de service.
4.2 resultType :
Fonction : Mappez les résultats de la requête au pojo en fonction de la cohérence du nom de la colonne SQL du nom de l'attribut pojo.
Occasion : il est courant d'afficher certains enregistrements détaillés lorsque toutes les informations de requête associées sont affichées sur la page, vous pouvez directement utiliser resultType pour mapper chaque enregistrement au pojo et parcourir la liste sur le. page d'accueil (liste (au milieu se trouve pojo).
4.3 resultMap :
Utilisez l'association et la collection pour réaliser une cartographie avancée un-à-un et un-à-plusieurs.
Association 4.4 :
Fonction : Mapper les informations de requête d'association à une classe pojo.
Occasion : afin d'obtenir facilement des informations connexes, vous pouvez utiliser l'association pour mapper les commandes associées à POJO, telles que l'interrogation des commandes et des informations utilisateur associées.
Collection 4.5 :
Fonction : Mapper les informations de requête associées à une collection de listes.
Occasion : afin d'obtenir facilement des informations associées, vous pouvez utiliser la collection pour mapper les informations associées à la collection de listes. Par exemple : pour interroger les modules et les fonctions de portée des autorisations utilisateur, vous pouvez utiliser la collection pour. mapper les listes de modules et de fonctions à la liste.
【Recommandations associées】
1. Recommandation spéciale : "php Programmer Toolbox" version V0.1 Télécharger
2. Tutoriel vidéo gratuit Java
3 Analyse complète des annotations Java
.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!