ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

动态SQL的sql标签和foreach标签

2022-01-30 13:03:28  阅读:180  来源: 互联网

标签:connections 标签 ids forcefully blog foreach sql id


sql标签

<!--sql片段-->
    <sql id="updateSql">
        <if test="title != null">
            title=#{title},
        </if>
        <if test="author != null">
            author=#{author},
        </if>
    </sql>
 <!--使用include引用sql片段-->
    <update id="updateBlog" parameterType="map">
        update blog
        <set>
            <include refid="updateSql"></include>
        </set>
        where views=#{views}
    </update>

注意:使用sql片段主要是为了实现sql片段的复用,如果sql语句涉及到了多表查询,就不建议使用sql片段。总的来说,sql片段适用于单表查询

foreach标签

编写接口

 //使用foreach查询
    List<blog> getBlogForeach(Map map);

编写Mapper文件

 <select id="getBlogForeach" resultType="blog" parameterType="map">
        select * from blog
        <where>
            <foreach collection="ids" item="id" open="and (" close=")" separator="or">
                id=#{id}
            </foreach>
        </where>
    </select>

实现

 public void getBlogForeach(){
        SqlSession sqlSession = sqlSessionFactory.getsqlSession();
        blogMapper mapper = sqlSession.getMapper(blogMapper.class);
        HashMap map = new HashMap();
        ArrayList ids = new ArrayList<Object>();
        ids.add(1);
        ids.add(2);
        map.put("ids",ids);
        List<blog> blogs = mapper.getBlogForeach(map);
        for (blog blog : blogs) {
            System.out.println(blog);
        }
        sqlSession.close();
    }

运行结果

PooledDataSource forcefully closed/removed all connections.
PooledDataSource forcefully closed/removed all connections.
PooledDataSource forcefully closed/removed all connections.
PooledDataSource forcefully closed/removed all connections.
Opening JDBC Connection
Created connection 418958713.
Setting autocommit to false on JDBC Connection [com.mysql.jdbc.JDBC4Connection@18f8cd79]
==>  Preparing: select * from blog WHERE ( id=? or id=? ) 
==> Parameters: 1(Integer), 2(Integer)
<==    Columns: id, title, author, create_time, views
<==        Row: 1, Mybatis, 小落, 2022-01-26 15:45:58.0, 9999
<==        Row: 2, 微服务11, 小落11, 2022-01-26 15:45:58.0, 1000
<==      Total: 2
blog(id=1, title=Mybatis, author=小落, createTime=Wed Jan 26 15:45:58 CST 2022, views=9999)
blog(id=2, title=微服务11, author=小落11, createTime=Wed Jan 26 15:45:58 CST 2022, views=1000)
Resetting autocommit to true on JDBC Connection [com.mysql.jdbc.JDBC4Connection@18f8cd79]
Closing JDBC Connection [com.mysql.jdbc.JDBC4Connection@18f8cd79]
Returned connection 418958713 to pool.

标签:connections,标签,ids,forcefully,blog,foreach,sql,id
来源: https://www.cnblogs.com/luoking/p/15856640.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有