mybatis 之 动态SQL查询

目录:

mybatis 之 动态SQL查询

首先创建数据库:

mybatis 之 动态SQL查询

然后创建实体类:

package com.wfl.mybatis.bean6;

public class User {

 private int id;
 private String name;
 private int age;
 public int getId() {
  return id;
 }
 public void setId(int id) {
  this.id = id;
 }
 public String getName() {
  return name;
 }
 public void setName(String name) {
  this.name = name;
 }
 public int getAge() {
  return age;
 }
 public void setAge(int age) {
  this.age = age;
 }
 @Override
 public String toString() {
  return "User [id=" + id + ", name=" + name + ", age=" + age + "]";
 }
 
}

------------------

package com.wfl.mybatis.bean6;

public class ConditionUser {

 private String name;
 private int minAge;
 private int maxAge;
 public String getName() {
  return name;
 }
 public void setName(String name) {
  this.name = name;
 }
 public int getMinAge() {
  return minAge;
 }
 public void setMinAge(int minAge) {
  this.minAge = minAge;
 }
 public int getMaxAge() {
  return maxAge;
 }
 public void setMaxAge(int maxAge) {
  this.maxAge = maxAge;
 }
 @Override
 public String toString() {
  return "ConditionUser [name=" + name + ", minAge=" + minAge + ", maxAge=" + maxAge + "]";
 }
 public ConditionUser(String name, int minAge, int maxAge) {
  super();
  this.name = name;
  this.minAge = minAge;
  this.maxAge = maxAge;
 }
 
 
}

------------

重要的是配置文件:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  <mapper namespace="com.wfl.mybatis.service6.classMapper">
     <!-- 参数类型是ConditionUse类,类里面有最小值和最大值! -->
     <select id="getUser" parameterType="com.wfl.mybatis.bean6.ConditionUser"
              resultType="com.wfl.mybatis.bean6.User">
              <!-- 用了转义字符把>和<替换掉;小于符号是  &lt; 大于符号是&gt;  -->
              select * from d_user where age>=#{minAge} and age&lt;=#{maxAge}
          <!-- 模糊查询,先判断是否为空,后面是非空情况下模糊查询! -->
          <if test='name!="%null%"'>and name like#{name}</if>
      </select>
  </mapper>
 ----------------------------

去conf.xml文件注册,然后是测试类:

package com.wfl.mybatis.service6;

import java.io.IOException;
import java.io.Reader;
import java.util.List;

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 com.wfl.mybatis.bean6.ConditionUser;
import com.wfl.mybatis.bean6.User;

public class UserTest {

 public static void main(String[] args) throws IOException{
  //获取字符流
  Reader reader=Resources.getResourceAsReader("conf.xml");
  //获取绘画对象工厂类
  SqlSessionFactory sessionFactory=new SqlSessionFactoryBuilder().build(reader);
  //获取绘画对象操作数据语句
  SqlSession sqlSession=sessionFactory.openSession();
  //配置文件中的sql语句
  String statement="com.wfl.mybatis.service6.classMapper.getUser";
  //执行sql语句,得到返回结果
  List<User> list=sqlSession.selectList(statement, new ConditionUser("%a%",1,17));
  System.out.println(list);
 }
}