首页 > 代码库 > Mybatis(二)
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_person3 <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 in3 <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();
Mybatis(二)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。