一痢虹、mybatis簡(jiǎn)介
?MyBatis 是支持普通 SQL 查詢,存儲(chǔ)過程和高級(jí)映射的優(yōu)秀持久層框架歧寺。MyBatis 消除了幾乎所有的 JDBC 代碼和參數(shù)的手工設(shè)置以及結(jié)果集的檢索锅锨。
? ? 1撒穷、 簡(jiǎn)化JDBC的開發(fā)
? ? 2竭鞍、 能夠更好的完成ORM(對(duì)象關(guān)系映射)
二板惑、mybatis原理
1、通過sqlMapConfig.xml配置開發(fā)環(huán)境偎快、事務(wù)配置文件等
2冯乘、通過映射文件UserMapper.xml,將實(shí)體類與數(shù)據(jù)庫表字段相關(guān)聯(lián)
3晒夹、創(chuàng)建SqlSessionFactory 裆馒,加載sqlMapConfig.xml文件
4姊氓、創(chuàng)建SqlSession,操作實(shí)體類
三、入門準(zhǔn)備
1喷好、創(chuàng)建user表
CREATE TABLE user(
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(255),
addrses VARCHAR(255),
age INT
)
INSERT INTO `user` VALUES(NULL, '劉一','北京',28);
INSERT INTO `user` VALUES(NULL, '陳二','上海',32);
INSERT INTO `user` VALUES(NULL, '張三','廣州',26);
?2翔横、創(chuàng)建maven工程mybatis
配置pom.xml文件,引入mybatis所用的依賴包
<dependencies>
<!--添加mysql驅(qū)動(dòng)程序依賴 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.40</version>
</dependency>
<!--添加junit依賴 -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
</dependency>
<!--添加mybatis核心依賴 -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.2.8</version>
</dependency>
<!--添加日志包依賴 -->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
</dependencies>
四梗搅、入門案例
1禾唁、在/mybatis/src/main/resources目錄下創(chuàng)建sqlMapConfig.xml文件
2、在/mybatis/src/main/resources/mapper目錄下配置UserMapper.xml文件
3无切、在/mybatis/src/main/java/mybatis/day01/pojo目錄下創(chuàng)建User實(shí)體類
4荡短、在/mybatis/src/test/java/day01目錄下創(chuàng)建Test1.java測(cè)試類
五、項(xiàng)目目錄
六订雾、映射文件常用標(biāo)簽
1肢预、查詢語句
????<select id="" resultType="" parameterType=""></select>
? ?1)id 為sql的唯一標(biāo)識(shí)
????2)resultType為sql返回值類型
? ? 3)parameterType為sql傳參類型
? ? 注意:屬性名和類名必須一致才能完成映射
2、插入語句
? ? <insert id="" parameterType=""></insert>
3洼哎、更新語句
? ? <update id="" parameterType=""></update>
4烫映、刪除語句
? ? <delete id="" parameterType></delete>
七、擴(kuò)展
1噩峦、別名
????為簡(jiǎn)化開發(fā)锭沟,可以在sqlMapConfig.xml文件中使用typeAliases為需要映射的實(shí)體類全路徑設(shè)置包名
? ????????????????????????????????????????????????????????????????????????????????????????????????????????sqlMapConfig.xml
? ??
????????????????????????????????????????????????????????????????????????????????????????????????????????UserMapperConfig.xml
2、特殊字符
? ? ? xml文件的特殊字符需要用<![CDATA[]]>包起來
? ? ? 如 id < 2 需要寫成?
????????<![CDATA[
? ? ? ? ? ? id < 2
????????]]>
3识补、${} 與 #{}區(qū)別
? ? 推薦使用#{}族淮,原因:${}執(zhí)行底層是Statement ,有sql注入風(fēng)險(xiǎn)凭涂,#{}執(zhí)行底層是PreparedStatement?