mybatis第一天課堂筆記_第1頁(yè)
mybatis第一天課堂筆記_第2頁(yè)
mybatis第一天課堂筆記_第3頁(yè)
mybatis第一天課堂筆記_第4頁(yè)
mybatis第一天課堂筆記_第5頁(yè)
已閱讀5頁(yè),還剩45頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

mybatis第一天mybatis的基礎(chǔ)知識(shí)課程安排:mybatis和springmvc通過(guò)訂單商品案例驅(qū)動(dòng)第一天:基礎(chǔ)知識(shí)(重點(diǎn),內(nèi)容量多) 對(duì)原生態(tài)jdbc程序(單獨(dú)使用jdbc開發(fā))問題總結(jié) mybatis框架原理 (掌握) mybatis入門程序 用戶的增、刪、改、查 mybatis開發(fā)dao兩種方法: 原始dao開發(fā)方法(程序需要編寫dao接口和dao實(shí)現(xiàn)類)(掌握) mybaits的mapper接口(相當(dāng)于dao接口)代理開發(fā)方法(掌握) mybatis配置文件SqlMapConfig.xml mybatis核心: mybatis輸入映射(掌握) mybatis輸出映射(掌握) mybatis的動(dòng)態(tài)sql(掌握) 第二天:高級(jí)知識(shí) 訂單商品數(shù)據(jù)模型分析 高級(jí)結(jié)果集映射(一對(duì)一、一對(duì)多、多對(duì)多) mybatis延遲加載 mybatis查詢緩存(一級(jí)緩存、二級(jí)緩存) mybaits和spring進(jìn)行整合(掌握) mybatis逆向工程對(duì)原生態(tài)jdbc程序中問題總結(jié)環(huán)境eclipse:indigomysql:5.1創(chuàng)建mysql數(shù)據(jù)導(dǎo)入下邊的腳本:sql_table.sql:記錄表結(jié)構(gòu)sql_data.sql:記錄測(cè)試數(shù)據(jù),在實(shí)際企業(yè)開發(fā)中,最后提供一個(gè)初始化數(shù)據(jù)腳本jdbc程序使用jdbc查詢mysql數(shù)據(jù)庫(kù)中用戶表的記錄。創(chuàng)建java工程,加入jar包:數(shù)據(jù)庫(kù)驅(qū)動(dòng)包(mysql5.1)上邊的是mysql驅(qū)動(dòng)。下邊的是oracle的驅(qū)動(dòng)。程序代碼:?jiǎn)栴}總結(jié)1、數(shù)據(jù)庫(kù)連接,使用時(shí)就創(chuàng)建,不使用立即釋放,對(duì)數(shù)據(jù)庫(kù)進(jìn)行頻繁連接開啟和關(guān)閉,造成數(shù)據(jù)庫(kù)資源浪費(fèi),影響數(shù)據(jù)庫(kù)性能。設(shè)想:使用數(shù)據(jù)庫(kù)連接池管理數(shù)據(jù)庫(kù)連接。2、將sql語(yǔ)句硬編碼到j(luò)ava代碼中,如果sql語(yǔ)句修改,需要重新編譯java代碼,不利于系統(tǒng)維護(hù)。設(shè)想:將sql語(yǔ)句配置在xml配置文件中,即使sql變化,不需要對(duì)java代碼進(jìn)行重新編譯。3、向preparedStatement中設(shè)置參數(shù),對(duì)占位符號(hào)位置和設(shè)置參數(shù)值,硬編碼在java代碼中,不利于系統(tǒng)維護(hù)。設(shè)想:將sql語(yǔ)句及占位符號(hào)和參數(shù)全部配置在xml中。4、從resutSet中遍歷結(jié)果集數(shù)據(jù)時(shí),存在硬編碼,將獲取表的字段進(jìn)行硬編碼,,不利于系統(tǒng)維護(hù)。設(shè)想:將查詢的結(jié)果集,自動(dòng)映射成java對(duì)象。mybatis框架mybatis是什么?mybatis是一個(gè)持久層的框架,是apache下的頂級(jí)項(xiàng)目。mybatis托管到goolecode下,再后來(lái)托管到github下(/mybatis/mybatis-3/releases)。mybatis讓程序?qū)⒅饕Ψ旁趕ql上,通過(guò)mybatis提供的映射方式,自由靈活生成(半自動(dòng)化,大部分需要程序員編寫sql)滿足需要sql語(yǔ)句。mybatis可以將向preparedStatement中的輸入?yún)?shù)自動(dòng)進(jìn)行輸入映射,將查詢結(jié)果集靈活映射成java對(duì)象。(輸出映射)mybatis框架SqlMapConfig.xml(是mybatis的全局配置文件,名稱不固定的)SqlMapConfig.xml(是mybatis的全局配置文件,名稱不固定的)配置了數(shù)據(jù)源、事務(wù)等mybatis運(yùn)行環(huán)境配置映射文件(配置sql語(yǔ)句)mapper.xml(映射文件)、mapper.xml、mapper.xml.....SqlSessionFactory(會(huì)話工廠),根據(jù)配置文件創(chuàng)建工廠作用:創(chuàng)建SqlSessionmsyqlSqlSession(會(huì)話),是一個(gè)接口,面向用戶(程序員)的接口作用:操作數(shù)據(jù)庫(kù)(發(fā)出sql增、刪、改、查)Executor(執(zhí)行器),是一個(gè)接口(基本執(zhí)行器、緩存執(zhí)行器)作用:SqlSession內(nèi)部通過(guò)執(zhí)行器操作數(shù)據(jù)庫(kù)mappedstatement(底層封裝對(duì)象)作用:對(duì)操作數(shù)據(jù)庫(kù)存儲(chǔ)封裝,包括sql語(yǔ)句,輸入?yún)?shù)、輸出結(jié)果類型輸入?yún)?shù)類型java簡(jiǎn)單類型hashmappojo自定義輸出結(jié)果類型java簡(jiǎn)單類型hashmappojo自定義入門程序需求根據(jù)用戶id(主鍵)查詢用戶信息根據(jù)用戶名稱模糊查詢用戶信息添加用戶刪除用戶更新用戶環(huán)境eclipse:indigomysql:5.1mybatis運(yùn)行環(huán)境(jar包):從/mybatis/mybatis-3/releases下載,3.2.7版本lib下:依賴包mybatis-3.2.7.jar:核心包mybatis-3.2.7.pdf,操作指南加入mysql的驅(qū)動(dòng)包perties工程結(jié)構(gòu)SqlMapConfig.xml配置mybatis的運(yùn)行環(huán)境,數(shù)據(jù)源、事務(wù)等。根據(jù)用戶id(主鍵)查詢用戶信息創(chuàng)建po類映射文件映射文件命名:User.xml(原始ibatis命名),mapper代理開發(fā)映射文件名稱叫XXXMapper.xml,比如:UserMapper.xml、ItemsMapper.xml在映射文件中配置sql語(yǔ)句。在SqlMapConfig.xml加載映射文件在sqlMapConfig.xml中加載User.xml:程序編寫根據(jù)用戶名稱模糊查詢用戶信息映射文件使用User.xml,添加根據(jù)用戶名稱模糊查詢用戶信息的sql語(yǔ)句。程序代碼添加用戶映射文件在User.xml中配置添加用戶的Statement程序代碼自增主鍵返回mysql自增主鍵,執(zhí)行insert提交之前自動(dòng)生成一個(gè)自增主鍵。通過(guò)mysql函數(shù)獲取到剛插入記錄的自增主鍵:LAST_INSERT_ID()是insert之后調(diào)用此函數(shù)。修改insertUser定義:非自增主鍵返回(使用uuid())使用mysql的uuid()函數(shù)生成主鍵,需要修改表中id字段類型為string,長(zhǎng)度設(shè)置成35位。執(zhí)行思路:先通過(guò)uuid()查詢到主鍵,將主鍵輸入到sql語(yǔ)句中。執(zhí)行uuid()語(yǔ)句順序相對(duì)于insert語(yǔ)句之前執(zhí)行。通過(guò)oracle的序列生成主鍵:<selectKeykeyProperty="id"order="BEFORE"resultType="java.lang.String"> SELECT序列名.nextval() </selectKey> insertintouser(id,username,birthday,sex,address)value(#{id},#{username},#{birthday},#{sex},#{address})刪除用戶映射文件代碼:更新用戶映射文件代碼總結(jié)parameterType在映射文件中通過(guò)parameterType指定輸入?yún)?shù)的類型。resultType在映射文件中通過(guò)resultType指定輸出結(jié)果的類型。#{}和${}#{}表示一個(gè)占位符號(hào),#{}接收輸入?yún)?shù),類型可以是簡(jiǎn)單類型,pojo、hashmap。如果接收簡(jiǎn)單類型,#{}中可以寫成value或其它名稱。#{}接收pojo對(duì)象值,通過(guò)OGNL讀取對(duì)象中的屬性值,通過(guò)屬性.屬性.屬性...的方式獲取對(duì)象屬性值。${}表示一個(gè)拼接符號(hào),會(huì)引用sql注入,所以不建議使用${}。${}接收輸入?yún)?shù),類型可以是簡(jiǎn)單類型,pojo、hashmap。如果接收簡(jiǎn)單類型,${}中只能寫成value。${}接收pojo對(duì)象值,通過(guò)OGNL讀取對(duì)象中的屬性值,通過(guò)屬性.屬性.屬性...的方式獲取對(duì)象屬性值。selectOne和selectListselectOne表示查詢出一條記錄進(jìn)行映射。如果使用selectOne可以實(shí)現(xiàn)使用selectList也可以實(shí)現(xiàn)(list中只有一個(gè)對(duì)象)。selectList表示查詢出一個(gè)列表(多條記錄)進(jìn)行映射。如果使用selectList查詢多條記錄,不能使用selectOne。如果使用selectOne報(bào)錯(cuò):org.apache.ibatis.exceptions.TooManyResultsException:Expectedoneresult(ornull)tobereturnedbyselectOne(),butfound:4 mybatis和hibernate本質(zhì)區(qū)別和應(yīng)用場(chǎng)景hibernate:是一個(gè)標(biāo)準(zhǔn)ORM框架(對(duì)象關(guān)系映射)。入門門檻較高的,不需要程序?qū)憇ql,sql語(yǔ)句自動(dòng)生成了。對(duì)sql語(yǔ)句進(jìn)行優(yōu)化、修改比較困難的。應(yīng)用場(chǎng)景: 適用與需求變化不多的中小型項(xiàng)目,比如:后臺(tái)管理系統(tǒng),erp、orm、oa。。mybatis:專注是sql本身,需要程序員自己編寫sql語(yǔ)句,sql修改、優(yōu)化比較方便。mybatis是一個(gè)不完全的ORM框架,雖然程序員自己寫sql,mybatis也可以實(shí)現(xiàn)映射(輸入映射、輸出映射)。應(yīng)用場(chǎng)景: 適用與需求變化較多的項(xiàng)目,比如:互聯(lián)網(wǎng)項(xiàng)目。企業(yè)進(jìn)行技術(shù)選型,以低成本高回報(bào)作為技術(shù)選型的原則,根據(jù)項(xiàng)目組的技術(shù)力量進(jìn)行選擇。mybatis開發(fā)dao的方法SqlSession使用范圍SqlSessionFactoryBuilder通過(guò)SqlSessionFactoryBuilder創(chuàng)建會(huì)話工廠SqlSessionFactory將SqlSessionFactoryBuilder當(dāng)成一個(gè)工具類使用即可,不需要使用單例管理SqlSessionFactoryBuilder。在需要?jiǎng)?chuàng)建SqlSessionFactory時(shí)候,只需要new一次SqlSessionFactoryBuilder即可。SqlSessionFactory通過(guò)SqlSessionFactory創(chuàng)建SqlSession,使用單例模式管理sqlSessionFactory(工廠一旦創(chuàng)建,使用一個(gè)實(shí)例)。將來(lái)mybatis和spring整合后,使用單例模式管理sqlSessionFactory。SqlSessionSqlSession是一個(gè)面向用戶(程序員)的接口。SqlSession中提供了很多操作數(shù)據(jù)庫(kù)的方法:如:selectOne(返回單個(gè)對(duì)象)、selectList(返回單個(gè)或多個(gè)對(duì)象)、。SqlSession是線程不安全的,在SqlSesion實(shí)現(xiàn)類中除了有接口中的方法(操作數(shù)據(jù)庫(kù)的方法)還有數(shù)據(jù)域?qū)傩浴qlSession最佳應(yīng)用場(chǎng)合在方法體內(nèi),定義成局部變量使用。原始dao開發(fā)方法(程序員需要寫dao接口和dao實(shí)現(xiàn)類)思路程序員需要寫dao接口和dao實(shí)現(xiàn)類。需要向dao實(shí)現(xiàn)類中注入SqlSessionFactory,在方法體內(nèi)通過(guò)SqlSessionFactory創(chuàng)建SqlSessiondao接口dao接口實(shí)現(xiàn)類publicclassUserDaoImplimplementsUserDao{ //需要向dao實(shí)現(xiàn)類中注入SqlSessionFactory //這里通過(guò)構(gòu)造方法注入 privateSqlSessionFactorysqlSessionFactory; publicUserDaoImpl(SqlSessionFactorysqlSessionFactory){ this.sqlSessionFactory=sqlSessionFactory; } @Override publicUserfindUserById(intid)throwsException{ SqlSessionsqlSession=sqlSessionFactory.openSession(); Useruser=sqlSession.selectOne("test.findUserById",id); //釋放資源 sqlSession.close(); returnuser; } @Override publicvoidinsertUser(Useruser)throwsException{ SqlSessionsqlSession=sqlSessionFactory.openSession(); //執(zhí)行插入操作 sqlSession.insert("test.insertUser",user); //提交事務(wù) sqlSmit(); //釋放資源 sqlSession.close(); } @Override publicvoiddeleteUser(intid)throwsException{ SqlSessionsqlSession=sqlSessionFactory.openSession(); //執(zhí)行插入操作 sqlSession.delete("test.deleteUser",id); //提交事務(wù) sqlSmit(); //釋放資源 sqlSession.close(); }}測(cè)試代碼:總結(jié)原始dao開發(fā)問題1、dao接口實(shí)現(xiàn)類方法中存在大量模板方法,設(shè)想能否將這些代碼提取出來(lái),大大減輕程序員的工作量。2、調(diào)用sqlsession方法時(shí)將statement的id硬編碼了3、調(diào)用sqlsession方法時(shí)傳入的變量,由于sqlsession方法使用泛型,即使變量類型傳入錯(cuò)誤,在編譯階段也不報(bào)錯(cuò),不利于程序員開發(fā)。mapper代理方法(程序員只需要mapper接口(相當(dāng)于dao接口))思路(mapper代理開發(fā)規(guī)范)程序員還需要編寫mapper.xml映射文件程序員編寫mapper接口需要遵循一些開發(fā)規(guī)范,mybatis可以自動(dòng)生成mapper接口實(shí)現(xiàn)類代理對(duì)象。開發(fā)規(guī)范:1、在mapper.xml中namespace等于mapper接口地址2、mapper.java接口中的方法名和mapper.xml中statement的id一致3、mapper.java接口中的方法輸入?yún)?shù)類型和mapper.xml中statement的parameterType指定的類型一致。4、mapper.java接口中的方法返回值類型和mapper.xml中statement的resultType指定的類型一致??偨Y(jié):以上開發(fā)規(guī)范主要是對(duì)下邊的代碼進(jìn)行統(tǒng)一生成:Useruser=sqlSession.selectOne("test.findUserById",id);sqlSession.insert("test.insertUser",user);。。。。mapper.javamapper.xml在SqlMapConfig.xml中加載mapper.xml測(cè)試一些問題總結(jié)代理對(duì)象內(nèi)部調(diào)用selectOne或selectList如果mapper方法返回單個(gè)pojo對(duì)象(非集合對(duì)象),代理對(duì)象內(nèi)部通過(guò)selectOne查詢數(shù)據(jù)庫(kù)。如果mapper方法返回集合對(duì)象,代理對(duì)象內(nèi)部通過(guò)selectList查詢數(shù)據(jù)庫(kù)。mapper接口方法參數(shù)只能有一個(gè)是否影響系統(tǒng)開發(fā)mapper接口方法參數(shù)只能有一個(gè),系統(tǒng)是否不利于擴(kuò)展維護(hù)。系統(tǒng)框架中,dao層的代碼是被業(yè)務(wù)層公用的。即使mapper接口只有一個(gè)參數(shù),可以使用包裝類型的pojo滿足不同的業(yè)務(wù)方法的需求。注意:持久層方法的參數(shù)可以包裝類型、map。。。,service方法中建議不要使用包裝類型(不利于業(yè)務(wù)層的可擴(kuò)展)。SqlMapConfig.xmlmybatis的全局配置文件SqlMapConfig.xml,配置內(nèi)容如下:properties(屬性)settings(全局配置參數(shù))typeAliases(類型別名)typeHandlers(類型處理器)objectFactory(對(duì)象工廠)plugins(插件)environments(環(huán)境集合屬性對(duì)象)environment(環(huán)境子屬性對(duì)象)transactionManager(事務(wù)管理)dataSource(數(shù)據(jù)源)mappers(映射器)properties屬性需求:將數(shù)據(jù)庫(kù)連接參數(shù)單獨(dú)配置在perties中,只需要在SqlMapConfig.xml中加載perties的屬性值。在SqlMapConfig.xml中就不需要對(duì)數(shù)據(jù)庫(kù)連接參數(shù)硬編碼。將數(shù)據(jù)庫(kù)連接參數(shù)只配置在perties中,原因:方便對(duì)參數(shù)進(jìn)行統(tǒng)一管理,其它xml可以引用該perties。在sqlMapConfig.xml加載屬性文件:properties特性:注意:MyBatis將按照下面的順序來(lái)加載屬性:在properties元素體內(nèi)定義的屬性首先被讀取。然后會(huì)讀取properties元素中resource或url加載的屬性,它會(huì)覆蓋已讀取的同名屬性。最后讀取parameterType傳遞的屬性,它會(huì)覆蓋已讀取的同名屬性。建議:不要在properties元素體內(nèi)添加任何屬性值,只將屬性值定義在properties文件中。settings全局參數(shù)配置mybatis框架在運(yùn)行時(shí)可以調(diào)整一些運(yùn)行參數(shù)。比如:開啟二級(jí)緩存、開啟延遲加載。。全局參數(shù)將會(huì)影響mybatis的運(yùn)行行為。詳細(xì)參見“學(xué)習(xí)資料/mybatis-settings.xlsx”文件typeAliases(別名)重點(diǎn)需求在mapper.xml中,定義很多的statement,statement需要parameterType指定輸入?yún)?shù)的類型、需要resultType指定輸出結(jié)果的映射類型。如果在指定類型時(shí)輸入類型全路徑,不方便進(jìn)行開發(fā),可以針對(duì)parameterType或resultType指定的類型定義一些別名,在mapper.xml中通過(guò)別名定義,方便開發(fā)。mybatis默認(rèn)支持別名別名映射的類型_bytebyte_longlong_shortshort_intint_integerint_doubledouble_floatfloat_booleanbooleanstringStringbyteBytelongLongshortShortintIntegerintegerIntegerdoubleDoublefloatFloatbooleanBooleandateDatedecimalBigDecimalbigdecimalBigDecimal自定義別名單個(gè)別名定義引用別名:批量定義別名(常用)typeHandlers(類型處理器)mybatis中通過(guò)typeHandlers完成jdbc類型和java類型的轉(zhuǎn)換。通常情況下,mybatis提供的類型處理器滿足日常需要,不需要自定義.mybatis支持類型處理器:類型處理器Java類型JDBC類型BooleanTypeHandlerBoolean,boolean任何兼容的布爾值ByteTypeHandlerByte,byte任何兼容的數(shù)字或字節(jié)類型ShortTypeHandlerShort,short任何兼容的數(shù)字或短整型IntegerTypeHandlerInteger,int任何兼容的數(shù)字和整型LongTypeHandlerLong,long任何兼容的數(shù)字或長(zhǎng)整型FloatTypeHandlerFloat,float任何兼容的數(shù)字或單精度浮點(diǎn)型DoubleTypeHandlerDouble,double任何兼容的數(shù)字或雙精度浮點(diǎn)型BigDecimalTypeHandlerBigDecimal任何兼容的數(shù)字或十進(jìn)制小數(shù)類型StringTypeHandlerStringCHAR和VARCHAR類型ClobTypeHandlerStringCLOB和LONGVARCHAR類型NStringTypeHandlerStringNVARCHAR和NCHAR類型NClobTypeHandlerStringNCLOB類型ByteArrayTypeHandlerbyte[]任何兼容的字節(jié)流類型BlobTypeHandlerbyte[]BLOB和LONGVARBINARY類型DateTypeHandlerDate(java.util)TIMESTAMP類型DateOnlyTypeHandlerDate(java.util)DATE類型TimeOnlyTypeHandlerDate(java.util)TIME類型SqlTimestampTypeHandlerTimestamp(java.sql)TIMESTAMP類型SqlDateTypeHandlerDate(java.sql)DATE類型SqlTimeTypeHandlerTime(java.sql)TIME類型ObjectTypeHandler任意其他或未指定類型EnumTypeHandlerEnumeration類型VARCHAR-任何兼容的字符串類型,作為代碼存儲(chǔ)(而不是索引)。mappers(映射配置)通過(guò)resource加載單個(gè)映射文件通過(guò)mapper接口加載單個(gè)mapper按照上邊的規(guī)范,將mapper.java和mapper.xml放在一個(gè)目錄,且同名。批量加載mapper(推薦使用)輸入映射通過(guò)parameterType指定輸入?yún)?shù)的類型,類型可以是簡(jiǎn)單類型、hashmap、pojo的包裝類型。傳遞pojo的包裝對(duì)象需求完成用戶信息的綜合查詢,需要傳入查詢條件很復(fù)雜(可能包括用戶信息、其它信息,比如商品、訂單的)定義包裝類型pojo針對(duì)上邊需求,建議使用自定義的包裝類型的pojo。在包裝類型的pojo中將復(fù)雜的查詢條件包裝進(jìn)去。mapper.xml在UserMapper.xml中定義用戶信息綜合查詢(查詢條件復(fù)雜,通過(guò)高級(jí)查詢進(jìn)行復(fù)雜關(guān)聯(lián)查詢)。mapper.java測(cè)試代碼輸出映射resultType使用resultType進(jìn)行輸出映射,只有查詢出來(lái)的列名和pojo中的屬性名一致,該列才可以映射成功。如果查詢出來(lái)的列名和pojo中的屬性名全部不一致,沒有創(chuàng)建pojo對(duì)象。只要查詢出來(lái)的列名和pojo中的屬性有一個(gè)一致,就會(huì)創(chuàng)建pojo對(duì)象,不一致的屬性的值為null。輸出簡(jiǎn)單類型需求用戶信息的綜合查詢列表總數(shù),通過(guò)查詢總數(shù)和上邊用戶綜合查詢列表才可以實(shí)現(xiàn)分頁(yè)。mapper.xmlmapper.java測(cè)試代碼小結(jié)查詢出來(lái)的結(jié)果集只有一行且一列,可以使用簡(jiǎn)單類型進(jìn)行輸出映射。輸出pojo對(duì)象和pojo列表不管是輸出的pojo單個(gè)對(duì)象還是一個(gè)列表(list中包括pojo),在mapper.xml中resultType指定的類型是一樣的。在mapper.java指定的方法返回值類型不一樣: 1、輸出單個(gè)pojo對(duì)象,方法返回值是單個(gè)對(duì)象類型2、輸出pojo對(duì)象list,方法返回值是List<Pojo>生成的動(dòng)態(tài)代理對(duì)象

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論