ibatis使用

仅仅是执行流程介绍:
示例代码
执行流程
1. 建立sqlMap 里面写上SQL语句
2. XML 装载BasicDataBase类,并设置数据库连接user pwd dest 等信息(这个应该通过使用PropertyPlaceholderConfiger加载配置文件实现)
3. 创建domain和dao操作接口
4. 在daoImpl中继承SqlMapClientDapSupport 类和dao操作接口。
5. 在Impl中调用在1中写的SQL语句 setSqlMapClient(sqlMapClient) 设置类,使用getSqlMapClientTemplate.xxx调用,通过返回值的类型转换成所需要的。


SQL语句
1. prepend
参考1
参考2
参考3

dynamic标签的prepend属性作为前缀添加到结果内容前面,当标签的结果内容为空时,prepend属性将不起作用。
当dynamic标签中存在prepend属性时,将会把其嵌套子标签的第一个prepend属性忽略

2.select详解


//示例
<select id="UserDAO.getByQuery" parameterClass="java.util.Map"
            resultClass="UserDO">
        select
        <include refid="UserDO.all.fields"/>
        from
        users
        <dynamic prepend="where">
            <isNotEmpty prepend="and" property="nick">
                nick like
                concat(concat("%",#nick#),"%")
            </isNotEmpty>
            <isNotEmpty prepend="and" property="userTags">
                (<iterate prepend="" conjunction="or" property="userTags">
                <![CDATA[user_tag = user_tag | $userTags[]$]]>
            </iterate>)
            </isNotEmpty>
            <isNotEmpty prepend="and" property="userIds">
                user_id in
                <iterate open="(" close=")" property="userIds" conjunction=",">
                    $userIds[]$
                </iterate>
            </isNotEmpty>

            <isNotNull property="gmtModifiedStart" prepend="and">
                gmt_modified >= #gmtModifiedStart#
            </isNotNull>
            <isNotNull property="startCreated" prepend="and">
                gmt_created >= #startCreated#
            </isNotNull>
            <isNotNull property="endCreated" prepend="and">
                <![CDATA[gmt_created <= #endCreated#]]>
            </isNotNull>

            <isNotEmpty prepend="and" property="remark">
                <![CDATA[(remark is not null and remark <> '')]]>
            </isNotEmpty>
            <isNotNull prepend="and" property="superUser">
                <![CDATA[user_tag & (1<<13) = 0]]>
            </isNotNull>
            <isNotEmpty prepend="and" property="manager" open="(" close=")">
                manager in (#manager#, "咨询", "") or manager is null
            </isNotEmpty>

            <isNotNull prepend="and" property="filterTaoDianDian">
                <![CDATA[user_tag & (1<<28) = 0]]>
            </isNotNull>
        </dynamic>
        order by gmt_created desc
        <dynamic prepend="">
            <isNotEmpty prepend="" property="_start">
                <isNotEmpty prepend="" property="_limit">
                    limit
                    $_start$,$_limit$
                </isNotEmpty>
            </isNotEmpty>
        </dynamic>
    </select>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
如果在iBatis使用iterate进行批量插入处理,而且表名不确定,需要通过参数传递进SQL语句中,可以使用动态SQL语句和参数映射来实现。 具体步骤如下: 1. 在iBatis的SQL语句中,使用动态SQL语句来拼接表名。可以使用if标签判断表名是否为空,如果为空,则使用默认表名;如果不为空,则拼接传递进来的表名。 ``` <insert id="batchInsert"> INSERT INTO <if test="tableName != null and tableName != ''"> ${tableName} </if> <if test="tableName == null or tableName == ''"> default_table_name </if> (column1, column2, column3) VALUES <iterate property="list" open="(" close=")" conjunction=","> #{item.column1},#{item.column2},#{item.column3} </iterate> </insert> ``` 2. 在iBatis的SqlMapClientTemplate中,将表名作为参数传递进insert方法中,并将参数映射到SQL语句中。 ``` public void batchInsert(String tableName, List<Entity> list) { Map<String, Object> paramMap = new HashMap<>(); paramMap.put("tableName", tableName); paramMap.put("list", list); sqlSessionTemplate.insert("batchInsert", paramMap); } ``` 在这个示例代码中,tableName是需要动态拼接的表名,list是需要插入的数据列表。在batchInsert方法中,将tableName和list封装成Map类型的参数,然后将参数传递进insert方法中,最终参数会被映射到SQL语句中,实现动态拼接表名的功能。 注意,在动态拼接表名时,需要使用${}来引用表名变量,而不是#{}。因为#{}会将表名参数作为字符串进行转义,而${}则不会进行转义,所以可以正确拼接表名。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值