java - mybatis用户登录,Dao层如何传入多个参数?
黄舟
黄舟 2017-04-18 10:37:04
0
1
510
黄舟
黄舟

人生最曼妙的风景,竟是内心的淡定与从容!

répondre à tous(1)
黄舟

Il existe deux méthodes courantes :

Méthode 1

Définissez un Bean spécifiquement pour passer des paramètres et fournissez des méthodes Setter/Getter. Cette méthode est évidemment trop lourde.
Mais cela peut être simplifié, il suffit de mettre plusieurs paramètres dans map et de transmettre map.

Méthode 2

Vous pouvez saisir des paramètres dans la méthode définie par mapper接口 et utiliser l'annotation org.apache.ibatis.annotations.Param pour marquer le nom du paramètre. Par exemple :

public interface UserMapper{
    User login(@Param("name")String name,@Param("password")String password);
}

Après cela, utilisez simplement le mappage de nom correspondant en XML :

<select id="login"    resultMap="UserResultMap">
    select col1,col2,col3
    from tal_name
    where user_name=#{name} and pwd=#{password}
</select>

Remarque

Si vous souhaitez utiliser la méthode 2, votre méthode actuelle ne fonctionnera pas.
Parce que vous appelez en utilisant sqlSession.selectOne(queryId) ou sqlSession.selectOne(queryId,paramObj).
Pour utiliser la deuxième méthode, vous devez d'abord utiliser sqlSession.getMapper(UserMapper.class) pour obtenir l'interface définie (DAO Après avoir obtenu l'interface, vous pouvez transmettre les paramètres relativement librement, car la définition de la méthode dans l'interface est une méthode Java standard). définition. . Vous pouvez utiliser l'annotation @Param pour marquer les paramètres dans la méthode d'interface définie. Un exemple approximatif est le suivant :

package cn.xxx.dao;
public interface UserMapper{
    User login(@Param("name")String name,@Param("password")String password);
}
<?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="cn.xxx.dao.UserMapper">
    <select id="login"    resultMap="UserResultMap">
        select col1,col2,col3
        from tal_name
        where user_name=#{name} and pwd=#{password}
    </select>
</mapper>

Il est à noter ici :

  • Le nom complet de la classe DAO接口 du cn.xxx.dao.UserMapper personnalisé doit correspondre à l'attribut <mapper namespace="cn.xxx.dao.UserMapper"> dans namespace.
    En même temps, la valeur de namespace (cn.xxx.dao.UserMapper) et la valeur de l'attribut select (login) de id sont en fait les sqlSession.selectOne(queryId) vous utilisez >. queryId

  • S'il s'agit d'un projet

    , vous devez placer maven sous le chemin de la ressource (xxxMapper.xml) au lieu du chemin du code source (src/main/resources), sinon src/main/java sous la source d'exécution le chemin du code 🎜> est introuvable. xml文件

Une autre suggestion est : Vérifiez visuellement que vous utilisez

pour gérer Spring. Compte tenu de cela, il existe une autre façon de gérer Bean, qui ne nécessite pas d'injecter directement SqlSessionFactory dans DAO. . Voici un exemple d'une SqlSessionFactory intégration que j'ai fock venue de quelqu'un d'autre auparavant : https://github.com/hylexus/be...SSM

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!