生活随笔
收集整理的這篇文章主要介紹了
mybatis_helloword(1)
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
摘錄自:http://blog.csdn.net/y172158950/article/details/16979391
新的項(xiàng)目中用到mybatis,雖然不用自己寫(xiě)ORM的代碼,但是借這個(gè)機(jī)會(huì),學(xué)習(xí)一下。
本章目標(biāo):如題,helloWorld。
方法:在CSDN上下載一個(gè)demo,簡(jiǎn)單修改,能跑起來(lái)就OK。
1. 環(huán)境
? a)用到的jar:mybatis-3.0.5.jar ,MySQL-connector-java-5.0.8-bin.jar (只有一個(gè)jar,是不是很簡(jiǎn)單)
? b)mysql
? c)demo下載路徑:http://download.csdn.net/detail/lihonghua168/3579586#comment
2.demo代碼目錄:
? a)configuration.xml :mysql連接配置;基本就2塊,一個(gè)是數(shù)據(jù)庫(kù)連接配置,二是映射實(shí)體,相關(guān)映射文件。
[html]?view plaincopy
<?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>??????<typeAliases>??????????????<typeAlias?type="com.test.Goods"/>??????</typeAliases>??????<environments?default="development">??????????<environment?id="development">??????????????<transactionManager?type="JDBC"></transactionManager>??????????????<dataSource?type="POOLED">??????????????????<property?name="driver"??????????????????????value="com.mysql.jdbc.Driver"?/>??????????????????<property?name="url"??????????????????????value="jdbc:mysql://127.0.0.1:3306/test"?/>??????????????????<property?name="username"?value="root"?/>??????????????????<property?name="password"?value="root"?/>??????????????</dataSource>??????????</environment>??????</environments>??????<mappers>??????????????????<mapper?resource="com/test/Mapper.xml"?/>??????</mappers>??</configuration>?? ? b)Mapper.xml :sql語(yǔ)句配置文件;sql語(yǔ)句放配置文件,作用不多說(shuō),復(fù)用。
[html]?view plaincopy
<?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.test.Mapper">??????<select?id="selectGood"?parameterType="int"?resultType="Goods">??????????select?*?from?test?where?id?=#{id}??????</select>??????<insert?id="insertGood"?parameterType="com.test.Goods"?useGeneratedKeys="true"?keyProperty="id">????????insert?into?test?(cateId?,?name?,?password?,?price?,?description?,?orderNo?,?updateTime)?values(#{cateId}?,?#{name}?,?#{password}?,?#{price}?,?#{description}?,?#{orderNo}?,?#{updateTime});??????</insert>??????<delete?id="deleteGood"?parameterType="int">??????????delete?from?test?where?id=#{id}??????</delete>??????<update?id="updateGood"?parameterType="com.test.Goods">??????????update?test?set?name=#{name},password=#{password},description=#{description},updateTime=#{updateTime}?where?id=#{id}??????</update>??</mapper>?? ? c)Goods.java :結(jié)果集與表映射類(lèi);和hibernate不同,沒(méi)有哪里寫(xiě)表與實(shí)體的映射關(guān)系(存疑)。
[java]?view plaincopy
package?com.test;??import?java.util.Date;????public?class?Goods?{??????private?long?id;??????private?String?cateId;??????private?String?name;??????private?String?password;??????private?double?price;??????private?String?description;??????private?int?orderNo;??????private?Date?updateTime;????????public?String?getCateId()?{??????????return?cateId;??????}????????public?long?getId()?{??????????return?id;??????}????????public?void?setId(long?id)?{??????????this.id?=?id;??????}????????public?void?setCateId(String?cateId)?{??????????this.cateId?=?cateId;??????}????????public?String?getName()?{??????????return?name;??????}????????public?void?setName(String?name)?{??????????this.name?=?name;??????}????????public?double?getPrice()?{??????????return?price;??????}????????public?void?setPrice(double?price)?{??????????this.price?=?price;??????}????????public?String?getDescription()?{??????????return?description;??????}????????public?void?setDescription(String?description)?{??????????this.description?=?description;??????}????????public?int?getOrderNo()?{??????????return?orderNo;??????}????????public?void?setOrderNo(int?orderNo)?{??????????this.orderNo?=?orderNo;??????}????????public?Date?getUpdateTime()?{??????????return?updateTime;??????}????????public?void?setUpdateTime(Date?updateTime)?{??????????this.updateTime?=?updateTime;??????}????????public?String?getPassword()?{??????????return?password;??????}????????public?void?setPassword(String?password)?{??????????this.password?=?password;??????}??}?? d)Test1.java :dao類(lèi),測(cè)試類(lèi)
[java]?view plaincopy
package?com.test;????import?java.io.IOException;??import?java.io.Reader;??import?java.util.Date;????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?{??????????String?resource?=?"com/test/configuration.xml";????????Reader?reader?=?Resources.getResourceAsReader(resource);????????SqlSessionFactory?sessionFactory?=?new?SqlSessionFactoryBuilder()??????????????????.build(reader);????????SqlSession?session?=?sessionFactory.openSession();????????new?Test1().insert(session);??????}??????????public?void?update(SqlSession?session){??????????int?falg=0;??????????Goods?g=new?Goods();??????????g.setId(1);??????????g.setCateId("2");??????????g.setName("huage");??????????g.setPassword("huage");??????????g.setDescription("He?is?me");??????????g.setUpdateTime(new?Date());??????????falg=session.update("com.test.Mapper.updateGood",?g);??????????session.commit();??????????if(falg==1){??????????????System.out.println("Data?update?successfully!");??????????}else{??????????????System.out.println("Data?update?fail..");??????????}??????????session.close();??????}????????????????public?void?delete(SqlSession?session){??????????????????int?falg=0;??????????falg=session.delete("com.test.Mapper.deleteGood",?1);??????????session.commit();??????????if(falg==1){??????????????System.out.println("Data?delete?successfully!");??????????}else{??????????????System.out.println("Data?dalete?fail..");??????????}??????????session.close();????????????????}????????????????public?void?insert(SqlSession?session){??????????Goods?g=new?Goods();??????????g.setCateId("2");??????????g.setName("huage");??????????g.setPassword("huage");??????????g.setPrice(5);??????????g.setDescription("He?is?me");??????????g.setOrderNo(2);??????????g.setUpdateTime(new?Date());??????????int?flag=0;??????????flag=session.insert("com.test.Mapper.insertGood",g);??????????session.commit();????????if(flag==1){??????????????System.out.println("Data?inserted?successfully!");??????????}else{??????????????System.out.println("Data?inserted?fails!");??????????}??????????session.close();??????}??????????public?void?select(SqlSession?session){??????????try?{??????????????Goods?goods?=?(Goods)?session.selectOne("com.test.Mapper.selectGood",?1);??????????????????????????System.out.println("good?name?is?:?"?+?goods.getName());??????????????System.out.println("description?:="+goods.getDescription());??????????????System.out.println("orderNo?:="+goods.getOrderNo());??????????????System.out.println("price?:="+goods.getPrice());??????????????System.out.println("updateTiem?:="+goods.getUpdateTime());??????????????System.out.println("id?:="+goods.getId());??????????????System.out.println("password?:="+goods.getPassword());??????????????System.out.println("cateid?:="+goods.getCateId());??????????}?catch?(Exception?e)?{???????????????e.printStackTrace();??????????}?finally?{??????????????session.close();??????????}??????}??}?? ?e)Test1.java流程分析
??? i. 通過(guò)Reader類(lèi)讀取configuration.xml類(lèi)容,獲取數(shù)據(jù)庫(kù)連接配置及相關(guān)實(shí)體類(lèi)、sql語(yǔ)句配置信息。
??? ii. 依據(jù)Reader的信息創(chuàng)建SqlSessionFactory。(這2步在實(shí)際工程中調(diào)用一次即可)
??? iii. 創(chuàng)建SqlSession,相當(dāng)于JDBC的Connection
??? iv. insert數(shù)據(jù):封裝了sql語(yǔ)句,封裝了映射過(guò)程(update,remove,select過(guò)程類(lèi)似)
???????? 1)封裝Goods實(shí)體。
???????? 2)調(diào)用session.insert方法:2個(gè)參數(shù),"com.test.Mapper.insertGood“,去Mapper.xml找下,insert語(yǔ)句已經(jīng)寫(xiě)好了;g,實(shí)體
???????? 3)commit,close連接。
? f)數(shù)據(jù)庫(kù)結(jié)果
轉(zhuǎn)載于:https://www.cnblogs.com/haimishasha/p/5710615.html
總結(jié)
以上是生活随笔為你收集整理的mybatis_helloword(1)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。