パラメータのマッピング

11388 ワード

1、パラメータa、パラメータが1つしかない場合、xmlマッピングファイルでパラメータ変更データを取得する際にbは要求されず、複数のパラメータがある場合、デフォルトではこれらのパラメータをMapセットに配置し、keyはarg 0...argnまたはparam 1...paramnである.パラメータ値を取得するときにxmlマッピングファイルのkeyに意味があるように、@Param注記でkeyの値cを指定し、パラメータがカスタムリファレンスタイプの場合は#{メンバー変数名}d、{}と#{}を直接使用して区別する:{}データとsqlを直接接続し、SQL注入を防止できない.それで?方式はプレースホルダとしてSQL注入を防止
データの追加、変更または削除時のメソッドの戻り値は、ブール、int、long、およびそのパッケージクラス、Booleanまたはそのパッケージクラスであれば修正に成功したかどうかを示し、intまたはlongタイプ、およびそのパッケージクラスであれば影響を受ける行数を返します.
1、2つのパラメータが実質的にmapで実現され、mybatis自動変換(以下の2を回転)
package com.lq.userinfo;

import org.apache.ibatis.annotations.Param;

import com.lq.vo.UserInfo;

public interface IUserInfoDao{

    UserInfo selectById(@Param("id")String id,@Param("name")String name);
}
package com.lq.userinfo;

import com.lq.vo.UserInfo;

public interface IUserInfoService {

    UserInfo selectById(String id,String name);
}


<mapper namespace="com.lq.userinfo.IUserInfoDao">
    <select id="selectById" resultType="com.lq.vo.UserInfo">
        select * from employee where id=#{id} and user_name=#{name}
    select>
mapper>
package com.lq.userinfo.imp;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.lq.userinfo.IUserInfoDao;
import com.lq.userinfo.IUserInfoService;
import com.lq.vo.UserInfo;

@Service
public class UserInfoService implements IUserInfoService{

    @Autowired
    IUserInfoDao userInfoDao;

    @Override
    public UserInfo selectById(String id,String name) {
        return userInfoDao.selectById(id,name);
    }
}

2、
package com.lq.test;

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

import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.lq.userinfo.IUserInfoDao;
import com.lq.vo.UserInfo;

public class Test {

    public static void main(String[] args){

        ClassPathXmlApplicationContext applicationContext = new ClassPathXmlApplicationContext("application.xml");
        IUserInfoDao userInfoDao = applicationContext.getBean(IUserInfoDao.class);
        Map map = new HashMap<>();
        map.put("param1", "9c702712-cc24-4573-accf-c3c9bcd9daf7");
        map.put("param2", " ");
        UserInfo userInfo= userInfoDao.selectById(map);
        System.out.println(userInfo);
        applicationContext.close();
    }
}
package com.lq.userinfo;

import java.util.Map;


import com.lq.vo.UserInfo;

public interface IUserInfoDao{

    UserInfo selectById(Map map);
}


<mapper namespace="com.lq.userinfo.IUserInfoDao">
    <select id="selectById" resultType="com.lq.vo.UserInfo">
        select * from employee where id=#{param1} and user_name=#{param2}
    select>
mapper>

3、パラメータがカスタムタイプ
package com.lq.userinfo;

import com.lq.vo.UserInfo;

public interface IUserInfoDao{

    UserInfo selectById(UserInfo userInfo);
}


<mapper namespace="com.lq.userinfo.IUserInfoDao">
    <select id="selectById" resultType="com.lq.vo.UserInfo">
        select * from employee where id=#{id} and user_name=#{userName}
    select>
mapper>
package com.lq.test;

import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.lq.userinfo.IUserInfoDao;
import com.lq.vo.UserInfo;

public class Test {

    public static void main(String[] args){

        ClassPathXmlApplicationContext applicationContext = new ClassPathXmlApplicationContext("application.xml");
        IUserInfoDao userInfoDao = applicationContext.getBean(IUserInfoDao.class);
        UserInfo userInfo = new UserInfo();
        userInfo.setId("9c702712-cc24-4573-accf-c3c9bcd9daf7");
        userInfo.setUserName(" ");
        userInfo = userInfoDao.selectById(userInfo);
        System.out.println(userInfo);
        applicationContext.close();
    }
}