myBatis( sql片段,foreache)
阿新 • • 發佈:2022-04-18
myBatis(sql片段)
//將片段提取出來,命名後,在引用的地方用<include refid=""></include> <sql id="if"> <if test="title != null"> and title =#{title} </if> <if test="author != null"> and author=#{author} </if> </sql> <!--某列的if模糊查詢,全部if都會判斷--> <select id="QueryBlog" resultType="pojo.Blog" parameterType="map"> select * from myBatis.blog <where> <include refid="if"></include> </where> </select>
注意
- 最好基於單表的操作
- 不要存在where標籤,where標籤會修改片段符號
foreache
blogMapper.xml
<select id="QueryBogForeach" resultType="pojo.Blog" parameterType="map"> /* select * from myBatis.blog where id in(1 ,2 ,3)*/ select * from myBatis.blog <where> <foreach collection="ids" item="IID" open="id in (" close=")" separator=","> /*這裡內容是每一個IID,IID是ids集合的每一項元素,需要往ids集合填充元素*/ #{IID} </foreach> </where> </select>
測試
@org.junit.Test public void QueryBogForeach() { SqlSession sqlSession = myBatisUtils.getSqlSession(); BlogMapper mapper = sqlSession.getMapper(BlogMapper.class); Map<String, Object> map = new HashMap<>(); //建立一個集合填充ids的集合 ArrayList<Integer> IDs = new ArrayList<>(); map.put("ids", IDs); IDs.add(1); List<Blog> blogs = mapper.QueryBogForeach(map); for (Blog blogg : blogs) { System.out.println(blogg); } sqlSession.close(); }