pool de connexion à la base de données mybatis et SQL Advanced

(1) Le pool de connexions est un conteneur utilisé pour stocker les connexions. Le conteneur est un objet de collection, qui doit être thread-safe. Deux threads ne peuvent pas obtenir la même connexion. La collection a une fonction de file d'attente: premier entré, premier sorti

(2) Le pool de connexion Mybatis fournit 3 méthodes de configuration

         Le fichier de configuration principal se trouve dans le projet Maven, sous le fichier de ressources, le nom est: la balise DataSource dans SqlMapConfig.xml, la valeur de l'attribut type est:

                        POOLED: En utilisant le pool de connexions dans la spécification traditionnelle javax.sql.DataSource, mybatis a une implémentation spécifique à la spécification

                       UNPOOLED: En utilisant le moyen traditionnel d'obtenir des connexions, bien que l'interface javax.sql.DataSource soit également implémentée, l'idée de pooling n'est pas implémentée

                       JNDI: La technologie JNDI fournie par le serveur est utilisée pour obtenir des objets DataSource. Différents serveurs peuvent obtenir différents objets DataSource.

                                                                S'il ne s'agit pas d'un projet Web ou JAR Maven, il ne peut pas être utilisé

  (3) <mapper namespace = "cn.rzpt.dao.IUserDao">: Ecrivez l'espace de noms correspondant à dont Dao

(4) La balise xml d'écriture if des paramètres inconnus entrants:

<mapper namespace="cn.rzpt.dao.IUserDao">
<!--在这里,使用if进行判断时,只能使用and符号,不能是两个与符号-->
    <select id="findUserByCondition" resultType="cn.rzpt.domain.User" parameterType="cn.rzpt.domain.User">
        select * from user where 1=1
        <if test="username != null">
            and username = #{username}
<!--这里面需要区分大小写,要与实体类的写法一致-->
        </if>
       <if test="sex != null">
           and sex = #{sex}
       </if>
    </select>
</mapper>

où tag:

<select id="findUserByCondition" resultType="cn.rzpt.domain.User" parameterType="cn.rzpt.domain.User">
    select * from user
    <where>
        <if test="username != null">
            and username = #{username}
        </if>
        <if test="sex != null">
            and sex = #{sex}
        </if>
    </where>
</select>

Besoin d'écrire VO:

public class QueryVO {
    private User user;

    public User getUser() {
        return user;
    }

    public void setUser(User user) {
        this.user = user;
    }
}

interface

List<User> findUserByVo(QueryVO vo);

//根据传入的参数条件查询:姓名,性别,地址...,有其一,其二等,或者全部
List<User> findUserByCondition(User user);

Classe d'essai

@Test
public void testFindByCondition(){
    User user = new User();
    user.setUsername("老王");
    List<User> users = userDao.findUserByCondition(user);

    for (User u : users){
        System.out.println(u);
    }
}

(5) foreach: passer plusieurs paramètres, id dans (...)

<mapper namespace = "cn.rzpt.dao.IUserDao"> 
    <! - Configurer la correspondance entre le nom de colonne du résultat de la requête et le nom d'attribut de la classe d'entité -> 
    <resultMap id = "userMap" type = " cn.rzpt.domain .User "> 
        <! - Correspondance du champ de clé primaire -> 
        <id property =" id "column =" id "> </id> 
        <! - Correspondance du champ de clé non primaire, la propriété doit être cohérente avec l'attribut de classe d'entité, La colonne doit être cohérente avec la base de données. Sous Linux, le nom de la colonne est sensible à la casse -> 
        <result property = "username" column = "username"> </result> 
        < result property = "address" column = "address"> </ result> 
        <result property = "sex" column = "sex"> </result> 
        <result property = "birthday" column = "birthday"> </result>
    </resultMap> 

    <! - Extraire les instructions sql répétées -> 
    <sql id = "defaultUser"> 
        <! - S'il y a d'autres instructions suivantes, n'écrivez pas de point-virgule pour le moment, sinon une erreur sera signalée ->  
        sélectionnez * de l'utilisateur
    </sql>

    <! - 根据 queryvo 中 的 id 集合 实现 查询 用户 列表 -> 
    <select id = "findUserInIds" resultMap = "userMap" parameterType = "cn.rzpt.domain.QueryVO"> 
        <! - sélectionnez * à partir de l'utilisateur- -> 
        <include refid = "defaultUser"> </include> 
        <where> 
            <if test = "ids! = null et ids.size ()> 0"> 
                <foreach collection = "ids" open = "et id dans ( "close =") "item =" id "separator =", "> 
                    # {id} 
                </foreach> 
            </if> 
        </where> 
    </select> 


</mapper>

 

public class QueryVO { 
    utilisateur privé; 

    ID de liste privée <Integer>; 

    Liste publique <Integer> getIds () { 
        return ids; 
    } 

    public void setIds (List <Integer> ids) { 
        this.ids = ids; 
    } 

    utilisateur public getUser () { 
        return user; 
    } 

    public void setUser (utilisateur utilisateur) { 
        this.user = utilisateur; 
    } 
}
Ajouté dans l'interface publique IUserDao
/ ** 
 * Interroge les informations utilisateur en fonction de l'ensemble d'identifiants fourni dans queryvo 
 * @param vo 
 * @return 
 * / 
List <User> findUserInIds (QueryVO vo);

 

Classe d'essai

@Test 
public void testFindInIds () { 
    QueryVO vo = new QueryVO (); 
    List <Integer> list = new ArrayList <Integer> (); 
    list.add (41); 
    list.add (43); 
     vo.setIds (liste); 

    List <User> users = userDao.findUserInIds (vo); 

    pour (Utilisateur u: utilisateurs) { 
        System.out.println (u); 
    } 
}

Je suppose que tu aimes

Origine blog.csdn.net/sky2line/article/details/109349941
conseillé
Classement