配置基礎MyBaits,前臺基礎常見錯誤

一覽表

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開始後的所有

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