动态sql (sql-if,sql-foreach)
生活随笔
收集整理的這篇文章主要介紹了
动态sql (sql-if,sql-foreach)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
目錄
- 1. UserMapper接口
- 1. sql-if
- 2. sql-foreach
- 3. 多條件查詢和根據多個id查詢測試
jdbc規范下的動態查詢
1. UserMapper接口
user表字段userId userName userPassword 查詢涉及到- where不確定條件查詢 sql-if- in 多條件查詢- 不提供實體類- 關于mybatis環境搭建
- 關于代理開發接口實現
1. sql-if
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="cn.bitqian.dao.UserMapper"><!--sql 片段的抽取 statement標簽內使用include標簽進行引用--><sql id="selectUserPart">select * from users1</sql><!-- 根據id or name or pwd 查詢 --><select id="queryUserByCondition" parameterType="user" resultType="user"><include refid="selectUserPart"></include><where><if test="userId != 0 and userId != null">and userid = #{userId}</if><if test="userName != null">and username = #{userName}</if><if test="userPassword != null">and userpassword = #{userPassword}</if></where></select> </mapper>2. sql-foreach
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="cn.bitqian.dao.UserMapper"><select id="queryUserByIds" parameterType="list" resultType="user">select * from users1 <!-- where userid in (1, 2, 3) --><where><!--collection=arrayopen, end 拼接sql寫死的片段separator 為分隔符item 為list中的每個元素--><foreach collection="list" open="userid in (" close=")" separator="," item="userId">#{userId}</foreach></where></select></mapper>3. 多條件查詢和根據多個id查詢測試
import cn.bitqian.dao.UserMapper; import cn.bitqian.entity.User; import org.apache.ibatis.io.Resources; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder; import org.junit.Test;import java.io.IOException; import java.io.InputStream; import java.util.ArrayList; import java.util.List;/*** 動態sql測試* @author echo lovely* @date 2020/9/11 15:50*/ public class DynamicDemoTest {public SqlSession getSqlSession() {try {InputStream resourceAsStream = Resources.getResourceAsStream("mybatis-config.xml");SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);// 默認提交事務return sqlSessionFactory.openSession(true);} catch (IOException e) {e.printStackTrace();}return null;}@Testpublic void test1() {SqlSession sqlSession = getSqlSession();if (sqlSession != null) {UserMapper userMapper = sqlSession.getMapper(UserMapper.class);User user = new User();// user.setUserId(1);user.setUserName("rose");user.setUserPassword("love jack");List<User> userList = userMapper.queryUserByCondition(user);System.out.println(userList);sqlSession.close();}}@Testpublic void test2() {SqlSession sqlSession = getSqlSession();if (sqlSession != null) {UserMapper userMapper = sqlSession.getMapper(UserMapper.class);ArrayList<Integer> list = new ArrayList<>();list.add(1);list.add(3);// 查詢user id 為1或者為2的數據記錄System.out.println(userMapper.queryUserByIds(list));sqlSession.close();}}}總結
以上是生活随笔為你收集整理的动态sql (sql-if,sql-foreach)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: markdown 语法_Markdown
- 下一篇: 复现autotune算法时遇到的若干问题