Mybatis學習筆記

  • Mybatis

目錄

Mybatis

Mybatis簡介

JDBC和Mybatis


  • Mybatis簡介

Mybatis就是讓你更好的對數據庫進行操作,代替原生的JDBC進行操作。

 

  • JDBC和Mybatis

既然原生JDBC和mybatis都是對數據庫操作,那他們有什麼區別呢。


public class DbUtil {

    public static final String URL = "jdbc:mysql://localhost:3306/imooc";
    public static final String USER = "liulx";
    public static final String PASSWORD = "123456";

    public static void main(String[] args) throws Exception {
        //1.加載驅動程序
        Class.forName("com.mysql.jdbc.Driver");
        //2. 獲得數據庫連接
        Connection conn = DriverManager.getConnection(URL, USER, PASSWORD);
        //3.操作數據庫,實現增刪改查
        Statement stmt = conn.createStatement();
        ResultSet rs = stmt.executeQuery("SELECT user_name, age FROM imooc_goddess");
        //如果有數據,rs.next()返回true
        while(rs.next()){
            System.out.println(rs.getString("user_name")+" 年齡:"+rs.getInt("age"));
        }
    }
}
//代碼來自https://www.runoob.com/w3cnote/jdbc-use-guide.html

可以看到JDBC操作,創建了3個對象

Connection 
數據庫連接
Statement 
數據庫操作
ResultSet 
結果集

 

那麼Mybatis操作呢

public class MybatisTest {
   public static void main(String[] args) throws Exception {
      // 指定全局配置文件
      String resource = "mybatis-config.xml";
      // 讀取配置文件
      InputStream inputStream = Resources.getResourceAsStream(resource);
      // 構建sqlSessionFactory
      SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
      // 獲取sqlSession
      SqlSession sqlSession = sqlSessionFactory.openSession();
      try {
         // 操作CRUD,第一個參數:指定statement,規則:命名空間+“.”+statementId
         // 第二個參數:指定傳入sql的參數:這裏是用戶id
         User user = sqlSession.selectOne("MyMapper.selectUser", 1);
         System.out.println(user);
      } finally {
         sqlSession.close();
      }
   }
}

//代碼來自:https://blog.csdn.net/hellozpc/article/details/80878563
InputStream 讀取配置文件,包含配置的數據庫源
SqlSessionFactory 通過SqlSessionFactoryBuilder創建,用來生成數據庫操作對象
SqlSession 數據庫操作
(1)、定義一個Configuration對象,其中包含數據源、事務、mapper文件資源以及影響數據庫行爲屬性設置settings

(2)、通過配置對象,則可以創建一個SqlSessionFactoryBuilder對象

(3)、通過 SqlSessionFactoryBuilder 獲得SqlSessionFactory 的實例。

(4)、SqlSessionFactory 的實例可以獲得操作數據的SqlSession實例,通過這個實例對數據庫進行操作
 

在使用JDBC操作數據庫時,數據庫表列名與對象是無關聯的,我們需要手動的去指定獲取數據庫列。同時每次操作數據庫都需要去配置數據源,Mybatis等框架就爲我們優化了這些問題,讓開發者更好去的進行開發工作。

那麼Mybatis是如何去進行配置從而實現的:

首先配置全局文件mybatis-config.xml

<?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>
<properties>
	<property name="driver" value="com.mysql.jdbc.Driver"/>
	<property name="url" value="jdbc:mysql://127.0.0.1:3306/mybatis-110?useUnicode=true&amp;characterEncoding=utf-8&amp;allowMultiQueries=true"/>
	<property name="username" value="root"/>
    	<property name="password" value="123456"/>
   </properties>

   <!-- 環境,可以配置多個,default:指定採用哪個環境 -->
   <environments default="test">
      <!-- id:唯一標識 -->
      <environment id="test">
         <!-- 事務管理器,JDBC類型的事務管理器 -->
         <transactionManager type="JDBC" />
         <!-- 數據源,池類型的數據源 -->
         <dataSource type="POOLED">
            <property name="driver" value="com.mysql.jdbc.Driver" />
            <property name="url" value="jdbc:mysql://127.0.0.1:3306/mybatis-110" />
            <property name="username" value="root" />
            <property name="password" value="123456" />
         </dataSource>
      </environment>
      <environment id="development">
         <!-- 事務管理器,JDBC類型的事務管理器 -->
         <transactionManager type="JDBC" />
         <!-- 數據源,池類型的數據源 -->
         <dataSource type="POOLED">
            <property name="driver" value="${driver}" /> <!-- 配置了properties,所以可以直接引用 -->
            <property name="url" value="${url}" />
            <property name="username" value="${username}" />
            <property name="password" value="${password}" />
         </dataSource>
      </environment>
   </environments>
  </configuration>

通過配置文件,我們告訴了Mybatis數據源和加載什麼數據庫驅動去讀取數據庫,即JDBC裏的

  public static final String URL = "jdbc:mysql://localhost:3306/imooc";
  public static final String USER = "liulx";
  public static final String PASSWORD = "123456";
  Class.forName("com.mysql.jdbc.Driver");

現在數據源有了,那如何去操作數據:創建MyMapper.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
  PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!-- mapper:根標籤,namespace:命名空間,隨便寫,一般保證命名空間唯一 -->
<mapper namespace="MyMapper">
   <!-- statement,內容:sql語句。id:唯一標識,隨便寫,在同一個命名空間下保持唯一
      resultType:sql語句查詢結果集的封裝類型,tb_user即爲數據庫中的表
    -->
   <select id="selectUser" resultType="com.zpc.mybatis.User">
      select * from tb_user where id = #{id}
   </select>
</mapper>

然後把創建的Mapper加入到mybatis-config.xml

<mappers>

<mapper resource="mappers/MyMapper.xml" />

</mappers>

<?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>
   <!-- 環境,可以配置多個,default:指定採用哪個環境 -->
   <environments default="test">
      <!-- id:唯一標識 -->
      <environment id="test">
         <!-- 事務管理器,JDBC類型的事務管理器 -->
         <transactionManager type="JDBC" />
         <!-- 數據源,池類型的數據源 -->
         <dataSource type="POOLED">
            <property name="driver" value="com.mysql.jdbc.Driver" />
            <property name="url" value="jdbc:mysql://127.0.0.1:3306/ssmdemo" />
            <property name="username" value="root" />
            <property name="password" value="123456" />
         </dataSource>
      </environment>
   </environments>
   <mappers>
     <mapper resource="mappers/MyMapper.xml" />
   </mappers>
</configuration>

現在完成了數據源的配置,和需要的操作,就可以生成Mybatis對象進行對應操作了。

 

 

部分引用https://blog.csdn.net/hellozpc/article/details/80878563

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章