創(chuàng)建maven項(xiàng)目叹阔,并分別添加依賴师妙,junit诗祸,mysql血久,mybatis(3.4.6)
-
在resouces下創(chuàng)建mybatis的配置文件
<?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> <environments default="development"> <environment id="development"> <transactionManager type="JDBC"/> <dataSource type="POOLED"> <property name="driver" value="com.mysql.cj.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost:3307/mysqls?serverTimezone=UTC"/> <property name="username" value="root"/> <property name="password" value="LKT981016"/> </dataSource> </environment> </environments> <mappers> <mapper resource="com/pojo/UsersMapper.xml"/> </mappers> </configuration>
-
數(shù)據(jù)庫文件 db.sql
CREATE TABLE `user` ( `uid` int(11) NOT NULL AUTO_INCREMENT, `username` varchar(20) NOT NULL, `password` varchar(20) NOT NULL, `age` int(11) DEFAULT NULL, `addr` varchar(50) DEFAULT NULL, PRIMARY KEY (`uid`), UNIQUE KEY `username` (`username`) ) ENGINE=InnoDB AUTO_INCREMENT=17 DEFAULT CHARSET=latin1
-
JavaBean文件 User.java
public class User { private int uid; private String username; private String password; private int age; private String addr; public int getUid() { return uid; } public void setUid(int uid) { this.uid = uid; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getAddr() { return addr; } public void setAddr(String addr) { this.addr = addr; } @Override public String toString() { final StringBuffer sb = new StringBuffer("User{"); sb.append("uid=").append(uid); sb.append(", username='").append(username).append('\''); sb.append(", password='").append(password).append('\''); sb.append(", age=").append(age); sb.append(", addr='").append(addr).append('\''); sb.append('}'); return sb.toString(); } }
-
在com.pojo的包下創(chuàng)建UserMapper.xml文件
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.qfedu.pojo.UserMapper"> <select id="selectUser" resultType="com.qfedu.pojo.User"> select * from user </select> <select id="selectUserCount" resultType="int"> select count(1) from user; </select> <select id="selectUsersByPage1" resultType="com.qfedu.pojo.User"> select * from user limit 3 </select> <select id="selectUsersByPage2" resultType="com.qfedu.pojo.User"> select * from user limit #{pageSize} </select> <select id="selectUsersByPage3" resultType="com.qfedu.pojo.User"> select * from user limit #{startIndex}, #{pageSize} </select> <delete id="saveUser"> insert into user values(null, #{username}, #{password}, #{age}, #{addr}); </delete> <delete id="deleteUserByUid"> delete from user where uid = #{uid} </delete> <update id="updateUser"> update user set username= #{username}, password=#{password}, age = #{age}, addr = #{addr} where uid = #{uid}; </update> </mapper>
-
測試類 TestUser.java
public class TestUser { private SqlSessionFactory sf = null; private SqlSession session = null; @Before public void setUp(){ try { sf = new SqlSessionFactoryBuilder().build(Resources.getResourceAsStream("mybatis.xml")); session = sf.openSession(true); } catch (IOException e) { e.printStackTrace(); } } @After public void tearDown(){ if(session != null){ session.close(); session = null; } } @Test public void testGetAllUsers(){ List<User> users = session.selectList("com.pojo.UserMapper.selectUser"); for (User u : users) { System.out.println(u); } } @Test public void testGetAllUsersCount(){ Integer count = session.selectOne("com.pojo.UserMapper.selectUserCount"); System.out.println(count); } @Test public void testGetUsersByPage1(){ List<User> users = session.selectList("com.pojo.UserMapper.selectUsersByPage1"); for (User u : users) { System.out.println(u); } } @Test public void testGetUsersByPage2(){ List<User> users = session.selectList("com.pojo.UserMapper.selectUsersByPage2", 9); for (User u : users) { System.out.println(u); } } @Test public void testGetUsersByPage3(){ Map<String, Integer> map = new HashMap<>(); map.put("startIndex", 10); map.put("pageSize", 5); List<User> users = session.selectList("com.pojo.UserMapper.selectUsersByPage3", map); for (User u : users) { System.out.println(u); } } @Test public void testSaveUser(){ User u = new User(); u.setUsername("lkt"); u.setPassword("888888"); u.setAddr("suzhou"); u.setAge(20); int result = session.insert("com.pojo.UserMapper.saveUser", u); System.out.println(result); } }
-
注意事項(xiàng)
-
UserMapper的映射文件:
- namespace和id在整個(gè)項(xiàng)目中突照,必須要保證唯一
- namespace+id找到的是唯一的sql語句,標(biāo)簽可能不對應(yīng)洋魂,但是不影響執(zhí)行結(jié)果绷旗,但是還是需要規(guī)范各個(gè)標(biāo)簽
-
TestUser.java
- 創(chuàng)建SqlSession對象的時(shí)候,SqlSessionFactory對象的openSession()方法不包含參數(shù)副砍,則使用事務(wù)手動提交衔肢,做完增刪改操作后,需要調(diào)用SqlSession對象的commit()方法完成事務(wù)的提交豁翎。如果openSession()方法包含有一個(gè)true角骤,代表自動提交生效,我們做完增刪改操作時(shí)候心剥,就完成了對應(yīng)的增刪改功能邦尊。openSession()方法默認(rèn)的提交方式為手動提交
- 該類活用了junit的生命周期方法,每個(gè)測試方法執(zhí)行之前都會調(diào)用標(biāo)注有@Before注解的setUp()方法完成環(huán)境的準(zhǔn)備工作优烧,每個(gè)方法完成之后都自動的執(zhí)行標(biāo)注有@After注解的tearDown()方法完成資源的釋放工作
- SqlSession是mybatis中的核心對象蝉揍,使用該對象即可完成對于所有操作的crud功能,里面有對應(yīng)的方法畦娄,selectList()又沾,查詢列表(集合)弊仪,selectOne()查詢單個(gè)對象,insert()杖刷,delete励饵,update()分別對應(yīng)增刪改功能。這三個(gè)方法的返回值均為受影響的行數(shù)
- 每次使用完SqlSession對象之后滑燃,使用close()方法將SqlSession對象關(guān)閉役听,不建議關(guān)閉SqlSessionFactory對象
- 關(guān)于傳遞參數(shù)
- 傳遞單個(gè)值,sql語句里面的占位符可以任意寫
- 多個(gè)值表窘,可以使用Map來傳值典予,map中的key要與sql語句中的占位符一致
- 對象傳值,sql語句中的字段值與對象的屬性名一致
- 零散值的傳遞乐严,可以使用兩種方式arg0熙参, arg1,...或者param1麦备,param2...
-
MyBatis的單表的CRUD
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
- 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來霎终,“玉大人滞磺,你說我怎么就攤上這事±嘲” “怎么了击困?”我有些...
- 文/不壞的土叔 我叫張陵,是天一觀的道長广凸。 經(jīng)常有香客問我阅茶,道長,這世上最難降的妖魔是什么谅海? 我笑而不...
- 正文 為了忘掉前任脸哀,我火速辦了婚禮,結(jié)果婚禮上扭吁,老公的妹妹穿的比我還像新娘撞蜂。我一直安慰自己盲镶,他們只是感情好,可當(dāng)我...
- 文/花漫 我一把揭開白布谅摄。 她就那樣靜靜地躺著徒河,像睡著了一般。 火紅的嫁衣襯著肌膚如雪送漠。 梳的紋絲不亂的頭發(fā)上顽照,一...
- 文/蒼蘭香墨 我猛地睜開眼涎永,長吁一口氣:“原來是場噩夢啊……” “哼思币!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起羡微,我...
- 序言:老撾萬榮一對情侶失蹤谷饿,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后妈倔,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體博投,經(jīng)...
- 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
- 正文 我和宋清朗相戀三年盯蝴,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了毅哗。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
- 正文 年R本政府宣布,位于F島的核電站鸣峭,受9級特大地震影響宏所,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜摊溶,卻給世界環(huán)境...
- 文/蒙蒙 一爬骤、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧莫换,春花似錦霞玄、人聲如沸骤铃。這莊子的主人今日做“春日...
- 文/蒼蘭香墨 我抬頭看了看天上的太陽惰爬。三九已至,卻和暖如春惫企,著一層夾襖步出監(jiān)牢的瞬間撕瞧,已是汗流浹背。 一陣腳步聲響...
- 正文 我出身青樓偏序,卻偏偏與公主長得像页畦,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子研儒,可洞房花燭夜當(dāng)晚...
推薦閱讀更多精彩內(nèi)容
- MyBatis的單表的crud 創(chuàng)建maven項(xiàng)目豫缨,并分別添加依賴,junit端朵,mysql州胳,mybatis(3.4...
- 一、MyBatis簡介 MyBatis 是一款優(yōu)秀的持久層框架逸月,它支持自定義 SQL、存儲過程以及高級映射遍膜。 My...
- 1.添加mybatis的依賴瓢颅,目前版本是3.4.6恩尾,除此之外還有junit和mysql的驅(qū)動依賴分別引入進(jìn)來 <?...
- 首先在pom.xml中添加依賴 <dependency><groupId>org.mybatis</groupId...