Mybatis动态sql

一、动态sql的概念

MyBatis中动态SQL是一种可以根据不同条件生成不同SQL语句的技术,可以让我们根据具体的业务逻辑来拼接不同的SQL语句。

二、动态sql的作用

1.可以根据不同的条件生成不同的SQL语句,条件灵活

2.通过使用参数化查询或者绑定变量的方式来构建动态SQL,防止sql注入

3.动态SQL可以根据运行时的条件动态调整查询语句,优化查询

4.可以利用动态SQL来动态构建表名和字段名,实现灵活性和扩展性。

三、动态sql语句的元素及作用

1.if

用于在sql语句中添加条件语句 

2.choose(相当于switch)

根据不同的条件选择不同的查询语句

3.where

用于添加条件语句

4.foreach

用于对集合或数组进行循环操作

四、代码实例

    

        将where条件抽取出来,使用include引用

 
        
            AND id=#{id}
        
        
            AND studentName LIKE '%${studentName}%'
        
        
            AND gender=#{gender}
        
    
    

        代码测试

public class TestDemo {
    SqlSessionFactory ssf = null;
    @Before
    public void creatFactory(){
        InputStream input = null;
        try {
            input = Resources.getResourceAsStream("SqlMapConfig.xml");
        } catch (IOException e) {
            e.printStackTrace();
        }
        ssf = new SqlSessionFactoryBuilder().build(input);
    }
@Test
    public void testMapper4(){
        SqlSession sqlSession = ssf.openSession();
        StudentMapper mapper = sqlSession.getMapper(StudentMapper.class);
        Student student1 = new Student();
        //student1.setId(1);
        student1.setStudentName("123");
        //student1.setGender("男");
        List students = mapper.findStudentByStudent(student1);
        for (Student student : students) {
            System.out.println(student.getId()+","+student.getStudentName()+","+student.getGender());
        }
    }

Mybatis动态sql_第1张图片

你可能感兴趣的:(mybatis,sql,java,大数据)