




已閱讀5頁,還剩86頁未讀, 繼續(xù)免費閱讀
版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
第一章 MyBatis概述:一、Mybatis介紹MyBatis是一個支持普通SQL查詢,存儲過程和高級映射的優(yōu)秀持久層框架。MyBatis消除了幾乎所有的JDBC代碼和參數(shù)的手工設置以及對結(jié)果集的檢索封裝。MyBatis可以使用簡單的XML或注解用于配置和原始映射,將接口和Java的POJO(Plain Old Java Objects,普通的Java對象)映射成數(shù)據(jù)庫中的記錄。二、mybatis快速入門2.1、準備開發(fā)環(huán)境1、創(chuàng)建測試項目,普通java項目或者是JavaWeb項目均可,如下圖所示:2、添加相應的jar包【mybatis】 mybatis-3.1.1.jar【MYSQL驅(qū)動包】mysql-connector-java-5.1.7-bin.jar3、創(chuàng)建數(shù)據(jù)庫和表,針對MySQL數(shù)據(jù)庫SQL腳本如下:1 create database mybatis;2 use mybatis;3 CREATE TABLE users(id INT PRIMARY KEY AUTO_INCREMENT, NAME VARCHAR(20), age INT);4 INSERT INTO users(NAME, age) VALUES(孤傲蒼狼, 27);5 INSERT INTO users(NAME, age) VALUES(白虎神皇, 27);將SQL腳本在MySQL數(shù)據(jù)庫中執(zhí)行,完成創(chuàng)建數(shù)據(jù)庫和表的操作,如下:到此,前期的開發(fā)環(huán)境準備工作全部完成。2.2、使用MyBatis查詢表中的數(shù)據(jù)1、添加Mybatis的配置文件conf.xml在src目錄下創(chuàng)建一個conf.xml文件,如下圖所示:conf.xml文件中的內(nèi)容如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 2、定義表所對應的實體類,如下圖所示:User類的代碼如下: 1 package me.gacl.domain; 2 3 /* 4 * author gacl 5 * users表所對應的實體類 6 */ 7 public class User 8 9 /實體類的屬性和表的字段名稱一一對應10 private int id;11 private String name;12 private int age;13 14 public int getId() 15 return id;16 17 18 public void setId(int id) 19 this.id = id;20 21 22 public String getName() 23 return name;24 25 26 public void setName(String name) 27 = name;28 29 30 public int getAge() 31 return age;32 33 34 public void setAge(int age) 35 this.age = age;36 37 38 Override39 public String toString() 40 return User id= + id + , name= + name + , age= + age + ;41 42 3、定義操作users表的sql映射文件userMapper.xml創(chuàng)建一個me.gacl.mapping包,專門用于存放sql映射文件,在包中創(chuàng)建一個userMapper.xml文件,如下圖所示:userMapper.xml文件的內(nèi)容如下: 1 2 3 6 7 12 15 17 select * from users where id=#id18 19 4、在conf.xml文件中注冊userMapper.xml文件 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 20 21 22 23 5、編寫測試代碼:執(zhí)行定義的select語句創(chuàng)建一個Test1類,編寫如下的測試代碼:package me.gacl.test;import java.io.IOException;import java.io.InputStream;import java.io.Reader;import me.gacl.domain.User;import org.apache.ibatis.io.Resources;import org.apache.ibatis.session.SqlSession;import org.apache.ibatis.session.SqlSessionFactory;import org.apache.ibatis.session.SqlSessionFactoryBuilder;public class Test1 public static void main(String args) throws IOException /mybatis的配置文件 String resource = conf.xml; /使用類加載器加載mybatis的配置文件(它也加載關聯(lián)的映射文件) InputStream is = Test1.class.getClassLoader().getResourceAsStream(resource); /構(gòu)建sqlSession的工廠 SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(is); /使用MyBatis提供的Resources類加載mybatis的配置文件(它也加載關聯(lián)的映射文件) /Reader reader = Resources.getResourceAsReader(resource); /構(gòu)建sqlSession的工廠 /SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader); /創(chuàng)建能執(zhí)行映射文件中sql的sqlSession SqlSession session = sessionFactory.openSession(); /* * 映射sql的標識字符串, * me.gacl.mapping.userMapper是userMapper.xml文件中mapper標簽的namespace屬性的值, * getUser是select標簽的id屬性值,通過select標簽的id屬性值就可以找到要執(zhí)行的SQL */ String statement = me.gacl.mapping.userMapper.getUser;/映射sql的標識字符串 /執(zhí)行查詢返回一個唯一user對象的sql User user = session.selectOne(statement, 1); System.out.println(user); 執(zhí)行結(jié)果如下:可以看到,數(shù)據(jù)庫中的記錄已經(jīng)成功查詢出來了。第二章 使用MyBatis對表執(zhí)行CRUD操作我們講了如何使用Mybatis查詢users表中的數(shù)據(jù),算是對MyBatis有一個初步的入門了,今天講解一下如何使用MyBatis對users表執(zhí)行CRUD操作。本文中使用到的測試環(huán)境是上一篇博文中的測試環(huán)境。一、使用MyBatis對表執(zhí)行CRUD操作基于XML的實現(xiàn)1、定義sql映射xml文件userMapper.xml文件的內(nèi)容如下: 1 2 3 6 7 12 15 17 select * from users where id=#id18 19 20 21 22 insert into users(name,age) values(#name,#age)23 24 25 26 27 delete from users where id=#id28 29 30 31 32 update users set name=#name,age=#age where id=#id33 34 35 36 37 select * from users38 39 40 單元測試類代碼如下: 1 package me.gacl.test; 2 3 import java.util.List; 4 import me.gacl.domain.User; 5 import me.gacl.util.MyBatisUtil; 6 import org.apache.ibatis.session.SqlSession; 7 import org.junit.Test; 8 9 public class TestCRUDByXmlMapper 10 11 Test12 public void testAdd()13 /SqlSession sqlSession = MyBatisUtil.getSqlSession(false);14 SqlSession sqlSession = MyBatisUtil.getSqlSession(true);15 /*16 * 映射sql的標識字符串,17 * me.gacl.mapping.userMapper是userMapper.xml文件中mapper標簽的namespace屬性的值,18 * addUser是insert標簽的id屬性值,通過insert標簽的id屬性值就可以找到要執(zhí)行的SQL19 */20 String statement = me.gacl.mapping.userMapper.addUser;/映射sql的標識字符串21 User user = new User();22 user.setName(用戶孤傲蒼狼);23 user.setAge(20);24 /執(zhí)行插入操作25 int retResult = sqlSession.insert(statement,user);26 /手動提交事務27 /sqlSmit();28 /使用SqlSession執(zhí)行完SQL之后需要關閉SqlSession29 sqlSession.close();30 System.out.println(retResult);31 32 33 Test34 public void testUpdate()35 SqlSession sqlSession = MyBatisUtil.getSqlSession(true);36 /*37 * 映射sql的標識字符串,38 * me.gacl.mapping.userMapper是userMapper.xml文件中mapper標簽的namespace屬性的值,39 * updateUser是update標簽的id屬性值,通過update標簽的id屬性值就可以找到要執(zhí)行的SQL40 */41 String statement = me.gacl.mapping.userMapper.updateUser;/映射sql的標識字符串42 User user = new User();43 user.setId(3);44 user.setName(孤傲蒼狼);45 user.setAge(25);46 /執(zhí)行修改操作47 int retResult = sqlSession.update(statement,user);48 /使用SqlSession執(zhí)行完SQL之后需要關閉SqlSession49 sqlSession.close();50 System.out.println(retResult);51 52 53 Test54 public void testDelete()55 SqlSession sqlSession = MyBatisUtil.getSqlSession(true);56 /*57 * 映射sql的標識字符串,58 * me.gacl.mapping.userMapper是userMapper.xml文件中mapper標簽的namespace屬性的值,59 * deleteUser是delete標簽的id屬性值,通過delete標簽的id屬性值就可以找到要執(zhí)行的SQL60 */61 String statement = me.gacl.mapping.userMapper.deleteUser;/映射sql的標識字符串62 /執(zhí)行刪除操作63 int retResult = sqlSession.delete(statement,5);64 /使用SqlSession執(zhí)行完SQL之后需要關閉SqlSession65 sqlSession.close();66 System.out.println(retResult);67 68 69 Test70 public void testGetAll()71 SqlSession sqlSession = MyBatisUtil.getSqlSession();72 /*73 * 映射sql的標識字符串,74 * me.gacl.mapping.userMapper是userMapper.xml文件中mapper標簽的namespace屬性的值,75 * getAllUsers是select標簽的id屬性值,通過select標簽的id屬性值就可以找到要執(zhí)行的SQL76 */77 String statement = me.gacl.mapping.userMapper.getAllUsers;/映射sql的標識字符串78 /執(zhí)行查詢操作,將查詢結(jié)果自動封裝成List返回79 List lstUsers = sqlSession.selectList(statement);80 /使用SqlSession執(zhí)行完SQL之后需要關閉SqlSession81 sqlSession.close();82 System.out.println(lstUsers);83 84 二、使用MyBatis對表執(zhí)行CRUD操作基于注解的實現(xiàn)1、定義sql映射的接口UserMapperI接口的代碼如下: 1 package me.gacl.mapping; 2 3 import java.util.List; 4 import me.gacl.domain.User; 5 import org.apache.ibatis.annotations.Delete; 6 import org.apache.ibatis.annotations.Insert; 7 import org.apache.ibatis.annotations.Select; 8 import org.apache.ibatis.annotations.Update; 9 10 /*11 * author gacl12 * 定義sql映射的接口,使用注解指明方法要執(zhí)行的SQL13 */14 public interface UserMapperI 15 16 /使用Insert注解指明add方法要執(zhí)行的SQL17 Insert(insert into users(name, age) values(#name, #age)18 public int add(User user);19 20 /使用Delete注解指明deleteById方法要執(zhí)行的SQL21 Delete(delete from users where id=#id)22 public int deleteById(int id);23 24 /使用Update注解指明update方法要執(zhí)行的SQL25 Update(update users set name=#name,age=#age where id=#id)26 public int update(User user);27 28 /使用Select注解指明getById方法要執(zhí)行的SQL29 Select(select * from users where id=#id)30 public User getById(int id);31 32 /使用Select注解指明getAll方法要執(zhí)行的SQL33 Select(select * from users)34 public List getAll();35 需要說明的是,我們不需要針對UserMapperI接口去編寫具體的實現(xiàn)類代碼,這個具體的實現(xiàn)類由MyBatis幫我們動態(tài)構(gòu)建出來,我們只需要直接拿來使用即可。2、在conf.xml文件中注冊這個映射接口 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 20 21 22 23 24 25 單元測試類的代碼如下: 1 package me.gacl.test; 2 3 import java.util.List; 4 import me.gacl.domain.User; 5 import me.gacl.mapping.UserMapperI; 6 import me.gacl.util.MyBatisUtil; 7 import org.apache.ibatis.session.SqlSession; 8 import org.junit.Test; 9 10 public class TestCRUDByAnnotationMapper 11 12 Test13 public void testAdd()14 SqlSession sqlSession = MyBatisUtil.getSqlSession(true);15 /得到UserMapperI接口的實現(xiàn)類對象,UserMapperI接口的實現(xiàn)類對象由sqlSession.getMapper(UserMapperI.class)動態(tài)構(gòu)建出來16 UserMapperI mapper = sqlSession.getMapper(UserMapperI.class);17 User user = new User();18 user.setName(用戶xdp);19 user.setAge(20);20 int add = mapper.add(user);21 /使用SqlSession執(zhí)行完SQL之后需要關閉SqlSession22 sqlSession.close();23 System.out.println(add);24 25 26 Test27 public void testUpdate()28 SqlSession sqlSession = MyBatisUtil.getSqlSession(true);29 /得到UserMapperI接口的實現(xiàn)類對象,UserMapperI接口的實現(xiàn)類對象由sqlSession.getMapper(UserMapperI.class)動態(tài)構(gòu)建出來30 UserMapperI mapper = sqlSession.getMapper(UserMapperI.class);31 User user = new User();32 user.setId(3);33 user.setName(孤傲蒼狼_xdp);34 user.setAge(26);35 /執(zhí)行修改操作36 int retResult = mapper.update(user);37 /使用SqlSession執(zhí)行完SQL之后需要關閉SqlSession38 sqlSession.close();39 System.out.println(retResult);40 41 42 Test43 public void testDelete()44 SqlSession sqlSession = MyBatisUtil.getSqlSession(true);45 /得到UserMapperI接口的實現(xiàn)類對象,UserMapperI接口的實現(xiàn)類對象由sqlSession.getMapper(UserMapperI.class)動態(tài)構(gòu)建出來46 UserMapperI mapper = sqlSession.getMapper(UserMapperI.class);47 /執(zhí)行刪除操作48 int retResult = mapper.deleteById(7);49 /使用SqlSession執(zhí)行完SQL之后需要關閉SqlSession50 sqlSession.close();51 System.out.println(retResult);52 53 54 Test55 public void testGetUser()56 SqlSession sqlSession = MyBatisUtil.getSqlSession();57 /得到UserMapperI接口的實現(xiàn)類對象,UserMapperI接口的實現(xiàn)類對象由sqlSession.getMapper(UserMapperI.class)動態(tài)構(gòu)建出來58 UserMapperI mapper = sqlSession.getMapper(UserMapperI.class);59 /執(zhí)行查詢操作,將查詢結(jié)果自動封裝成User返回60 User user = mapper.getById(8);61 /使用SqlSession執(zhí)行完SQL之后需要關閉SqlSession62 sqlSession.close();63 System.out.println(user);64 65 66 Test67 public void testGetAll()68 SqlSession sqlSession = MyBatisUtil.getSqlSession();69 /得到UserMapperI接口的實現(xiàn)類對象,UserMapperI接口的實現(xiàn)類對象由sqlSession.getMapper(UserMapperI.class)動態(tài)構(gòu)建出來70 UserMapperI mapper = sqlSession.getMapper(UserMapperI.class);71 /執(zhí)行查詢操作,將查詢結(jié)果自動封裝成List返回72 List lstUsers = mapper.getAll();73 /使用SqlSession執(zhí)行完SQL之后需要關閉SqlSession74 sqlSession.close();75 System.out.println(lstUsers);76 77 用到的MyBatisUtil工具類代碼如下: 1 package me.gacl.util; 2 3 import java.io.InputStream; 4 5 import org.apache.ibatis.session.SqlSession; 6 import org.apache.ibatis.session.SqlSessionFactory; 7 import org.apache.ibatis.session.SqlSessionFactoryBuilder; 8 9 public class MyBatisUtil 10 11 /*12 * 獲取SqlSessionFactory13 * return SqlSessionFactory14 */15 public static SqlSessionFactory getSqlSessionFactory() 16 String resource = conf.xml;17 InputStream is = MyBatisUtil.class.getClassLoader().getResourceAsStream(resource)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 滁州城市職業(yè)學院《普通物理專題》2023-2024學年第一學期期末試卷
- 上海市浦東實驗2025屆高一化學第二學期期末檢測試題含解析
- 上海市上戲附中2025屆高一下化學期末教學質(zhì)量檢測模擬試題含解析
- 農(nóng)機中心制度管理辦法
- 合肥建設行業(yè)管理辦法
- 殯葬服務租賃管理辦法
- 村級代管資金管理辦法
- 超高壓擠包直流電纜絕緣系統(tǒng)技術難點及解決方案研究
- 華為薪資待遇管理辦法
- 數(shù)據(jù)安全策略-第2篇-洞察及研究
- ASTM-D3359-(附著力測試標準)-中文版
- 石嘴山市直機關遴選公務員筆試真題2022
- 吉林省吉林市亞橋中學2023-2024學年七年級下學期期末考試數(shù)學試卷
- 貴州省貴陽市南明區(qū)2023-2024學年四年級下學期期末數(shù)學質(zhì)量監(jiān)測
- DL-T5706-2014火力發(fā)電工程施工組織設計導則
- 2024-2030年殷瓦鋼行業(yè)市場現(xiàn)狀供需分析及重點企業(yè)投資評估規(guī)劃分析研究報告
- 第一目擊者理論考試題題庫110題
- 2024年縣鄉(xiāng)教師選調(diào)進城考試《教育學》題庫附答案【綜合卷】
- 2022智慧健康養(yǎng)老服務與管理專業(yè)人才培養(yǎng)調(diào)研報告
- 機動車駕駛員安全教育培訓課件
- 三坐標檢測報告樣本
評論
0/150
提交評論