mybatis 之动态SQL

一、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.liu.mapper.UserInfoMapper">
    <!-- property对应实体类属性 column 对应着数据库字段 -->
    <resultMap type="UserInfo" id="userMap">
        <result property="userId" column="user_id"></result>
        <result property="userName" column="user_name"></result>
        <result property="userSex" column="user_sex"></result>
    </resultMap>
    <select id="selectUser" parameterType="UserInfo" resultMap="userMap">
        select * from user_info where 1=1
        <if test="userId!=null">
            and user_id =#{userId}
        </if>
        <if test="userName!=null and userName!=''">
            and user_name like #{userName}
        </if>
        <if test="userSex!=null and userSex!=''">
            and user_sex = #{userSex}
        </if>
    </select>
    <select id="selectUser2" parameterType="UserInfo" resultMap="userMap">
        select * from user_info where 1=1
        <choose>
            <when test="userId!=null">
                and user_id =#{userId}
            </when>
            <when test="userName!=null and userName!=''">
                and user_name like #{userName}
            </when>
            <otherwise>
                and user_sex = #{userSex}
            </otherwise>
        </choose>
    </select>
    <select id="selectUser3" parameterType="UserInfo" resultMap="userMap">
        select * from user_info
        <where>
            <if test="userId!=null">
                and user_id =#{userId}
            </if>
            <if test="userName!=null and userName!=''">
                and user_name like #{userName}
            </if>
            <if test="userSex!=null and userSex!=''">
                and user_sex = #{userSex}
            </if>
        </where>
    </select>
    <select id="selectUser4" parameterType="UserInfo" resultMap="userMap">
        select * from user_info
        <trim prefix="where" prefixOverrides="and|or">
            <if test="userId!=null">
                and user_id =#{userId}
            </if>
            <if test="userName!=null and userName!=''">
                and user_name like #{userName}
            </if>
            <if test="userSex!=null and userSex!=''">
                and user_sex = #{userSex}
            </if>
        </trim>
    </select>
    
    <update id="updateUser" parameterType="UserInfo">
        update user_info 
        <set>
            <if test="userName!=null and userName!=''">
                 user_name=#{userName},
             </if>
             <if test="userSex!=null and userSex!=''">
                 user_sex=#{userSex}, 
             </if>
        </set>
        where user_id=#{userId}
    </update>
    <select id="selectUser5" parameterType="UserInfo" resultMap="userMap">
        select * from user_info where user_id in 
        <foreach collection="userIds" item="item" open="("  separator="," close=")" >
            #{item}
        </foreach>    
    </select>
</mapper>

二、Mapper接口

package com.liu.mapper;
import java.util.HashMap;
import java.util.List;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Result;
import org.apache.ibatis.annotations.Results;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;
import com.liu.po.UserInfo;
public interface UserInfoMapper {
    
    public List<UserInfo> selectUser(UserInfo user);
    public List<UserInfo> selectUser2(UserInfo user);
    
    public List<UserInfo> selectUser3(UserInfo user);
    
    public List<UserInfo> selectUser4(UserInfo user);
    
    public List<UserInfo> selectUser5(UserInfo user);
    
    public int updateUser(UserInfo user);
}

二、测试类

package com.liu;
import java.util.ArrayList;
import java.util.List;
import org.apache.ibatis.session.SqlSession;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import com.liu.mapper.UserInfoMapper;
import com.liu.po.UserInfo;
import com.liu.utils.DBFactory;
public class UserTest {
    SqlSession session = null;
    UserInfoMapper mapper = null;
    @Before
    public void testBefore() {
        session = DBFactory.getSession();
        mapper = session.getMapper(UserInfoMapper.class);
    }
    @After
    public void testAfter() {
        session.close();
    }
    
    @Test
    public void selectUser(){
        UserInfo user = new UserInfo();
        user.setUserId(4);
        user.setUserName("%他爸%");
        user.setUserSex("男");
        List<UserInfo> list = mapper.selectUser(user);
        for(UserInfo u:list){
            System.out.println(u);
        }
    }
    
    @Test
    public void selectUser2(){
        UserInfo user = new UserInfo();
        //user.setUserId(4);
        //user.setUserName("%他爸%");
        //user.setUserSex("男");
        List<UserInfo> list = mapper.selectUser2(user);
        for(UserInfo u:list){
            System.out.println(u);
        }
    }
    
    @Test
    public void selectUser3(){
        UserInfo user = new UserInfo();
        user.setUserId(4);
        user.setUserName("%他爸%");
        user.setUserSex("男");
        List<UserInfo> list = mapper.selectUser3(user);
        for(UserInfo u:list){
            System.out.println(u);
        }
    }
    
    
    @Test
    public void selectUser4(){
        UserInfo user = new UserInfo();
        //user.setUserId(4);
        //user.setUserName("%他爸%");
        user.setUserSex("男");
        List<UserInfo> list = mapper.selectUser4(user);
        for(UserInfo u:list){
            System.out.println(u);
        }
    }
    
    
    @Test
    public void selectUser5(){
        UserInfo user = new UserInfo();
        
        List<Integer> plist = new ArrayList<Integer>();
        plist.add(2);
        plist.add(4);
        
        user.setUserIds(plist);
    
        List<UserInfo> list = mapper.selectUser5(user);
        for(UserInfo u:list){
            System.out.println(u);
        }
    }
    
    @Test
    public void updateUser(){
        UserInfo user = new UserInfo();
        user.setUserId(4);
        user.setUserName("孩子她妈");
        user.setUserSex("男");
        
        int count = mapper.updateUser(user);
        session.commit();
        System.out.println(count);
    }
}



你可能感兴趣的:(mybatis,动态sql)