Mybatis之传多个参数方法总结

开心一笑

督学到某学校视察,看见一间教室里有个地球仪,便随口问学童甲:“你说说看,这个地球仪为什么会倾斜235°?”
学童甲惶恐地答道:“不是我弄歪的!”
督学摇摇头,转而改问学童乙。学童乙双手一摊,说道:“您也看见了,我是刚刚才进来的!”督学只好疑惑地问老师这是怎么回事。老师满怀歉意地说:“确实不能怪他们,这地球仪买回来时就已经是这样的了。”
校长见督学的脸色越来越难看,忙上前解释:“说来惭愧,因为学校经费实在有限,所以我们买的是地摊货。”

提出问题

Mybatis传多个参数

解决问题

例一:把参数放到map中,看下面代码,有点多

Service层的代码:

public List<PcsTask> findByPmProjectIdAndLeaderId(String projectId) {
        String userId = SessionUtils.getCurrentUserId();
        //查询参数
        Map<String, Object> filter = new HashMap<>();
        filter.put("leaderId", userId);
        filter.put("pmProjectId", projectId);
        return pcsTaskDAO.findByPmProjectIdAndLeaderId(filter);
    }

DAO中的接口:

public List<PcsTask> findByPmProjectIdAndLeaderId(Map<String,Object> filter);

Mapper文件

<select id="findByPmProjectIdAndLeaderId" resultType="com.evada.de.projcommand.model.PcsTask" parameterType="java.util.Map">
        select * from pm_workitem pw
        where pw.pm_project_id = #{pmProjectId}
        and pw.leader_id = #{leaderId}
        and pw.workitem_status in ('1','2')
        and pw.status > '0'
        order by pw.plan_end_date asc
    </select>

例二:看下代码#{0},#{1}好像不是特别好

DAO层的函数方法

Public User selectUser(String name,String area);

Mapper文件

<select id="selectUser" resultMap="BaseResultMap">
    select  *  from user_user_t   where user_name = #{0} and user_area=#{1}
</select>

其中,#{0}代表接收的是dao层中的第一个参数,#{1}代表dao层中第二参数,更多参数一致往后加即可

例三:最推荐的方法,DAO和Mapper文件的代码量和参数都是最优的.

DAO层的函数方法

public ... findByStatus(@Param("mainTaskId") String mainTaskId, @Param("claimStatus") String claimStatus,@Param("subTaskStatus") String subTaskStatus);

Mapper文件

<select id="findByStatus" resultMap="PcsSubTaskDTOResultMap">
        select pt.*,pw.code as task_code,pw.name as task_name
        from pm_workitem pw,pm_task pt
        where pt.status = '1'
        and pt.pm_workitem_id = pw.id
        and pt.pm_milestone_id = #{mainTaskId}
        <if test="claimStatus != null and claimStatus != ''">
            and pt.claim_status = #{claimStatus}
        </if>
        <if test="subTaskStatus != null and subTaskStatus != ''">
            and pt.task_status = #{subTaskStatus}
        </if>
        order by pt.code  asc
    </select>

读书感悟

来自《超级读心术》
千万不要去吃免费的午餐,因为免费的午餐往往需要付出比原价更高的代价。在接受别人对自己的好意的时候,不妨先看清楚对方的动机。

对于初次见面的朋友,可以观察他们的手部动作。手部动作自然大方的人,通常是态度诚恳、行为正直的人。这类人的动手幅度越大,代表其包容性越强。反之,对方的手部如果动作幅度很小,甚至有些拘谨,就代表对方的心思缜密。这种类型的人通常都不是直率,他们的内心世界要比大多数人复杂一些,包容力也相对差一点。换句话说,这种类型的人是有可能会耍点小计谋的人。

手部自然交叉在桌上的人,通常是自信而直率的。在交谈过程中,用手指敲击桌面的人,往往拥有强烈的自信。这类人通常比较强势,喜欢说服对方,且不喜欢被说服。将双手紧张地摩擦或者双手紧握的人,则通常缺乏自信。这类人在处理事情时通常缺乏行动力,处事犹豫不决。
此外,将手藏在桌面下、裤袋里或者视线看不到的地方的人,往往比较自卑,他很紧张,有压力感。当然,这种类型的人通常也会有些小心思不想让别人察觉,是属于比较复杂和不够坦诚的人。

你可能感兴趣的:(mybatis)