SSM学习笔记2---Mybatis动态SQL(xml文件方式)

#动态SQL 拼接
可以根据具体的参数条件,来对SQL语句进行动态拼接

#xml方式实现
数据库添加两个字段age 和phone和对应的数据,age为int 类型,phone为varchar类型
在这里插入图片描述
定义一个接口UserDao3

package com.mu.dao;

import com.mu.pojo.User;
import java.util.Map;
import java.util.List;

public interface UserDao3 {
   

    //使用Map方式可以传递多个参数
    //if标签
    List<User> iftest(Map map);

    //where标签
    List<User> ifwhere(Map map);

    //choose标签
    List<User> ifchoose(Map map);

    //set标签
    void ifset(Map map);

    //foreach标签
    void ifforeach1(List list);
    List<User> ifforeach2(Map map);

    //include标签(SQL片段引用)
    List<User> ifinclude();
}

编写接口的UserMapper3文件

<?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.mu.dao.UserDao3">
    <!--这里添加各示例SQL-->
</mapper>

全局配置文件mybatis-config中加载UserMapper3.xml

在这里插入图片描述

新增一个测试类

package com.mu;

import com.mu.dao.UserDao3;
import com.mu.pojo.User;
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 org.junit.Before;
import org.junit.Test;

import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;


public class MyTest2 {
   

    private SqlSessionFactory sqlSessionFactory;

    @Before
    public void init() throws IOException {
   
        InputStream resourceAsStream = Resources.getResourceAsStream("mybatis-config.xml");
        sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);

	//下一步在这里添加各示例测试
	
}

##if
if 标签通常用于 WHERE 语句、UPDATE 语句、INSERT 语句中,通过判断参数值来决定是否使用某个查询条件、判断是否更新某一个字段、判断是否插入某个字段的值。
当满足test条件时,才会将标签内的SQL语句拼接上去

mapper3文件中加入

<!-- if示例
    需求:根据年龄和电话号码查询id大于3的用户,如果年龄不为空按年龄查询,电话号码不为空按电话号码查询,如果两者都不为空则组合查询
    -->
    <select id="iftest" resultType="com.mu.pojo.User" parameterType="map">
        SELECT * FROM user WHERE id>3
        <if test="age!= null ">
            AND age = #{
   age}
        </if>
        <if test="phone!= null and phone !='' ">
            AND phone = #{
   phone}
        </if>
    </select>

添加测试


    //在这里添加各示例测试
    @Test
    public void Test() {
   
        SqlSession sqlSession = sqlSessionFactory.openSession();
        UserDao3 mapper = sqlSession.getMapper
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值