Mybatis框架的學習心得

Mybatis框架

Mybatis與hibernate的區別

Hibernate屬於輕量級全自動全映射框架,sql語句也是封裝處理的,如果想處理特殊的業務邏輯則需要學習hql語句,這無疑會加重我們的學習負擔。

Mybatis屬於輕量級半自動持久化層框架,即sql語句是由開發人員自己編寫在配置文件中加載配置文件達到jdbc的作用,

Mybatis的下載地址

https://github.com/mybatis/mybatis-3

 

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>
  <environments default="development">
    <environment id="development">
      <transactionManager type="JDBC"/>
      <dataSource type="POOLED">
        <property name="driver" value="com.mysql.jdbc.Driver"/>
        <property name="url" value="jdbc:mysql:///db_a"/>
        <property name="username" value="root"/>
        <property name="password" value="123"/>
      </dataSource>
    </environment>
  </environments>
  <mappers>
    <mapper resource="UserMapper.xml"/>
  </mappers>
  
</configuration>

dataSource標籤:數據源,裏面寫數據庫的連接,驅動,賬號,密碼。

Mappers標籤:加載所需的寫入了sql語句的配置文件。

Mybatis框架使用的是面向接口編程所以我們還需要準備接口

 

package com.zking.dao;

import com.zking.pojo.User;

public interface UserMapper {
    int deleteByPrimaryKey(Integer uid);

    int insert(User record);

    int insertSelective(User record);

    User selectByPrimaryKey(Integer uid);

    int updateByPrimaryKeySelective(User record);

    int updateByPrimaryKey(User record);
}

 

第二步:寫一個有sql語句的配置文件如:

<?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="com.zking.dao.UserMapper">
<sql id="Base_Column_List">
    uid, username, userpwd
  </sql>
  <select id="selectByPrimaryKey" resultType="com.zking.pojo.User">
    select 
	<include refid="Base_Column_List"></include>
 from tb_user where uid = #{id}
  </select>
</mapper>

這個配置文件中要注意mapper標籤中的 namespace要放你接口的相對路徑

還有方法的id要與你的方法名相同

這個配置文件中寫的是select方法需要特別注意的有sql標籤以及include標籤因爲這兩個標籤與數據庫的優化有關。

Select在sql語句中是經常被我們寫的語句,每當類名過多時我們可能會將這些類名替換成一個*但是這種做法是不太好的,因爲*在sql語句中代表的是所有,所以我們每用一次*都代表這數據庫將它的所有東西都查詢過了一次。所以說用*這種方法不可取,但是在SQL語句中select出現的次數又過多,如果類名比較多的話會比較麻煩,所以Mybatis框架給我們提供了一個sql標籤,我們可以將這些列名存入到sql標籤中然後通過include標籤取出來使用。

注意:我們寫jdbc時書寫的sql語句進入預編譯時它的佔位符時?,在Mybatis中#{}代表佔位符。

在Mybatis框架中關於sql配置文件還有許多標籤:比如insert,delete,update即對應這CURD

這寫標籤中有兩個屬性需要注意:

result Type:這個代表着執行這個方法返回的類型

ParameterType:代表這執行這個方法需要放入的參數。

 

第三步:具體的使用

1:加載核心配置文件獲得SqlSessionFactory對象

String resource = "Mybatis-config.xml";
		InputStream inputStream = Resources.getResourceAsStream(resource);
		SqlSessionFactory sqlSessionFactory = 
				new SqlSessionFactoryBuilder().build(inputStream);

2:通過sqlsessionFactory獲得sqlsession對象

SqlSession session=sqlSessionFactory.openSession();
  1. 獲得接口,調用方法
try {
			UserMapper um=session.getMapper(UserMapper.class);
			User u1=um.selectByPrimaryKey(1);
			
		} catch (Exception e) {
			// TODO: handle exception
		}finally {
			session.close();
			
		}

要注意sqlsession的線程是不安全的所以sqlsession是不能共享的所以使用一次就需要關閉一次。

以上就是我初學Mybatis框架所得到的心得。

 

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