複数のマッパーファイルと名前空間関数
複数のマッパーファイルがある場合はどうすればよいですか?また、名前空間は何ですか?
最初に、データベースステートメントの作成を見てみましょう。
#创建数据库
CREATE DATABASE `test` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
#创建数据表
CREATE TABLE `student` ( `id` INT NOT NULL AUTO_INCREMENT , `name` VARCHAR(20) NOT NULL ,
`age` INT NOT NULL , `score` DOUBLE NOT NULL , PRIMARY KEY (`id`)) ENGINE = MyISAM;
ここで、Mybatisの実行プロセスを再説明する必要があります。まず、このファイルをResources.getResourceAsStream("mybatis.xml")
読み取りmybatis.xml
ます。このファイルの構成は、プロジェクト全体と、実行中のデータベース環境(どのデータベースを使用するか)などのデータベースに関連する構成です。接続先、データベースサーバーのアドレス、ユーザー名、パスワード)、または外部構成ファイルの構成など。最も重要なことは、このファイルがマッピングファイル(マッパーファイル)に登録されていることですSqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(inputStream);
。sqlSessionFactory
戻ってmybatis.xml
、内部で読み取られた構成ファイルを読み取り、各構成ファイルによって読み取られたMapper
マッピングファイルを1つずつopenSession()
取得しsqlSession
ます。取得したインスタンスを使用する場合、たとえば、使用する場合はsqlSession.insert("insertStudent",student);
、それぞれのsql構成ステートメントを検索します。マッパー、これは次のようになります:
<mapper namespace="mapper1">
<insert id="insertStudent" parameterType="bean.Student">
insert into student(name,age,score) values(#{name},#{age},#{score})
</insert>
</mapper>
id
同じものを見つけるだけで、多くの人が言うでしょう、区別が使用されているので、id
私のマッパーファイルの名前空間属性は何のためのものですか?
同じものが2つ以上ある
id
場合は、名前空間を使用して区別する必要がありmapper.xml
ます。ファイルが1つしかない場合は、namespace
何でも書き込むことができます。使用する場合は、必要なだけですsqlSession.insert("insertStudent",student);
。IDが同じであれば問題ありません。次に、必要です。使用するには:sqlSession.insert("mapper1.insertStudent",student);
前に追加しnamspace
ます。そうしないと、次のエラーが表示され、フルネームを使用してを含めるnamespace
か、を再定義するように求められますid
。
一般に、id
それらは異なり、直接使用できるかid
、同じですが同じではnamespace
なく、使用するときにnamespace
区別します。それ以外の場合は、次のエラーが報告されます。
複数のマッパーファイルの場合、mybatis.xmlファイルに2つのファイルを登録する必要があります。
<!-- 注册映射文件 -->
<mappers>
<mapper resource="mapper/mapper1.xml"/>
<mapper resource="mapper/mapper2.xml"/>
</mappers>
使用時に名前空間を追加します。
この記事は、私自身(新人)の研究蓄積記録または研究ノートのみを表しています。侵害がある場合は、著者に連絡して削除してください。完璧な人はいないので、記事も未熟で、次の文章が苦手です。スプレーしないでください。間違いがあった場合は、指摘したいと思います。感謝しています〜
技術への道は一度ではなく、山は高く、川は長く、遅くても止まりません。
公開番号:秦淮食料品店