• Mybatis(二)


    一、主配置文件

    基本作用就是配置JDBC连接的有关信息,比如URL、用户名、密码等等

    二、映射文件

    基本作用就是编写SQL语句,同时给每个SQL语句定义一个唯一标识(ID),在程序中通过此ID来调用这条SQL语句。

    整个唯一标识sql的id为namespace+id

    三、sql的参数传递

    1.简单参数 

    1 <delete id="delete" parameterType="int">
    2     delete from t_person where id=#{id} <!—无所谓写什么都可以 à
    3 </delete>

    2.多个参数:使用Map包装

    1 <select id="selectLikeNameAndAgeBetween" parameterType="map" resultType="Person">
    2     <include refid="selectBasic"/> where name like #{name} and age between #{age1} and #{age2}
    3   </select>
    1   SqlSession session = factory.openSession();
    2     Map map=new HashMap();
    3     map.put("name", "%张%");
    4     map.put("age1", 0);
    5     map.put("age2", 100);
    6     List persons=session.selectList(Person.class.getName()+".selectLikeNameAndAgeBetween",map);
    7    
    8     System.out.println(((Person)(persons.get(0))).getName());
    9     session.close();

    四、动态sql

    1 <select id="selectIf" parameterType="map" resultType="Person">
    2     select * from t_person
    3     <if test="name !=null">
    4       where name like #{name}
    5     </if>
    6     <if test="age !=0">
    7       and age=#{age}
    8     </if>
    9   </select>

    注:如果name==null,则sql拼写错误。。。

     1   <select id="selectWhere" parameterType="map" resultType="Person">
     2     select * from t_person
     3     <where>
     4         <if test="name !=null">
     5            name like #{name}
     6         </if>
     7         <if test="age !=0">
     8           and age=#{age}
     9         </if>
    10     </where>
    11   </select>

    注意where的闭合!!!

    choose类似于switch

     1 <select id="selectChoose" parameterType="map" resultType="Person">
     2     select * from t_person
     3     <choose>
     4       <when test="name!=null">
     5          where name like #{name}
     6       </when>
     7       <otherwise>
     8          where name like '%%'
     9       </otherwise>
    10     </choose>
    11      <if test="age !=0">
    12       and age=#{age}
    13     </if>
    14   </select>

    foreach相当于in

    1 <select id="selectFor" parameterType="list" resultType="Person">
    2     select * from t_person where id in
    3     <foreach collection="list" item="p" open="(" close=")" separator=",">
    4     #{p}
    5     </foreach>
    6   </select>
     1   SqlSession session = factory.openSession();
     2     List l=new ArrayList();
     3     l.add(1);
     4     l.add(2);
     5     l.add(3);
     6     l.add(4);
     7     List persons=session.selectList(Person.class.getName()+".selectFor",l);
     8    
     9     System.out.println(((Person)(persons.get(1))).getName());
    10     session.close();
  • 相关阅读:
    1053: 正弦函数
    1052: 数列求和4
    1051: 平方根的和
    1050: 阶乘的累加和
    POJ 1321 棋盘问题(搜索的方式)
    HDU 1176 免费馅饼
    BZOJ 2423 (求LCS的长度和种类数)
    HDU 2612 (2次BFS,有点小细节)
    POJ 1088 滑雪(模板题 DFS+记忆化)
    HRBUST 1186 青蛙过河 (思路错了)
  • 原文地址:https://www.cnblogs.com/zhongzhongdebokeyuan/p/5819898.html
Copyright © 2020-2023  润新知