Y a-t-il un moyen de sélectionner / mettre à jour / supprimer de manière dynamique en utilisant ibatis / mybatis? p>
Quand je dis "dynamiquement", cela signifie que je ne veux pas créer de pojo / datamapper du tout. p>
Un exemple d'URL serait accueilli. P>
4 Réponses :
Oui, il devrait être possible de construire le mappage en cours d'exécution via une API et d'utiliser des cartes au lieu de classes d'entité. P>
Oui, il suffit de définir le résultantType code> attribut sur
mapper code> et les données de la table seront placées dans un hachema de noms de colonnes à des valeurs. Si la requête renvoie plus d'une rangée, les lignes mappées seront placées dans une liste. Si vous souhaitez sélectionner une seule colonne, vous pouvez obtenir juste cette valeur (en tant que chaîne, int, etc.) ou en tant que liste.
<select id="test1" resultType="map">select * from user</select>
<select id="test2" resultType="map" parameterType="int">
select * from user where id=#{value}</select>
<select id="test3" resultType="string">select name from user</select>
...
// returns a list of maps
List test = sqlSession.selectList("test1");
// returns a single map
Object map = sqlSession.selectOne("test2", 0);
// returns a list of strings
List names = sqlSession.selectList("test3");
La différence est entre SELECT * code> et
Sélectionnez le nom code>, en supposant que le nom est Varcharne. Il n'est pas nécessaire que ce ne soit pas à être *, mais aussi longtemps que vous avez besoin de plus d'une colonne, les résultats doivent être de la carte (ou un pojo). Si vous sélectionnez seulement une colonne, définissez le résultat des résultats sur n'importe quel type de colonne.
L'approche suivante peut être utile. Dis, vous avez une interface de sélection générique, comme:
<insert id='insertPKs'> INSERT INTO requiredTable <include refid="Common.includeInsertPkSelect"> <property name="id" value="entityId"/> <property name="entityTable" value="entityTable"/> </include> <include refid="Common.includeInsertPkWhere"> <property name="id" value="entityId"/> <property name="entityTable" value="entityTable"/> </include> </insert>
Oui, vous pouvez faire sélectionner / mettre à jour / supprimer sans utiliser Pojo. En mybatis, vous pouvez écrire votre requête dans mapper XML et définir le résultatType qui sera renvoyé à partir de l'instruction SQL et stocker cela dans des objets.
Par exemple, P>
List<Map<String,Object>> results = session.selectList("data.fetch");