溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

如何在java中配置一個(gè)mybatis框架

發(fā)布時(shí)間:2021-02-03 08:19:15 來(lái)源:億速云 閱讀:155 作者:Leah 欄目:開(kāi)發(fā)技術(shù)

本篇文章給大家分享的是有關(guān)如何在java中配置一個(gè)mybatis框架,小編覺(jué)得挺實(shí)用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話(huà)不多說(shuō),跟著小編一起來(lái)看看吧。

1.配置數(shù)據(jù)庫(kù)

創(chuàng)建mybatis的配置文件,配置數(shù)據(jù)庫(kù)的信息。數(shù)據(jù)庫(kù)我們可以配置多個(gè),但是默認(rèn)的只能用一個(gè)。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<!-- 加載類(lèi)路徑下的屬性文件 -->
<properties resource="db.properties"/>
<!-- 設(shè)置一個(gè)默認(rèn)的連接環(huán)境信息 -->
<environments default="mysql_developer">
<!-- 連接環(huán)境信息,取一個(gè)任意唯一的名字 -->
<environment id="mysql_developer">
<!-- mybatis使用jdbc事務(wù)管理方式 -->
<transactionManager type="jdbc"/>
<!-- mybatis使用連接池方式來(lái)獲取連接 -->
<dataSource type="pooled">
<!-- 配置與數(shù)據(jù)庫(kù)交互的4個(gè)必要屬性 -->
<property name="driver" value="${mysql.driver}"/>
<property name="url" value="${mysql.url}"/>
<property name="username" value="${mysql.username}"/>
<property name="password" value="${mysql.password}"/>
</dataSource>
</environment>
<!-- 連接環(huán)境信息,取一個(gè)任意唯一的名字 -->
<environment id="oracle_developer">
<!-- mybatis使用jdbc事務(wù)管理方式 -->
<transactionManager type="jdbc"/>
<!-- mybatis使用連接池方式來(lái)獲取連接 -->
<dataSource type="pooled">
<!-- 配置與數(shù)據(jù)庫(kù)交互的4個(gè)必要屬性 -->
<property name="driver" value="${oracle.driver}"/>
<property name="url" value="${oracle.url}"/>
<property name="username" value="${oracle.username}"/>
<property name="password" value="${oracle.password}"/>
</dataSource>
</environment>
</environments>
</configuration>

2.配置SqlSessionFactory

MyBatis 的SqlSessionFactory 接口除了使用基于 XML 的配置創(chuàng)建外也可以通過(guò) Java API 編程式地被創(chuàng)建。每個(gè)在 XML 中配置的元素,都可以編程式的創(chuàng)建。

使用 Java API 創(chuàng)建 SqlSessionFactory,代碼如下:

public static SqlSessionFactory getSqlSessionFactoryUsingJavaAPI() {
  if (javaSqlSessionFactory == null) {
    try {
      DataSource dataSource = DataSourceFactory.getDataSource();
      TransactionFactory transactionFactory = new JdbcTransactionFactory();
      Environment environment = new Environment("development", transactionFactory, dataSource);
      Configuration configuration = new Configuration(environment);
      configuration.getTypeAliasRegistry().registerAlias("student", Student.class);
      configuration.getTypeHandlerRegistry().register(PhoneTypeHandler.class);
      configuration.addMapper(StudentMapper.class);
      javaSqlSessionFactory = new SqlSessionFactoryBuilder().build(configuration);
    } catch (Exception e) {
      throw new RuntimeException(e);
    }
  }
  return javaSqlSessionFactory;
}

這個(gè)配置里,加載了一個(gè)映射類(lèi)。映射類(lèi)是包含了 SQL 映射注解的 Java類(lèi),可以用來(lái)取代 XML。然而 ,由于 Java 注解的一些限制和 MyBatis 映射的復(fù)雜性,一些高級(jí)的映射還是要用 XML 來(lái)配置,比如嵌套映射等。由于這個(gè)原因,MyBatis 會(huì)自動(dòng)查找和加載已經(jīng)存在的 XML。

內(nèi)容擴(kuò)展:

Mybatis參數(shù)的設(shè)置

數(shù)據(jù)庫(kù)進(jìn)行添加操作需要注意的問(wèn)題
①.主鍵自增:在建立數(shù)據(jù)庫(kù)表的時(shí)候可以設(shè)置主鍵自增

②.主鍵不自增:可以自己手動(dòng)設(shè)置

<insert id="save" parameterType="Book" keyColumn="id" keyProperty="id" useGeneratedKeys="true">
    insert into jpa_book (author,createTime,name,price,sales,stock) values (#{author},#{createTime},#{name},#{price},#{sales},#{stock});
  </insert>

keyColumn=“id” 指定數(shù)據(jù)庫(kù)表主鍵字段

keyProperty=“id” 設(shè)置數(shù)據(jù)庫(kù)表對(duì)應(yīng)實(shí)體類(lèi)的屬性名

useGeneratedKeys=“true” 開(kāi)啟主鍵自增

③.主鍵不支持自增:例如Oracle數(shù)據(jù)庫(kù)就不支持自增

<selectKey keyProperty="id" resultType="int" keyColumn="id"  order="BEFORE"> 
        select LAST_INSERT_ID <!--或者使用 select UUID()生成-->
      </selectKey>

order=“BEFORE” 表示先生成主鍵再進(jìn)行自增

select LAST_INSERT_ID 或者使用 select UUID() 通過(guò)函數(shù)生成主鍵值

以上就是如何在java中配置一個(gè)mybatis框架,小編相信有部分知識(shí)點(diǎn)可能是我們?nèi)粘9ぷ鲿?huì)見(jiàn)到或用到的。希望你能通過(guò)這篇文章學(xué)到更多知識(shí)。更多詳情敬請(qǐng)關(guān)注億速云行業(yè)資訊頻道。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI