mybatis记录三 动态sql

一、动态sql
动态sql: sql的内容是变化的,可以根据条件获取到不同的sql语句。
主要是where都分发生变化-
动态sql的实现,使用的是mybatis提供的标签,<if> ,<where>,<foreach>
1)<if>是判断条件的,
语法<if test-"判断java对象的属性值">
部分sql语句
</if>

<select id="selectStudentIf" resultType="com.edu.domain.Student">
    select id,name,age from student
    where
    <if test="name !=null and name!= ''">
        name = #{name}
    </if>
    <if test="age >0">
        and age > #{age}
    </if>
</select>


2)<where>用来包含多个<if>的,当多个if有一个成立的,<where>会自动增加一个where关键字,
│并去掉if中多余的and , or等。

<select id="selectStudentWhere" resultType="com.edu.domain.Student">
    select id,name,age from student
    <where>
        <if test="name !=null and name!= ''">
            name = #{name}
        </if>
        <if test="age >0">
            and age > #{age}
        </if>
    </where>
</select>

控制台输出:select id,name,age from student WHERE age > ?    

 

3) <foreach>循环java中的数组,list集合的。主要用在sql的in语句中.
学生id是1001,10o2,1003的三个学生
select * from student where id in (1001,1002,1003)

public List<student> selectFor (List<Integer> idlist)
List<Integer> list - new ...
list.add (1001) ;
list.add ( 1002) ;

list.add (1003);
dao.selectFor ( list)

 

<foreach collection="" item="" open="" close="" separator=""></foreach>
collection:表示接口中的方法参数的类型,如果是数组使用array,如果是list集合使用listitem:自定义的,表示数组和集合成员的变量
open:循坏开始是的字符
ciose:循环结束时的字符
separator:集合成员之间的分隔符

---xml文件----

<select id="selectStudentForEachStu" resultType="com.edu.domain.Student">
    select * from student where id in
    <foreach collection="list" item="stu" open="(" close=")" separator=",">
        #{stu.id}
    </foreach>
</select>

 

----测试方法---

List<Student> stuList = new ArrayList<Student>();
Student student = new Student();
student.setId(1);
stuList.add(student);
student = new Student();
student.setId(3);
stuList.add(student);

 

二、mapper

<mappers>
    <!--第一种方式:指定多个mapper文件
    <mapper resource="com/edu/dao/studentDao.xml" />
    <mapper resource="com/edu/dao/orderDao.xml"/>-->
    <!--第二种方式:使用包名
    name: xml文件( mapper文件)所在的包名,这个包中所有xml文件一次都能加载给mybatis
使用package的要求:
1. mapper文件名称需要和接口名称一样,区分大小写的一样
2. mapper文件和dao接口需要在同一目录
    <package name="com.edu.dao" />
    <package name="com.edu.domain" />-->

 

三、分页

PageHelper

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值