Ibatis/MyBatis を使用して動的に選択/更新/削除する方法はありますか?
「動的に」と言うときは、POJO/DataMapper をまったく作成したくないという意味です。
URL の例を歓迎します。
はい、resultType
属性をに設定するだけmap
で、テーブルデータが列名から値へのHashMapに配置されます。クエリが複数の行を返す場合、マップされた行はリストに入れられます。単一の列を選択する場合は、その値のみ(String、intなど)またはリストとして取得できます。
<select id="test1" resultType="map">select * from user</select>
<select id="test2" resultType="map" parameterType="int">
select * from user where id=#{value}</select>
<select id="test3" resultType="string">select name from user</select>
...
// returns a list of maps
List test = sqlSession.selectList("test1");
// returns a single map
Object map = sqlSession.selectOne("test2", 0);
// returns a list of strings
List names = sqlSession.selectList("test3");
これはMyBatis3に適用されます。iBatis2でも同様のことができると思います。
はい、API を介して実行時にマッピングを構築し、エンティティ クラスの代わりにマップを使用することが可能であるべきです。