mybatis的动态SQL以及连接池

mybatis根据传入参数的不同来查询。
<select id="findByCondition" parameterType="com.domain.User" resultType="com.domain.User">
        select * from users where 1=1
        <if test="name != null">
           and name= #{name}
        </if>
    </select>
如果太多的话,就不写where1=1.在if外面嵌套if标签。
<select id="findByCondition" parameterType="com.domain.User" resultType="com.domain.User">
        select * from users
        <where>
            <if test="name != null">
                and name= #{name}
            </if>
        </where>

    </select>

同时,第一个if语句中的and将会被省略!!!

mybatis中的范围查询,in

mybatis范围查询,例如select * from users where age in (11,12,13);
外部定义一个包装类,包装ages作为属性,下列以id为例子(在外部定义集合来包装)
<select id="findByRange" parameterType="com.domain.QueryVo" resultType="com.domain.User">
        select * from users
        <where>
//where子句的开头,and或者是or,将会被where元素去除。
            <if test="ids != null and ids.size()>0">这里的判断条件是Java语句
                <foreach collection="ids" open="and id in (" close=")" item="id" separator=",">
                    #{id}
                </foreach>
            </if>
        </where>
    </select>
SQL语句 select 字段 from where id in{?}
<foreach>标签用于遍历集合,它的属性;
Collection 代表要遍历的集合元素(属性名称)
open代表语句的开始部分
close代表语句的结束部分
item代表遍历集合的每个元素,生成的变量名
sperator代表元素之间的分割符

连接池:

连接池:在实际开发中使用,可以减少我们获取连接所消耗的时间。

mybatis连接池提供了3种方式的配置
在主配置文件中的DataSource属性中配置
type取值 POOLED采用传统的javax.sql.DataSource规范中的连接池      
UNPOLLED   虽然实现了DataSource的标准,但是没有使用池的概念(Connection对象)
JNDI 使用服务器提供的jndi技术来取得DataSource对象。注意:如果不是web工程和maven的war工程,是不可使用的。

备注:mybatis中事务的操控,底层是通过操控Connection对象设置的。

POOLED:从池中拿出连接,最后把连接放回池里。
UNPOOLED,创建连接,结束连接(jdbc连接方式)

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章