MyBatis02クラスのノート

MyBatisの標準構成

1.インポートジャーパッケージ

2. 作成 MyBatisのグローバル設定ファイル:MyBatisの-config.xmlが

 

 

 3. 作成したSQLマッピングファイルインタフェースおよびマッパーのMyBatisのを

要件:
一貫性のあるSQLファイルインタフェースのフルクラス名と名前空間の値のマッピング。 ID値と一貫性のあるインターフェイスメソッド名のSQL文のSQLマッピングファイル。 注:DOはメソッドのオーバーロード・インターフェースを持っていません

 

 

 

4.書き込みテストコード

MyBatisのグローバル・コンフィギュレーション・ファイル[理解]

1.Properties

役割:ロードの特性プロファイル情報

 

 

 2.Settingsラベル

処置:設定MyBatisのを設定するための設定項目に内部ラベルタグ、各タグ対応する複数の設定を提供することができます

 

 

 3.typeAliases

 エイリアスタイプのプロセッサ:エイリアスへのクラス

補足: MyBatisのは、参照データ型を学び、このような基本データ型Javaの基礎として、いくつかの型の別名が付属しています

 

 

 4. typeHandlers

処置:データベースのデータ型の変換Javaデータ型

 

 

 5.環境

処置:複数存在する環境で環境ラベル、それぞれの環境のタグを提供することができる MyBatisの動作環境を。

<環境デフォルト = 開発 >
      <!--1. 配置数据库连接信息 -->
        <environment id="development">
            <!-- 
              transactionManager:事务管理器
                type:JDBC|MANAGED
                  JDBC:支持事务
                  MANAGED:不支持事务 -->
            <transactionManager type="JDBC" />
            <!-- 
               dataSource:数据源
                 type:UNPOOLED|POOLED|JNDI
                   UNPOOLED:每次使用重新打开或者关闭一个connection连接,不支持数据源,速度有点慢
                   POOLED:支持数据源,适合并发访问的项目
                   JNDI:过时的。 -->
            <dataSource type="POOLED">
                <property name="driver" value="${jdbc.driverClass}" />
                <property name="url" value="${jdbc.jdbcUrl}" />
                <property name="username" value="${jdbc.userName}" />
                <property name="password" value="${jdbc.password}" />
            </dataSource>
        </environment>
    </environments>

6. databaseIdProvider

作用:为数据库厂商起别名

由于MyBatis支持多种数据库:Oracle、MySQL、SqlServler、Db2

在MyBatis全局配置文件中配置

 

 

 Sql映射文件

 

 

 7. Mappers

作用:加载Mapper接口或者SQL映射文件

 

 

 SQL映射文件

注意点:

1.对于增删改标签,必须提交事务。提交事务的两种方式:
   1.1.手动提交:openSession.commit()
  1.2.自动提交:sqlSessionFactory.openSession(true);
2.只有select必须指定返回值类型,所有标签的parameterType都可以省略。

往数据表中添加数据的时候获取自增逐渐

要求:

1.接口方法的参数必须是一个pojo对象
2.在insert标签设置两个属性:
  useGenerateKeys=true,keyProperty=“pojo对象属性”

 

 

 

 

 

 Sql片段

 

 

 

 作用:可以做sql语句重用

 

 

 

 

 

 MyBatis支持基于注解的sql语句

@Select(value="select * from book where bid = #{bid}")
public Book selectOne(int bid);
@Insert(value="insert into book(bname,author,price,type) values(#{bname},#{author},#{price},#{type});")
public void insert(Book book);
@Delete(value="DELETE FROM book WHERE bid=#{bid}")
public void delete(int bid);

如何在sql映射文件中取mapper接口中的参数

 

1.一个普通参数

 

  #{随便写}

 

 

 

 

2.多个普通参数

 

  #{param注解的value值}

方式一:

方式二:

 

 

 

 

输出:

 

 

 3.参数是一个pojo对象

   #{pojo对象的属性名}

4.是一个map对象

 

  #{map中键值对的key}

 

 

 

输出:

 

 

 5.参数是一个List、Collection

   #{list[下标]}或者#{collection[下标]}

 

 

 

 

 

 

 

 输出:

 

 

 6.参数是一个数组

  #{array[下标]}

 

7.复杂参数

 

 

 

 

 

 

输出:

 各种各样的返回值类型

 

 

 

  #{}与${}的区别【面试】

#{}:采用占位符?,以预编译的方式设置参数的,类似于javaweb部分的preparestatement对象,SQL安全的,不存在sql注入问题。
${}:直接将参数设置到sql语句中,类似于javaweb部分的statement对象,存在SQL注入问题。
在有些特殊情况下,我们必须使用${}.例如:表名、like模糊查询、排序字段。

 ResultMap标签

当数据表的列名和pojo对象的属性名不一致的时候,如何将表的列名映射到pojo对象属性上?

1.起别名

2.mapUnderScoreToCamelCase=true

3.ResultMap标签

 

ResultMap作用说明:

  1. 字段映射
  2. 将表的关联关系直接映射为pojo对象的关联关系【resultType属性不具备的功能】

おすすめ

転載: www.cnblogs.com/bai3535/p/12098596.html