エンティティークラスの属性と列名の不整合を解決する2つのソリューション
最初のタイプ(実行効率が速く、開発効率が低い)
- クラスの属性は、id、name、passwordです。
- データベースのフィールドは、user_id、user_name、user_passwordです。
- データベースからクエリされたデータをUserオブジェクトにカプセル化できるようにするには、エイリアスを使用できます
。これはマッピングファイルに書き込む必要があります。
<select id="findAll" resultType="com.yixuexi.entity.User">
select user_id as id,user_name as name,user_password as password from user;
</select>
概要:このソリューションは比較的原始的なものであり、テーブルにフィールドがさらにある場合、開発速度は非常に遅くなります。
2番目のソリューション(実行効率が低く、開発速度が速い)
- mybatisの構成を使用する
- これをマッピングファイルで直接設定します
<!--id 就是起个名,在使用的时候用这个名就行 type 是哪个实体类-->
<resultMap id="userMap" type="com.yixuexi.entity.User">
<!--id 是配置主键字段的对应 property 写类中的属性名 column写数据库中对应的字段名-->
<id property="id" column="user_id"></id>
<!--result 是非主键字段的对应-->
<result property="name" column="user_name"></result>
<result property="password" column="user_password"></result>
</resultMap>
- クエリを実行するときは、resultTypeを使用して結果タイプを指定しないでください。resultMapを使用してください。
<select id="findAll" resultMap="userMap">
select user_id,user_name,user_password from user
</select>
これは、エンティティクラスで照会し、カプセル化することができます。
ご注意
- resultTypeは使用せず、resultMapのIDを使用してください
- resultMapのサブタグIDは、主キーフィールドを構成するために使用されます
- resultMapのサブタグの結果は、非主キーフィールドを構成するために使用されます
次の記事の更新:メイン構成ファイルで参照されるJDBC.propertiesとメイン構成ファイルのいくつかのタグ