sql對映檔案
阿新 • • 發佈:2019-01-22
列舉SQL對映檔案的幾個頂級元素
mapper:對映檔案的跟元素節點,只有一個屬性namespace(名稱空間).其作用如下:
用於區分不同的mapper,全域性唯一
繫結DAO介面,即面向介面程式設計。當namespace繫結某一介面之後,可以不用寫該介面的實現類,MyBatis會通過介面的完整限定名查詢到對應的mapper配置檔案來執行SQL語句。因此namespace的命令必須要跟介面同名
cache:配置給定名稱空間的快取
cache-ref:從其他名稱空間引用快取配置
resultMap:用來描述資料庫結果集和物件的對應關係
sql:可以重用SQL塊,也可以被其他語句引用
insert:對映插入語句
resultType和resultMap的區別是什麼
返回型別可以用resultType也可以用resultMap
resultType是直接表示返回型別
resultMap則是對外部ResultMap的引用
兩者不能同時存在
MyBatis多引數入參如何處理?有幾種方式
一、#{引數索引}
1. DAO層
Mapper介面類
User logon(String user_name,Stringpassword);
Mapper.xml檔案
<select id="logon" resultMap="UserResultMap" >
select
<include refid="Base_Column_List"/>
from sys_user
WHERE user_name = #{0} and password = #{1}
</select>
這裡用的是#{引數索引}
2. Service層
Service介面類
User logon(String user_name,String password);
Service實現類
@Override
public User logon(String user_name, String password) {
return userMapper.logon(user_name,password);
}
二、Map傳引數
1. DAO層
Mapper介面類
User logon(Map map);
Mapper.xml檔案
<select id="logon" resultMap="UserResultMap" >
select
<include refid="Base_Column_List"/>
from sys_user
where user_name = #{user_name,jdbcType=VARCHAR} and password = #{password,jdbcType=VARCHAR}
</select>
這裡介面方法傳入的map
2. Service層
Service介面
User logon(String user_name,String password);
Service實現類
@Override
public User logon(String user_name, String password) {
Map paramMap=new HashMap();
paramMap.put("user_name",user_name);
paramMap.put("password",password);
User user=userMapper.logon(paramMap);
return user;
}
Service層實現了要將引數與map繫結
三、註解方法傳引數
1. DAO層
Mapper介面類
User logon(@Param("user_name")String user_name,@Param("password")String password);
Mapper.xml檔案
<select id="logon" resultMap="UserResultMap" >
select
<include refid="Base_Column_List"/>
from sys_user
where user_name = #{user_name,jdbcType=VARCHAR} and password = #{password,jdbcType=VARCHAR}
</select>
這裡主要注意介面傳入引數前面加了@Param註解
2. Service層
Service介面
User logon(String user_name,String password);
Service實現類
@Override
public User logon(String user_name, String password) {
return userMapper.logon(user_name,password);
}
mapper元素的namespace屬性的作用是什麼
namespace決定了action的訪問路徑,預設為"",可以接受所有路徑的action
不同的SQL對映檔案,元素的ID必須不同嗎
談談你對association和collection元素的理解
public class A{
private B b1;
private List<B> b2;
}
在對映b1屬性時用association標籤, 對映b2時用collection標籤,分別是一對一,一對多的關係