做業

 

 

 

直接上代碼:java

DemoMapper接口:sql

package com.mapper;

import com.pojo.Goods;

import java.util.List;
import java.util.Map;

public interface DemoMapper {

    /**
     * 經過 模糊商品名稱,供應商ID,是否付款 來查詢goods表的全部信息和provider表的名稱
     * @param map
     * @return
     */

    List<Goods> getGoodsListBy(Map<String,String> map);
}

 

DemoMapper.xml:apache

<?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">
<!--這裏寫接口的路徑是由於光靠ID,是沒法找到SQL語句的,必須經過namespace寫接口路徑才行-->
<mapper namespace="com.mapper.DemoMapper">

    <resultMap id="userList" type="Goods">
        <result column="goods_code" property="goods_code"></result>
        <result column="goods_name" property="goods_name"></result>
        <result column="money" property="money"></result>
        <result column="pay_state" property="pay_state"></result>
        <result column="start_time" property="start_time"></result>
        <association property="provider" javaType="Provider">
            <result column="provider_id" property="provider_id"></result>
            <result column="provider_name" property="provider_name"></result>
        </association>
    </resultMap>

    <select id="getGoodsListBy" resultMap="userList">

SELECT g.goods_code,g.goods_name,p.provider_id,p.provider_name ,
g.money,g.pay_state,g.start_time FROM goods g , provider p
<trim prefix="where" prefixOverrides="AND |OR" suffix="AND g.provider_id = p.provider_id">
    <if test="userName !=null and userName!=''">
        g.goods_name LIKE concat('%',#{userName},'%')
    </if>
    <if test="user_pay_state!=null and user_pay_state !=''">
        AND g.pay_state =#{user_pay_state}
    </if>
  <if test="user_provider_id!=null and user_provider_id !=''">
      AND p.provider_id = #{user_provider_id}
  </if>

</trim>

    </select>
</mapper>
DemoMapper.xml

 

測試類:session

import com.mapper.DemoMapper;
import com.pojo.Goods;
import util.MyBatisUtil;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class Junit {

    @Test
    public void test01(){


        SqlSession sqlSession = MyBatisUtil.createSqlSession();

        DemoMapper mapper = sqlSession.getMapper(DemoMapper.class);

        Map<String,String> map = new HashMap<String, String>();
        map.put("userName","");
        map.put("user_pay_state","");
        map.put("user_provider_id","");
        List<Goods> list = mapper.getGoodsListBy(map);
        for (Goods goods : list) {

            System.out.println(goods.getGoods_code()+" "+goods.getGoods_name()+" "+goods.getProvider().getProvider_id()+" "+goods.getProvider().getProvider_name()+" "+goods.getMoney()+" "+goods.getPay_state()+" "+goods.getStart_time());
        }
        MyBatisUtil.closeSqlSession(sqlSession);
    }
}
test01

這裏的測試我就不一一說了,我已經驗證過,4中狀況下均可以輸入成功:mybatis

一、所有都寫   二、所有都沒寫(查詢全部) 三、任一寫一個  四、任一寫兩個app

相關文章
相關標籤/搜索