zoukankan      html  css  js  c++  java
  • Mybatis入门之动态sql

    Mybatis入门之动态sql

        通过mybatis提供的各种标签方法实现动态拼接sql。

      1、if、where、sql、include标签(条件、sql片段)

    <sql id="selector">
            select * from account
    </sql>
    
    <!--根据性别和名称查询用户 where标签可以去掉第一个前and -->
        <select id="selectUserBySexAndUsername" parameterType="deep.pojo.Account"
            resultType="deep.pojo.Account">
            <include refid="selector"/>
            <where>
                <if test="sex != null and sex != '' ">
                    sex = #{sex}
                </if>
    <if test="username != null and username !=''"> and username = #{username} </if> </where> </select>

    2、foreach

    生成的sql语句是:    select * from acccount where id in (1,2,3,27);

    <!-- 多个ID -->
        <select id="selectUserByIds" parameterType="deep.pojo.QueryVo" resultType="deep.pojo.Account">
            <include refid="selector"/>
            <where>
                id in 
                <foreach collection="idsList" item="id" separator="," open="(" close=")">
                    #{id}
                </foreach>    
            </where>
        </select>
    package deep.pojo;
    
    import java.io.Serializable;
    import java.util.List;
    
    public class QueryVo implements Serializable{
    
        private static final long serialVersionUID = 1L;
        
        private Account account;
        
        
        public List<Integer> getIdsList() {
            return idsList;
        }
    
        public void setIdsList(List<Integer> idsList) {
            this.idsList = idsList;
        }
    
        public Integer[] getIds() {
            return ids;
        }
    
        public void setIds(Integer[] ids) {
            this.ids = ids;
        }
    
        List<Integer> idsList;
        
        Integer[] ids;
        
        
        
    
        public Account getAccount() {
            return account;
        }
    
        public void setAccount(Account account) {
            this.account = account;
        }
    
    }
    @Test
        public void testFindUserIDs() throws Exception {
            //加载核心配置文件
            InputStream in = Resources.getResourceAsStream("SqlMapConfig.xml");
            
            SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(in);
            SqlSession sqlSession = sqlSessionFactory.openSession();
            
            
            UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
            
            List<Integer> ids = new ArrayList<Integer>();
            ids.add(1);
            ids.add(2);
            ids.add(3);
            ids.add(27);
            QueryVo vo = new QueryVo();
            vo.setIdsList(ids);
            
            
            List<Account> accountList = userMapper.selectUserByIds(vo);
            
            for (Account a : accountList) {
                System.out.println(a);
            }
        }

  • 相关阅读:
    js 中for forEach map some every的区别
    2019.3.27面试
    js中的继承
    关于iPhone手机上的浏览器、微信内置浏览器不识别yyyy-mm-dd格式的时间显示为NaN问题
    一个有关ajax去获取天气预报然后用echarts展现出来的小demo
    js中var和let的快速区别
    配置服务器-------------适合小白和从未接触过服务器的人阅读
    .net core 响应的json数据驼峰显示问题。
    asp .net core中swagger的简单使用
    关于修改.net core webapi中null默认返回的状态码。
  • 原文地址:https://www.cnblogs.com/deepSleeping/p/10455193.html
Copyright © 2011-2022 走看看