栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

MyBatis动态SQL

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

MyBatis动态SQL

动态sql:sql映射文件中sql语句是变化的,可以根据条件获取到不同的sql语句,主要是where部分发生变化。

动态sql的实现:使用mybatis提供的标签,,,

用法

接口方法:

public interface StudentDao {
    //接口定义方法,传一个java对象
List selectStudentIF(Student student);
}

sql映射文件:

弊端

当第一个if不成立时,第二个if成立时,会把or age = #{age}加到sql语句后面,会造成sql语法错误

 用法

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

用法:

1.先定义接口方法

/动态sql  where使用
List selectStudentwhere(Student student);

2.sql映射文件


        select * from student where id in
        
            #{stu}
        

    

collection:表示接口中的方法参数的类型,如果是数组使用array,如果是list集合使用list
separator:集合成员之间的分隔符
cloes:循环结束时的字符
open:循环开始时的字符
item:自定义的,表示数组和集合成员的变量,也就是要循环的参数

3测试类:

@Test
    public  void selectSQLForeach(){
        SqlSession sqlSession = MyBatisUtils.getSqlSession();
        StudentDao dao = sqlSession.getMapper(StudentDao.class);
        List integerList = new ArrayList<>();
        integerList.add(1001);
        integerList.add(1002);
        integerList.add(1003);
        List studentList = dao.selectForeach(integerList);
        for (Student stu : studentList){
            System.out.println("====>>Foreach"+stu);
        }
    }

1.定义方法,方法参数是list集合,集合中放的是java对象

//动态sql  foreach Studentjava对象list集合
List selectForeach2(List students);

2.sql映射文件

通过stu.id拿到java对象的id 属性值

    

3.测试类

先创建一个List集合在创建三个Student对象并给id属性赋值,添加到list集合中

 @Test
    public  void selectSQLForeach2(){
        SqlSession sqlSession = MyBatisUtils.getSqlSession();
        StudentDao dao = sqlSession.getMapper(StudentDao.class);
        List studentList = new ArrayList<>();
        Student s1 = new Student();
        s1.setId(1005);
        studentList.add(s1);
        Student s2 = new Student();
        s2.setId(2001);
        studentList.add(s2);
        Student s3 = new Student();
        s3.setId(2002);
        studentList.add(s3);
        List ss = dao.selectForeach2(studentList);
        for (Student stu : studentList){
            System.out.println("====>>Foreach222"+stu);
        }
    }
复用sql语句

先定义: sql语句

在使用:

 

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/785767.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号