Mybatis使用のパラメータ転送
Mybatis使用のパラメータ転送
一:概要
主にMybatisが伝達パラメータをどのようにマッピングしたかを記録しています.4つの種類に分けて記録します.1、java基本タイプの伝達、2、Javaオブジェクト形式の伝達3、マルチパラメータ伝達4、セットタイプのパラメータ伝達
具体的な方式
2.1 java基本タイプ
整形を例に、マッピングファイル:
Authorクラスを例に、マッピングファイル:
マルチパラメータは2種類に分けられます.1、パラメータをMapに入れます.2、Mybatisの注釈@Paramで指定します.
Mapタイプマッピングファイル:
一連のIDに基づいて、いくつかの操作を行うのが一般的です.
Authorクラスを例に、マッピングファイル:
このパラメータを使用すると、Mybatisはこのパラメータを文字列として認識します.例えば、着信パラメータが「Smith」であれば、SQL(Select*from emyhere name=Naement)で使用すると、Select*from mywhere=Schementに変換されます.使うとSelect*from emp where name=Smithに変換されます. 再度、安全性を考慮して、xiをできるだけ使用して参参を伝えることができます.これはSQL注入の問題を効果的に防ぐことができます.
四:補充
Mybatisディレクトリ
githubアドレス:https://github.com/andyChenHuaYing/scattered-items/tree/master/items-mybatis ソースのダウンロード先:http://download.csdn.net/detail/chenghuaying/8713311
Authorクラス:
一:概要
主にMybatisが伝達パラメータをどのようにマッピングしたかを記録しています.4つの種類に分けて記録します.1、java基本タイプの伝達、2、Javaオブジェクト形式の伝達3、マルチパラメータ伝達4、セットタイプのパラメータ伝達
具体的な方式
2.1 java基本タイプ
整形を例に、マッピングファイル:
<select id="getAuthorById" parameterType="int" resultType="org.alien.mybatis.samples.model.Author">
SELECT *
FROM author
WHERE id = #{id}
</select>
マッピング方法: Author getAuthorById(int id);
テストコード: private AuthorMapper authorMapper;
public AuthorMapperTest() {
authorMapper = MybatisUtil.getSqlSession().getMapper(AuthorMapper.class);
}
@Test
public void testGetAuthorById() throws Exception {
Author author = authorMapper.getAuthorById(1);
Assert.assertNotNull(author);
}
2.2.javaオブジェクトAuthorクラスを例に、マッピングファイル:
<select id="getAuthorWithValidate" parameterType="org.alien.mybatis.samples.model.Author"
resultType="org.alien.mybatis.samples.model.Author">
SELECT *
FROM author
WHERE username = #{username} AND password = #{password}
</select>
マッピング方法: Author getAuthorWithValidate(Author author);
テスト方法: @Test
public void testGetAuthorWithValidate() throws Exception {
Author author = authorMapper.getAuthorWithValidate(new Author("star_year", "alien"));
Assert.assertNotNull(author);
}
2.3マルチパラメータマルチパラメータは2種類に分けられます.1、パラメータをMapに入れます.2、Mybatisの注釈@Paramで指定します.
Mapタイプマッピングファイル:
<select id="getAuthorByMultiCondition" parameterType="hashMap" resultType="author">
SELECT *
FROM
(
SELECT
A.*,
ROWNUM RN
FROM (SELECT *
FROM author
WHERE username LIKE '%' || #{username} || '%') A
WHERE ROWNUM <= #{endRecord}
)
WHERE RN >= #{startRecord}
</select>
Mapタイプマッピング方法: List<Author> getAuthorByMultiCondition(Map<String, Object> map);
Mapタイプのテスト方法: @Test
public void testGetAuthorByMultiCondition() throws Exception {
Map<String, Object> map = new HashMap<>();
map.put("startRecord", 0);
map.put("endRecord", 10);
map.put("username", "star_year");
List<Author> authors = authorMapper.getAuthorByMultiCondition(map);
Assert.assertNotNull(authors);
}
@パラメータタイプマッピングファイル: <select id="getAuthorByUsername" resultType="Author">
SELECT *
FROM author
WHERE username LIKE '%' || #{username} || '%' AND email LIKE '%' || #{email} || '%'
</select>
@Paramタイプマッピング方法: List<Author> getAuthorByUsername(@Param("username") String username, @Param("email") String email);
@パラメータタイプ試験方法: @Test
public void testGetAuthorByUsername() throws Exception {
List<Author> authorList = authorMapper.getAuthorByUsername("star_year", "46185");
Assert.assertNotNull(authorList);
}
2.4セットタイプパラメータ一連のIDに基づいて、いくつかの操作を行うのが一般的です.
Authorクラスを例に、マッピングファイル:
<select id="getAuthorByIdCollection" resultType="author">
select * from author where id in
<foreach collection="list" item="item" open="(" separator="," close=")">
#{item}
</foreach>
</select>
マッピング方法: List<Author> getAuthorByIdCollection(List<Integer> idList);
テスト方法: @Test
public void testGetAuthorByIdCollection() throws Exception {
List<Integer> idList = new ArrayList<>();
idList.add(1);
idList.add(2);
List<Author> authorList = authorMapper.getAuthorByIdCollection(idList);
Assert.assertNotNull(authorList);
}
三、{paramName}と璢{paramName}は違います.このパラメータを使用すると、Mybatisはこのパラメータを文字列として認識します.例えば、着信パラメータが「Smith」であれば、SQL(Select*from emyhere name=Naement)で使用すると、Select*from mywhere=Schementに変換されます.使うとSelect*from emp where name=Smithに変換されます. 再度、安全性を考慮して、xiをできるだけ使用して参参を伝えることができます.これはSQL注入の問題を効果的に防ぐことができます.
四:補充
Mybatisディレクトリ
githubアドレス:https://github.com/andyChenHuaYing/scattered-items/tree/master/items-mybatis ソースのダウンロード先:http://download.csdn.net/detail/chenghuaying/8713311
Authorクラス:
public class Author {
private int id;
private String username;
private String password;
private String email;
private String bio;
private String favouriteSection;
//getter setter ...
}