MyBatis前身世iBatis本是Apache的一個開源項目,2010年這個項目遷移到google code並更名爲MyBatis.java
1、高級軟件介紹git
1.JDK 8github
2.Eclipse mars2web
3.MySqlsql
4.Navicat數據庫
2、數據庫SQL命令緩存
1.建立數據庫並指定編碼tomcat
Create database 數據庫名 default character set utf8mybatis
2.建立表app
Create table 表名(
列名 類型 約束 auto_increment comment ‘備註’,
);
3、Eclipse使用
1.建立項目
1.1選擇target runtime,不然出現新建jsp報錯
1.2若是忘記選擇,右鍵項目–>build path–>configure path–>選項卡 library–>第四個add library–>server runtime
2.Eclipse默認會本身下載所需tomcat最簡單結構
4、命名規範
1.項目名:沒有要求,不起中文
2.包:公司域名倒寫edu.swpu
3.數據訪問層:dao,persist,mapper
4.實體:entity,model,bean,javabean,pojo
5.業務邏輯:service,biz
6.控制器:controller,servlet,action,web
7.過濾器:filter
8.異常:exception
9.監聽器:listener
10.註釋:
10.1類上和方法上使用文檔註釋
/** */
1
10.2 在方法裏面使用
/* */ 或 //
1
11.類: 大駝峯
12.方法,屬性:小駝峯
5、MVC開發模式
1.M:Model模型、實體類、業務和dao
2.V:view視圖 JSP
3.C:Controller控制器,servlet
3.1做用:視圖和邏輯分離
4.MVC適用場景:大型項目開發
5.圖示例
5.1先設計數據庫
5.2先寫實體類
5.3持久層
5.4業務邏輯
5.5控制器
5.6視圖
6、框架是什麼?
1.框架:軟件的半成品,爲解決問題制定的一套約束,在提供功能基礎上進行擴充
2.框架中一些不能被封裝的代碼(變量),須要使用框架者新建一個xml文件,在文件中添加變量內容
2.1須要創建特定位置和特定名稱的配置文件
2.2須要使用xml解析技術和反射技術
3.經常使用概念
3.1類庫:提供的類沒有封裝必定邏輯
舉例:類庫就是名言警句,寫做文時引入名言警句
3.2框架:區別於類庫,裏面有一些約束
舉例:框架是填空題
7、MyBatis簡介
1.Mybatis開源免費框架,原名叫iBatis,2010在google code,2013年遷移到github
2.做用:數據訪問層框架
2.1底層是對JDBC的封裝
3.mybatis優勢之一:
3.1使用mybatis時不須要編寫實現類,只須要寫須要執行的sql命令
8、環境搭建
MyBatis是一個持久層框架:提供SQL Maps和Data Access Objects(DAO)
開發步驟:
1、添加jar包(mybatis-3.2.3.jar)支持
2、核心配置文件mybatis-config.xml
3、編寫持久化類和對應的映射文件
備註:其實在使用MyBatis開發的時候映射文件的配置佔據了很大的部分,裏面即包含了返回類型resultMap也包含了SQL語句。
備註:MyBatis提供了一個Resources類來讀取配置文件,固然咱們可使用ClassLoader。
核心接口:SqlSessionFactory接口、SqlSession接口(最重要的接口)
默認狀況下mybatis是不會打出sql語句以及一些日誌文件的。
在src下加入log4j的配置文件,能夠打印出日誌信息:
首先加入log4j-1.2.17.jar,而後加入配置文件(properties或xml配置文件)
log4j.properties 或 log4j.xml(推薦使用xml配置文件,比較直觀)
解決字段名與實體類屬性名不相同的衝突方案?(別名或resultMap)
1.直接在mapper配置文件中寫sql的時候使用別名
2.使用resultMap從新配置字段和屬性的關係
mybatis-config.xml配置文件說明:
改配置文件徹底能夠參考官方文檔給出的參考配置文件,好比能夠配置javabean的別名,數據庫鏈接基本信息等。使用typeAlias來配置javabean別名主要是爲了方便而已,用不用都無所謂。
得到SqlSessionFactory方法:
String resource="mybatis-config.xml";
InputStream inputStream=Resources.getResourceAsStream(resource);
sqlSessionFactory=new SqlSessionFactoryBuilder().build(inputStream);
//得到資源文件的方式有好幾種,得到sqlSessionFactory方式有點相似hibernate4.0以前得到SessionFactory的方式。
插入操做能夠返回插入的主鍵id,外匯返傭http://www.fx61.com/,可是配置是要注意:(只對數據庫維護的自增id有效)
keyColumn="person_id" keyProperty="personId" useGeneratedKeys="true"
keyColum對應的是數據庫中的字段,keyProperty對應的javabean的屬性
userGeneratedKeys表示使用返回自增主鍵id.(這三個參數只有出如今insert語句纔有效)
具體javabean的Mapper.xml配置文件
@1.cache – 配置給定命名空間的緩存
@2.cache-ref – 從其餘命名空間引用緩存配置
@3.resultMap – 最複雜,也是最有力量的元素,用來描述如何從數據庫結果集中來加 載你的對象
@4.parameterMap – 已經被廢棄了!老式風格的參數映射。內聯參數是首選,這個元 素可能在未來被移除。這裏不會記錄
@5.sql – 能夠重用的 SQL 塊,也能夠被其餘語句引用
@6.insert – 映射插入語句
@7.update – 映射更新語句
@8.delete – 映射刪除語句
@9.select – 映射查詢語句
參數賦值使用這種方式: = #{名稱}
Mybatis的動態SQL查詢
1.if語句
2.choose(when、otherwise)
3.trim(where、set)
4.foreach語句
<if test=」表達式」>
執行內容
</if>
<choose>
<when test=」」>
執行內容
</when>
........
<otherwise>
若是都不知足上述條件,執行內容
</otherwise>
</choose>
多表查詢的時候一般均可以建立一個vo來裝封裝數據。
備註:使用Mybatis的SqlSession對象進行相關操做的時候,都是要先找到MapperStatement語句對應的ID(namespace+sql語句id),因此該ID必須是惟一的。sql語句id能夠相同,可是整個ID不可以徹底相同。ID是一個字符串,由namespace和語句id組成。