欢迎光临
我们一直在努力

动态SQL(一) if标签

MyBatis框架的动态SQL技术是一种根据特定条件动态拼装SQL语句的功能,它存在的意义是为了解决拼接SQL语句字符串时的痛点问题

动态SQL之if标签

if:根据标签中test属性所对应的表达式决定标签中的内容是否需要拼接到SQL中

DynamicSQLMapper

在这里插入图片描述

DynamicSQLMapper.xml

在这里插入图片描述

Emp

package com.baidu.mybatis.pojo;

public class Emp {
private Integer eid;
private String empName;
private Integer age;
private String sex;
private String email;

private Dept dept;

public Emp() {
}

public Emp(Integer eid, String empName, Integer age, String sex, String email) {
this.eid = eid;
this.empName = empName;
this.age = age;
this.sex = sex;
this.email = email;

}

/**
* 获取
* @return eid
*/

public Integer getEid() {
return eid;
}

/**
* 设置
* @param eid
*/

public void setEid(Integer eid) {
this.eid = eid;
}

/**
* 获取
* @return empName
*/

public String getEmpName() {
return empName;
}

/**
* 设置
* @param empName
*/

public void setEmpName(String empName) {
this.empName = empName;
}

/**
* 获取
* @return age
*/

public Integer getAge() {
return age;
}

/**
* 设置
* @param age
*/

public void setAge(Integer age) {
this.age = age;
}

/**
* 获取
* @return sex
*/

public String getSex() {
return sex;
}

/**
* 设置
* @param sex
*/

public void setSex(String sex) {
this.sex = sex;
}

/**
* 获取
* @return email
*/

public String getEmail() {
return email;
}

/**
* 设置
* @param email
*/

public void setEmail(String email) {
this.email = email;
}

/**
* 获取
* @return dept
*/

public Dept getDept() {
return dept;
}

/**
* 设置
* @param dept
*/

public void setDept(Dept dept) {
this.dept = dept;
}

public String toString() {
return "Emp{eid = " + eid + ", empName = " + empName + ", age = " + age + ", sex = " + sex + ", email = " + email + ", dept = " + dept + "}";
}
}

SqlSessionUtils

package com.baidu.mybatis.utils;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

import java.io.IOException;
import java.io.InputStream;

public class SqlSessionUtils {

public static SqlSession getSqlSession() {

SqlSession sqlSession = null;

try {
InputStream resourceAsStream = Resources.getResourceAsStream("mybatis-config.xml");
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);

sqlSession = sqlSessionFactory.openSession(true);

} catch (IOException e) {
throw new RuntimeException(e);
}

return sqlSession;

}

}

mybatis-config.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>

<properties resource="jdbc.properties"/>

<! 设置MyBatis的全局配置 >

<settings>
<! 将_自动映射为驼峰,比如emp_name映射为empName>
<setting name="mapUnderscoreToCamelCase" value="true"/>

<! 开启延迟加载>
<! <setting name="lazyLoadingEnabled" value="true"/>>

</settings>

<typeAliases>
<package name="com.baidu.mybatis.pojo"/>
</typeAliases>

<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="${jdbc.driver}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
</dataSource>
</environment>
</environments>
<mappers>
<package name="com.baidu.mybatis.mapper"/>
</mappers>
</configuration>

测试

DynamicSQLMapperTest

package com.baidu.mybatis;

import com.baidu.mybatis.mapper.DynamicSQLMapper;
import com.baidu.mybatis.pojo.Emp;
import com.baidu.mybatis.utils.SqlSessionUtils;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;

import java.util.List;

public class DynamicSQLMapperTest {


public void testGetEmpByCondition() {
SqlSession sqlSession = SqlSessionUtils.getSqlSession();
DynamicSQLMapper mapper = sqlSession.getMapper(DynamicSQLMapper.class);
List<Emp> empByCondition = mapper.getEmpByCondition(new Emp(null, "张三", 28, "男", "zhangsan@example.com"));
System.out.println("empByCondition = " + empByCondition);

}
}

赞(0)
未经允许不得转载:171主机测评 » 动态SQL(一) if标签
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址