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();
- 獲得接口,調用方法
try {
UserMapper um=session.getMapper(UserMapper.class);
User u1=um.selectByPrimaryKey(1);
} catch (Exception e) {
// TODO: handle exception
}finally {
session.close();
}
要注意sqlsession的線程是不安全的所以sqlsession是不能共享的所以使用一次就需要關閉一次。
以上就是我初學Mybatis框架所得到的心得。