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
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 transmettremap
.Méthode 2
Vous pouvez saisir des paramètres dans la méthode définie par
mapper接口
et utiliser l'annotationorg.apache.ibatis.annotations.Param
pour marquer le nom du paramètre. Par exemple :Après cela, utilisez simplement le mappage de nom correspondant en XML :
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)
ousqlSession.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 :Il est à noter ici :
Le nom complet de la classe
DAO接口
ducn.xxx.dao.UserMapper
personnalisé doit correspondre à l'attribut<mapper namespace="cn.xxx.dao.UserMapper">
dansnamespace
.En même temps, la valeur de
namespace
(cn.xxx.dao.UserMapper) et la valeur de l'attributselect
(login) deid
sont en fait les sqlSession.selectOne(queryId) vous utilisez >.queryId
, vous devez placer
maven
sous le chemin de la ressource (xxxMapper.xml
) au lieu du chemin du code source (src/main/resources
), sinonsrc/main/java
sous la source d'exécution le chemin du code 🎜> est introuvable.xml文件
pour gérer
Spring
. Compte tenu de cela, il existe une autre façon de gérerBean
, qui ne nécessite pas d'injecter directementSqlSessionFactory
dansDAO
. . Voici un exemple d'uneSqlSessionFactory
intégration que j'aifock
venue de quelqu'un d'autre auparavant : https://github.com/hylexus/be...SSM