• 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);
            }
        }

  • 相关阅读:
    POJ 3904 Sky Code (容斥原理)
    HDU 4334 Trouble (暴力)
    UVA 10325 The Lottery( 容斥原理)
    HDU 2841 Visible Trees 数论+容斥原理
    UVA11806-Cheerleaders(容斥原理+二进制)
    HDU1695 GCD (欧拉函数+容斥原理)
    HDU 5651 xiaoxin juju needs help (组合数)
    最大子矩阵和 51Nod 1051 模板题
    最大子段和 模板题 51Nod 1049
    51Nod 1006 最长公共子序列Lcs问题 模板题
  • 原文地址:https://www.cnblogs.com/deepSleeping/p/10455193.html
Copyright © 2020-2023  润新知