一覽表
MyBatis的配置文件包含了影響MyBatis行爲的信息
頂層configuration 配置
properties屬性
settings設置
typeAliases類型命名
typeHandlers類型處理器
objectFactory對象工廠
plugins插件
environments環境
environment環境變量
transactionManager事務管理器
dataSource數據源
databaseIdProvider數據庫廠商標識
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>
<!-- 屬性:定義配置外在化 -->
<properties></properties>
<!-- 設置:定義mybatis的一些全局性設置 -->
<settings>
<!-- 具體的參數名和參數值 -->
<setting name="" value=""/>
</settings>
<!-- 類型名稱:爲一些類定義別名 -->
<typeAliases></typeAliases>
<!-- 類型處理器:定義Java類型與數據庫中的數據類型之間的轉換關係 -->
<typeHandlers></typeHandlers>
<!-- 對象工廠 -->
<objectFactory type=""></objectFactory>
<!-- 插件:mybatis的插件,插件可以修改mybatis的內部運行規則 -->
<plugins>
<plugin interceptor=""></plugin>
</plugins>
<!-- 環境:配置mybatis的環境 -->
<environments default="">
<!-- 環境變量:可以配置多個環境變量,比如使用多數據源時,就需要配置多個環境變量 -->
<environment id="">
<!-- 事務管理器 -->
<transactionManager type=""></transactionManager>
<!-- 數據源 -->
<dataSource type=""></dataSource>
</environment>
</environments>
<!-- 數據庫廠商標識 -->
<databaseIdProvider type=""></databaseIdProvider>
<!-- 映射器:指定映射文件或者映射類 -->
<mappers></mappers>
</configuration>
基礎配置指北
parameterType和resultType這兩個屬性值確定方式:
1.parameterType根據接口中的形參名來判定的
2.resultType根據接口中的返回值類型
begin:eg
public List<Product> getProductAll(Integer id)
在xml中配置的內容:
<!-- 這裏假定我們已經在mybatis-config.xml中給實體類配置了別名,配置方法:
<typeAliases>
//此類方法是將實體類所有類都以首字母小寫,作爲別名
<package name="com.aj.entity"></package>
</typeAliases>
-->
<select id="getProductAll" resultType ="product>
select * from product
</select>
end:eg
@Param屬性作用:
當接口中傳了很多的參數,如果不加@Param屬性,那麼有可能在傳參的時候,順序位置不對,導致sql不能執行.所以需要進行屬性轉化.
在前臺使用Mybatis框架中可能遇到的錯誤類型:
1-接口中
1.方法的重名
2.創建List集合,對應的類沒有導入
3.方法重載的情況
2-接口實現類中
1.對應的mapper中的namespace屬性是不是對應的接口實現類的全類名
2.id值是否和接口方法名對應,是否是對應的resultType值或者parameterType值
3.mybatis定義方法的時候,該怎麼確定用什麼值來接收呢?
insert delete update返回受影響的行數,所以需要定義int類型的返回值
select 返回的是一個數組所以需要List集合接收
4.sql語句:limit
limit n,m
意思就是limit n+1條開始檢索 檢索共m條
3-轉發界面對應的servlet類
1.爲了從數據庫獲取的值不亂碼:
建議:加上兩條語句
request.setCharacterEncoding(“UTF-8”);
response.setCharacterEncoding(“UTF-8”);
2.不要忘記引入對應的MyBatisUtil中的getMapper方法.
begin:eg
ProductMapper pDao=MyBatisUtil.getMapper(ProductMapper.class)
end:eg
3.request.setAttribute(“鍵”,“值”) 接收的時候一定不要忘了.
4.轉發界面的要確定下,你要轉發的界面是不是會被其他jsp頁面引入的頁面
是:後面的forward(request,response)
不是: include(request,response)
4-jsp頁面
1.引入包的時候,在head中加入
相當於中的 css前面的檢索地址.
2.如果一個jsp頁面的一個位置需要引入其他頁面:則需要在此處添加語句:
轉發的相應位置:寫jsp標籤:<jsp:include page="/別名"></jsp:include>
3.在封裝的頭部和尾部中的servlet中,不要關閉輸出流,最好就不寫輸出流了,否則會報streamException不需要寫這段語句:[
PrintWriter out = response.getWriter();
out.flush();
out.close();
]
4.jsp頁面上方,應該一定不要忘了修改編碼方式和導入實體類
5.jsp中EL:表達式的forEach
EL表達式中的begin 和end可以確定字段截取,當不寫end的時候,可以遍歷出begin開始後的所有