




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、使用MyBatis對表執行CRUD操作一、使用MyBatis對表執行CRUD操作基于XML的實現1、定義sql映射xml文件userMapper.xml文件的內容如下:復制代碼 1 <?xml version="1.0" encoding="UTF-8" ?> 2 <!DOCTYPE mapper PUBLIC "-//DTD Mapper 3.0/EN" "/dtd/mybatis-3-mapper.dtd"> 3 <!- 為這
2、個mapper指定一個唯一的namespace,namespace的值習慣上設置成包名+sql映射文件名,這樣就能夠保證namespace的值是唯一的 4 例如namespace="me.gacl.mapping.userMapper"就是me.gacl.mapping(包名)+userMapper(userMapper.xml文件去除后綴) 5 -> 6 <mapper namespace="me.gacl.mapping.userMapper"> 7 <!- 在select標簽中編寫查詢的SQL語句, 設置select標簽的i
3、d屬性為getUser,id屬性值必須是唯一的,不能夠重復 8 使用parameterType屬性指明查詢時使用的參數類型,resultType屬性指明查詢返回的結果集類型 9 resultType="me.gacl.domain.User"就表示將查詢結果封裝成一個User類的對象返回10 User類就是users表所對應的實體類11 ->12 <!- 13 根據id查詢得到一個user對象14 ->15 <select id="getUser" parameterType="int" 16 resultTy
4、pe="me.gacl.domain.User">17 select * from users where id=#id18 </select>19 20 <!- 創建用戶(Create) ->21 <insert id="addUser" parameterType="me.gacl.domain.User">22 insert into users(name,age) values(#name,#age)23 </insert>24 25 <!- 刪除用戶(Remove)
5、 ->26 <delete id="deleteUser" parameterType="int">27 delete from users where id=#id28 </delete>29 30 <!- 修改用戶(Update) ->31 <update id="updateUser" parameterType="me.gacl.domain.User">32 update users set name=#name,age=#age where id=#
6、id33 </update>34 35 <!- 查詢全部用戶->36 <select id="getAllUsers" resultType="me.gacl.domain.User">37 select * from users38 </select>39 40 </mapper>復制代碼單元測試類代碼如下:復制代碼 1 package me.gacl.test; 2 3 import java.util.List; 4 import me.gacl.domain.User; 5 import
7、 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 *
8、映射sql的標識字符串,17 * me.gacl.mapping.userMapper是userMapper.xml文件中mapper標簽的namespace屬性的值,18 * addUser是insert標簽的id屬性值,通過insert標簽的id屬性值就可以找到要執行的SQL19 */20 String statement = "me.gacl.mapping.userMapper.addUser"/映射sql的標識字符串21 User user = new User();22 user.setName("用戶孤傲蒼狼");23 user.setAg
9、e(20);24 /執行插入操作25 int retResult = sqlSession.insert(statement,user);26 /手動提交事務27 /sqlSmit();28 /使用SqlSession執行完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
10、的標識字符串,38 * me.gacl.mapping.userMapper是userMapper.xml文件中mapper標簽的namespace屬性的值,39 * updateUser是update標簽的id屬性值,通過update標簽的id屬性值就可以找到要執行的SQL40 */41 String statement = "me.gacl.mapping.userMapper.updateUser"/映射sql的標識字符串42 User user = new User();43 user.setId(3);44 user.setName("孤傲蒼狼"
11、;);45 user.setAge(25);46 /執行修改操作47 int retResult = sqlSession.update(statement,user);48 /使用SqlSession執行完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的標識字符串,5
12、8 * me.gacl.mapping.userMapper是userMapper.xml文件中mapper標簽的namespace屬性的值,59 * deleteUser是delete標簽的id屬性值,通過delete標簽的id屬性值就可以找到要執行的SQL60 */61 String statement = "me.gacl.mapping.userMapper.deleteUser"/映射sql的標識字符串62 /執行刪除操作63 int retResult = sqlSession.delete(statement,5);64 /使用SqlSession執行完SQL
13、之后需要關閉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
14、標簽的id屬性值就可以找到要執行的SQL76 */77 String statement = "me.gacl.mapping.userMapper.getAllUsers"/映射sql的標識字符串78 /執行查詢操作,將查詢結果自動封裝成List<User>返回79 List<User> lstUsers = sqlSession.selectList(statement);80 /使用SqlSession執行完SQL之后需要關閉SqlSession81 sqlSession.close();82 System.out.println(lstUse
15、rs);83 84 復制代碼二、使用MyBatis對表執行CRUD操作基于注解的實現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.Selec
16、t; 8 import org.apache.ibatis.annotations.Update; 9 10 /*11 * author gacl12 * 定義sql映射的接口,使用注解指明方法要執行的SQL13 */14 public interface UserMapperI 15 16 /使用Insert注解指明add方法要執行的SQL17 Insert("insert into users(name, age) values(#name, #age)")18 public int add(User user);19 20 /使用Delete注解指明deleteByI
17、d方法要執行的SQL21 Delete("delete from users where id=#id")22 public int deleteById(int id);23 24 /使用Update注解指明update方法要執行的SQL25 Update("update users set name=#name,age=#age where id=#id")26 public int update(User user);27 28 /使用Select注解指明getById方法要執行的SQL29 Select("select * from u
18、sers where id=#id")30 public User getById(int id);31 32 /使用Select注解指明getAll方法要執行的SQL33 Select("select * from users")34 public List<User> getAll();35 復制代碼需要說明的是,我們不需要針對UserMapperI接口去編寫具體的實現類代碼,這個具體的實現類由MyBatis幫我們動態構建出來,我們只需要直接拿來使用即可。2、在conf.xml文件中注冊這個映射接口復制代碼 1 <?xml version=&
19、quot;1.0" encoding="UTF-8"?> 2 <!DOCTYPE configuration PUBLIC "-//DTD Config 3.0/EN" "/dtd/mybatis-3-config.dtd"> 3 <configuration> 4 <environments default="development"> 5 <environment id="developm
20、ent"> 6 <transactionManager type="JDBC" /> 7 <!- 配置數據庫連接信息 -> 8 <dataSource type="POOLED"dataSource> 9 <property name="driver" value="com.mysql.jdbc.Driver" />10 <property name="url" value="jdbc:mysql:/localhos
21、t:3306/mybatis" />11 <property name="username" value="root" />12 <property name="password" value="XDP" />13 </dataSource>14 </environment>15 </environments>16 17 <mappers>18 <!- 注冊userMapper.xml文件, 19 userMapper.x
22、ml位于me.gacl.mapping這個包下,所以resource寫成me/gacl/mapping/userMapper.xml->20 <mapper resource="me/gacl/mapping/userMapper.xml"/>21 <!- 注冊UserMapper映射接口->22 <mapper class="me.gacl.mapping.UserMapperI"/>23 </mappers>24 25 </configuration>復制代碼單元測試類的代碼如下:復制
23、代碼 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 t
24、estAdd()14 SqlSession sqlSession = MyBatisUtil.getSqlSession(true);15 /得到UserMapperI接口的實現類對象,UserMapperI接口的實現類對象由sqlSession.getMapper(UserMapperI.class)動態構建出來16 UserMapperI mapper = sqlSession.getMapper(UserMapperI.class);17 User user = new User();18 user.setName("用戶xdp");19 user.setAge(20
25、);20 int add = mapper.add(user);21 /使用SqlSession執行完SQL之后需要關閉SqlSession22 sqlSession.close();23 System.out.println(add);24 25 26 Test27 public void testUpdate()28 SqlSession sqlSession = MyBatisUtil.getSqlSession(true);29 /得到UserMapperI接口的實現類對象,UserMapperI接口的實現類對象由sqlSession.getMapper(UserMapperI.cla
26、ss)動態構建出來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 /執行修改操作36 int retResult = mapper.update(user);37 /使用SqlSession執行完SQL之后需要關閉SqlSession38 sqlSession.close();39 System.out.prin
27、tln(retResult);40 41 42 Test43 public void testDelete()44 SqlSession sqlSession = MyBatisUtil.getSqlSession(true);45 /得到UserMapperI接口的實現類對象,UserMapperI接口的實現類對象由sqlSession.getMapper(UserMapperI.class)動態構建出來46 UserMapperI mapper = sqlSession.getMapper(UserMapperI.class);47 /執行刪除操作48 int retResult = ma
28、pper.deleteById(7);49 /使用SqlSession執行完SQL之后需要關閉SqlSession50 sqlSession.close();51 System.out.println(retResult);52 53 54 Test55 public void testGetUser()56 SqlSession sqlSession = MyBatisUtil.getSqlSession();57 /得到UserMapperI接口的實現類對象,UserMapperI接口的實現類對象由sqlSession.getMapper(UserMapperI.class)動態構建出來5
29、8 UserMapperI mapper = sqlSession.getMapper(UserMapperI.class);59 /執行查詢操作,將查詢結果自動封裝成User返回60 User user = mapper.getById(8);61 /使用SqlSession執行完SQL之后需要關閉SqlSession62 sqlSession.close();63 System.out.println(user);64 65 66 Test67 public void testGetAll()68 SqlSession sqlSession = MyBatisUtil.getSqlSess
30、ion();69 /得到UserMapperI接口的實現類對象,UserMapperI接口的實現類對象由sqlSession.getMapper(UserMapperI.class)動態構建出來70 UserMapperI mapper = sqlSession.getMapper(UserMapperI.class);71 /執行查詢操作,將查詢結果自動封裝成List<User>返回72 List<User> lstUsers = mapper.getAll();73 /使用SqlSession執行完SQL之后需要關閉SqlSession74 sqlSession.close();75 System.out.println(lstUsers);76 77 復制代碼用到的MyBatisUtil工具類代碼如下:復制代碼 1 package me.gacl.util; 2 3 import java.io.
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- TD/T 1007-2003耕地后備資源調查與評價技術規程
- JJG(煙草)21-2021煙草實驗室大氣環境
- 2025初三升高一數學暑假銜接講義25講含答案(必修一內容)5.1 任意角和弧度制
- 考研復習-風景園林基礎考研試題【必刷】附答案詳解
- 風景園林基礎考研資料試題及參考答案詳解【完整版】
- 《風景園林招投標與概預算》試題A附參考答案詳解(奪分金卷)
- 2025-2026年高校教師資格證之《高等教育法規》通關題庫含答案詳解(黃金題型)
- 2024年山東華興機械集團有限責任公司人員招聘筆試備考題庫及答案詳解(基礎+提升)
- 2025年河北省定州市輔警招聘考試試題題庫及1套參考答案詳解
- 12月西安商品房市場月度分析
- 金賽 說明書完整版
- 經濟學思維方式智慧樹知到答案章節測試2023年西安交通大學
- 經濟林栽培學 PPT課件 竹子栽培
- 《格力電器企業內部審計存在的問題及優化對策分析案例(論文)10000字》
- 2023年山東省威海市中考歷史試題
- 2023年江蘇海事職業技術學院招聘筆試題庫及答案解析
- 畢業設計基于單片機的發動機轉速電控系統程序設計及仿真
- 統借統還資金分撥合同
- GB/T 6478-2001冷鐓和冷擠壓用鋼
- GB/T 36148.2-2018船舶與海上技術海上環境保護圍油欄第2部分:強度和性能要求
- 全國高中語文優質課一等獎《雷雨》 課件
評論
0/150
提交評論