mybatis之动态sql语句<where>和<if>的使用

1.配置mybatis.xml

注意把连接数据库的信息修改成自己的
创建成db.properties

jdbc.url=jdbc:mysql:///hzh
jdbc.driver=com.mysql.jdbc.Driver
jdbc.userName=root
jdbc.password=root
<?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="db.properties"></properties>
    <typeAliases>
        <!--        <typeAlias type="com.yh.pojo.User" alias="user"></typeAlias>-->
        <!--        <package name="com.yh.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>

        <!--<mapper resource="com/yh/mapper/UserMapper.xml"></mapper>-->
        <package name="com.yh.mapper"/>
    </mappers>
</configuration>
2.创建User类
package com.yh.pojo;
import java.util.Date;

public class User {
    private Integer id;
    private String userName;
    private Date birthday;
    private String address;
    private Character sex;
    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", userName='" + userName + '\'' +
                ", birthday=" + birthday +
                ", address='" + address + '\'' +
                ", sex=" + sex +
                '}';
    }
    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    public String getUserName() {
        return userName;
    }
    public void setUserName(String userName) {
        this.userName = userName;
    }
    public Date getBirthday() {
        return birthday;
    }
    public void setBirthday(Date birthday) {
        this.birthday = birthday;
    }
    public String getAddress() {
        return address;
    }
    public void setAddress(String address) {
        this.address = address;
    }
    public Character getSex() {
        return sex;
    }

    public void setSex(Character sex) {
        this.sex = sex;
    }
}
3.创建Mapper接口并配置xml文件 (核心)
<?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.yh.mapper.UserMapper">
    <select id="findUser" resultType="com.yh.pojo.User" parameterType="com.yh.pojo.User">
    select * from user
    <where>
        <if test="userName!=null and userName!=''">
            and username like #{userName}
        </if>
        <if test="sex!=null and sex!=''">
            and sex=#{sex}
        </if>
    </where>
    </select>
</mapper>
4.创建Test测试类运行测试
package com.yh.test;
import com.yh.mapper.UserMapper;
import com.yh.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.After;
import org.junit.Before;
import org.junit.Test;

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

public class UserMapperTest {
    /**
     * 初始化页面
     */
    private Reader reader;
    private UserMapper mapper;
    @Before
    public void init() throws IOException {
        reader = Resources.getResourceAsReader("mybatis.xml");
        SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
        SqlSessionFactory build = builder.build(reader);
        SqlSession sqlSession = build.openSession(true);
        mapper = sqlSession.getMapper(UserMapper.class);
    }
    @After
    public void destroy(){
        try {
            reader.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    @Test
    public void findUser(){
        User user = new User();
        user.setSex('男');
        user.setUserName("李%");
        List<User> user1 = mapper.findUser(user);
        System.out.println(user1);
    }
}

总结:标签<where>和<if>的使用非常简单,一眼即懂不多加解释。把重要核心文件多看两遍,自己尝试修改即可
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值