1. Mybatisの動作原理
2.お問い合わせ
<select id="方法名" parameterType="方法参数类型" resultType="方法返回值类型,全类名" >
select 表中字段名 AS 结果字段名 from 表名 where 条件
<!--注意:结果字段名与属性名保持一致,区分大小写-->
</select>
3.挿入
<insert id="需要实现的接口里的方法名" parameterType="方法参数名,如果是对象,要写全类名">
insert into 表名 (字段1,字段2,...) values(#{参数1},#{参数2},...)
<!--注意属性名区分大小写-->
</insert>
4.変更
<update id="updateCustomer" parameterType="com.wang.po.Customer">
update t_customer set username=#{username},jobs=#{jobs}
,phone=#{phone} where id=#{id}
</update>
5.削除
<delete id="deleteCustomer" parameterType="Integer">
delete from t_customer where id=#{id}
</delete>
6.resultType分析(最初に書いたときにこの問題が発生しました)
1.基本タイプ:resultType =基本タイプ
2.リストタイプ:resultType =リスト内の要素のタイプ
3.mapタイプ:単一レコード:resultType = map
複数のレコード=マップの値のタイプ
4.オブジェクトタイプ:resultType =オブジェクトの完全なクラス名
7.パラメータ処理
1.単一のパラメーター:値に#{パラメーター名}を直接使用します。mybatisには特別な処理はありません。パラメーター名は何気なく書くことができます
2.複数のパラメータ:#{parameter}、#{param2}を使用して値を取得します
3.名前付きパラメーター:@param( "key")を使用してパッケージマップでキーを指定すると、#{key}を介してパラメーター値を取得できます
4. POJO:複数のパラメーターがたまたまビジネスモデルである場合は、この時点でビジネスモデルを渡すことができます。#{プロパティ名}を介して値を取得できます。
5.マップ:複数のパラメーターがビジネスモデルではなく、頻繁に使用されない場合は、マップをカスタマイズして渡すことができます
6. TO:複数のパラメーターがビジネスモデルではなく、頻繁に使用される場合、TOをカスタマイズしてオブジェクトを転送できます。
リファレンス:mybatis-parameter processing
8.#{}と$ {}の違い
1.#{}はプリコンパイルプロセスであり、$ {}は文字列の置換です。
2. Mybatisが#{}を処理しているとき、SQLの#{}をa?に置き換え、PreparedStatementのsetメソッドを呼び出して値を割り当てます。
3. Mybatisが$ {}を処理すると、$ {}が変数の値に置き換えられます。
4.#{}を使用すると、SQLインジェクションを効果的に防ぎ、システムのセキュリティを向上させることができます。