MyBatis框架(动态SQL语句<if>标签)

<if>条件标签

Where 1=1

满足条件直接后面拼接

不满足条件执行1=1 表示全部查询

语法结构:

<if></if> test<条件>

案例如下:

后台数据库:

建一个student表

数据

java类编写:

创建数据表student的实体类:()

public class Student {
	private int stuId;
	private String stuName;
	private Date stuBirthdate;
	private String stuPhone;
	
	public int getStuId() {
		return stuId;
	}
	public void setStuId(int stuId) {
		this.stuId = stuId;
	}
	public String getStuName() {
		return stuName;
	}
	public void setStuName(String stuName) {
		this.stuName = stuName;
	}
	public Date getStuBirthdate() {
		return stuBirthdate;
	}
	public void setStuBirthdate(Date stuBirthdate) {
		this.stuBirthdate = stuBirthdate;
	}
	public String getStuPhone() {
		return stuPhone;
	}
	public void setStuPhone(String stuPhone) {
		this.stuPhone = stuPhone;
	}	
	public String toString() {
		return "学生信息:Student [stuId=" + stuId + ", stuName=" + stuName + ", stuBirthdate=" + stuBirthdate + ", stuPhone="
				+ stuPhone + "]";
	}
}

创建接口StudentMapper接口

实现接口方法queryByCondition()

public List<Student> queryByCondition(Student student);

创建StudentMapper接口的映射文件

<?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="cn.mybatis.domain.StudentMapper">
		<resultMap  id="studentResultMap"   type="cn.mybatis.domain.Student">
		   			<id column="stu_id"  property="stuId"  jdbcType="INTEGER"  javaType="java.lang.Integer"></id>
		   			<result column="stu_name"  property="stuName"  jdbcType="VARCHAR"  javaType="java.lang.String"></result>
		   			<result column="stu_birthdate"  property="stuBirthdate"  jdbcType="DATE"  javaType="java.util.Date"></result>
		   			<result column="stu_phone"  property="stuPhone"  jdbcType="VARCHAR"  javaType="java.lang.String"></result>
		</resultMap>
		<!-- 动态SQL语句if元素的使用 -->
		<select id="queryByCondition" parameterType="cn.mybatis.domain.Student" resultMap="studentResultMap">
		select * from student
		where 1=1
		<if test="stuName!=null and stuName!=''">
		and stu_name=#{stuName}
		</if>
		
		</select>
</mapper>

封装MyBatis工厂

public class MyBatisUtil {
     private static SqlSessionFactory  factory;
     static {//在静态代码块中,factory只会被创建一次
    	 try {
			InputStream is=Resources.getResourceAsStream("SqlMapConfig.xml");
		    factory=new SqlSessionFactoryBuilder().build(is);
    	 } catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
     }
     //创建SqlSession
     public static SqlSession createSqlSession() {
    	  return factory.openSession(false); //如果为true自动提交事务
     }
     //关闭会话
     public static void closeSqlSession(SqlSession sqlSession) {
    	 if(sqlSession!=null)
    	       sqlSession.close();
     }
}

配置数据源、指定映射文件路径

<?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>
		<!-- 环境管理,可以配置多个环境 -->
		<environments default="development">
				<environment  id="development">
						<!-- 事务管理方式 -->
						<transactionManager type="JDBC"/>
						<!-- 数据源 -->
						<dataSource type="POOLED">
									<property name="driver" value="com.mysql.jdbc.Driver"></property>
          							<property name="url"  value="jdbc:mysql://localhost:3306/chapter02"></property>
           							<property name="username" value="root"></property>
           							<property name="password"  value="qPb12345"></property>
						</dataSource>
				</environment>
		</environments>
		<!-- 指定映射文件路径 -->
		<mappers>
				<mapper resource="cn/mybatis/domain/StudentMapper.xml"></mapper>
						
		</mappers>
</configuration>

创建测试类Test:

public class Test {

			public static void main(String[] args) throws Exception{
				SqlSession session=MyBatisUtil.createSqlSession();
Student student= new Student();
				student.setStuName("Jeeny");
				try {		
					//调用接口方法来实现数据的插入
					List<Student> slist=session.getMapper(StudentMapper.class).queryByCondition(student);
					for(Student stu:slist){
					System.out.println(stu.toString());
					}
				} catch (Exception e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
					System.out.println("查询失败!");
				}finally {
					 session.close();//关闭会话
					// MyBatisUtil.closeSqlSession(session);
				}
}
}

结果展示:

 

                                                                                                      每天进步多一点--------飞奔的驴友

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值