Mybatis簡(jiǎn)易教程_第1頁(yè)
Mybatis簡(jiǎn)易教程_第2頁(yè)
Mybatis簡(jiǎn)易教程_第3頁(yè)
Mybatis簡(jiǎn)易教程_第4頁(yè)
Mybatis簡(jiǎn)易教程_第5頁(yè)
已閱讀5頁(yè),還剩29頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、Mybatis 3.3金蝶中間件-葉超目錄2314Mybatis簡(jiǎn)介xml配置MybatisMybatis兩種方式注解配置MybatisMybatis簡(jiǎn)介MyBatis1.是apache的一個(gè)開源項(xiàng)目iBatis,2010年遷移到了google code并且改名為MyBatis.2.支持普通 SQL查詢,存儲(chǔ)過程和高級(jí)映射的優(yōu)秀持久層框架。3.每個(gè)MyBatis應(yīng)用程序主要都是使用SqlSessionFactory實(shí)例的,一個(gè)SqlSessionFactory實(shí)例可以通過SqlSessionFactoryBuilder獲得。4.SqlSessionFactoryBuilder可以從一個(gè)xml配

2、置文件或者一個(gè)預(yù)定義的配置類的實(shí)例獲得。Mybatis兩種方式1.XML配置Mybatis2.注解配置Mybatisxml配置Mybatis主要的成員1.主配置文件-主要作用對(duì)數(shù)據(jù)庫(kù)的鏈接訪問引入資源文件對(duì)模型類更改別名加載map映射2.資源文件-主要作用為數(shù)據(jù)庫(kù)的鏈接提供訪問信息,并不是必須需求.但是在多數(shù)據(jù)庫(kù)的鏈接選擇時(shí),資源文件可以更好的選擇鏈接數(shù)據(jù)庫(kù).3.SessionFactory類-主要作用獲取SessionFactory,以提供給數(shù)據(jù)庫(kù)操作.4.模型類-主要作用承接數(shù)據(jù)庫(kù)查詢出的數(shù)據(jù)的載體.5.map映射接口-主要作用定義抽象的數(shù)據(jù)庫(kù)操作方法.6.map映射xml配置文件-主要作

3、用實(shí)現(xiàn)map映射接口的數(shù)據(jù)庫(kù)操作方法.xml配置Mybatis主要的成員目錄結(jié)構(gòu)一覽表1.資源文件2.主配置文件3.數(shù)據(jù)庫(kù)連接獲取類4.模型類5.模型類的map映射接口6.模型類的map映射xml7.實(shí)現(xiàn)xml配置Mybatis簡(jiǎn)單關(guān)系示意1.資源文件2.主配置xml4.模型類5.map映射接口6.map映射配置文件3.SessionFactory類讀取數(shù)據(jù)庫(kù)信息寫入map映射實(shí)現(xiàn)抽象方法jdbc連接模型類作為返回?cái)?shù)據(jù)的承載對(duì)象7.獲取session獲取map映射中接口類中的方法實(shí)現(xiàn)操作8.實(shí)現(xiàn)操作方法xml配置Mybatis主配置XML配置說明主配置文件主要有:1.xml配置頭信息;2.引入

4、資源文件3.給予模型類別名的別名標(biāo)簽4.數(shù)據(jù)庫(kù)連接環(huán)境配置,可以根據(jù)需求自由更改選擇5.map映射引入標(biāo)簽1.xml配置的頭信息2.根標(biāo)簽資源文件配置說明資源文件名為perties(可以任意取名)/這里主要是寫下連接數(shù)據(jù)庫(kù)的信息,包括了驅(qū)動(dòng),數(shù)據(jù)庫(kù)名 密碼等等,資源文件是為了給主配置文件存儲(chǔ)連接數(shù)據(jù)庫(kù)信息而存在的jdbc.driverClassName=com.mysql.jdbc.Driverjdbc.url=jdbc:mysql:/localhost:3306/db_mybatisjdbc.username=rootjdbc.password=123456也可以直接定在主配

5、置文件中xml配置Mybatis主配置XML配置說明3.引入資源文件或者寫入資源文件數(shù)據(jù)庫(kù)的鏈接信息可以放入資源文件,當(dāng)然也可以直接卸載主配置文件中.不過這里建議使用資源文件引入,在切換數(shù)據(jù)庫(kù)的工作環(huán)境時(shí)相對(duì)更加方便.引入資源文件:直接寫入:建議使用引入資源文件方法.這樣在數(shù)據(jù)庫(kù)環(huán)境選擇操作更加靈活4.別名標(biāo)簽如果不適用別名來處理模型等文件,那么在引入的時(shí)候就需要寫入模型的絕對(duì)路徑.使用別名標(biāo)簽就可以在其他地方引入的時(shí)候直接使用別名.別名標(biāo)簽定義方式有兩種,逐個(gè)定義和包掃描的方式.逐個(gè)定義: 每個(gè)模型類定義一次 非常的麻煩.包掃描:自動(dòng)掃描com.java1234.model的包,下面的所有模

6、型類,以類名為別名,在其他地方直接用類名調(diào)用.xml配置Mybatis主配置XML配置說明5.數(shù)據(jù)庫(kù)連接環(huán)境數(shù)據(jù)庫(kù)連接標(biāo)簽,中最少定義一個(gè)數(shù)據(jù)庫(kù),要有默認(rèn)的數(shù)據(jù)庫(kù)連接.然后根據(jù)需求可以有多個(gè)數(shù)據(jù)庫(kù),如開發(fā)數(shù)據(jù)庫(kù),測(cè)試數(shù)據(jù)庫(kù),生產(chǎn)數(shù)據(jù)庫(kù)等等.定義單個(gè)數(shù)據(jù)庫(kù)連接:/定義數(shù)據(jù)庫(kù)環(huán)境名稱./連接方式注:連接方式有兩種:JDBC和MANAGED;JDBC是應(yīng)用程序管理數(shù)據(jù)庫(kù)連接的生命周期,二MANAGED是托管給服務(wù)器管理(一般商業(yè)服務(wù)器才有);/配置數(shù)據(jù)源注:有3種模式,分別是POOLED,UNPOOLED,JNDI;POOLED是用上連接池,UNPOOLED是不用連接池,每次操作都會(huì)創(chuàng)建一個(gè)新的連接

7、,JNDI使用應(yīng)用服務(wù)器配置JNDI數(shù)據(jù)源獲取數(shù)據(jù)庫(kù)連接xml配置Mybatis主配置XML配置說明/配置屬性(連接數(shù)據(jù)庫(kù)的驅(qū)動(dòng),地址,用戶名,密碼等等)注:這里的value所獲取的值是資源文件中的值,或者是主配置文件中前面定義的值.6.引入map映射配置文件/與別名類似之處,可以逐個(gè)引入map映射的xml配置文件 /也可以使用package標(biāo)簽掃描指定的包,引入使用注:引入map映射建議用第二種在使用Mybatis時(shí),配置xml主文件一般是最開始的步驟,那么這個(gè)時(shí)候還沒有寫map映射文件與模型類.最好的解決辦法,想創(chuàng)建一個(gè)存放模型類的包與map映射文件的包,使用package方法自動(dòng)掃描模型

8、包,與map映射文件包.在后續(xù)操作中,只需要在這兩個(gè)包中寫文件,就可以另外添加更改主配置文件xml配置Mybatis模型類說明模型類的構(gòu)建作為配置了主配置文件之后的第二步工作,模型類有點(diǎn)相似于javabean模型類的構(gòu)建需求適用于以下幾點(diǎn):1.一張表對(duì)應(yīng)一個(gè)模型類2.表中的字段對(duì)應(yīng)類的屬性3.如果是1對(duì)1或者是1對(duì)多的關(guān)系,那么類的屬性是另一個(gè)模型類的引用4.每個(gè)屬性對(duì)應(yīng)getSet方法5.默認(rèn)構(gòu)造以及全參數(shù)傳參構(gòu)造在使用的時(shí)候會(huì)更方便注:其實(shí)模型類很靈活,不一定每個(gè)字段都要有對(duì)應(yīng)的屬性.xml配置MybatisSqlSession獲取SqlSession是操作數(shù)據(jù)庫(kù)的鏈接會(huì)話,通過SqlSe

9、ssionFactoryFactoryBuilder來回去1.使用輸入流讀取主配置xml文件inputStream=Resources.getResourceAsStream(mybatis-config.xml);2.根據(jù)主配置獲取sqlSessionFactorysqlSessionFactory=new SqlSessionFactoryBuilder().build(inputStream);(注意:最好以單例的方法獲取SqlSessionFactory)3.通過SqlSessionFactory獲取SqlSessionsqlSessionFactory.openSession();(

10、注意:獲取的方式是這樣,在處理的時(shí)候需要注意SqlSessionFactory是否是空值!)通過會(huì)話操作數(shù)據(jù)庫(kù)實(shí)例:SqlSession sqlSession=SqlSessionFactoryUtil.openSession();StudentMapper studentMapper=sqlSession.getMapper();Student student=new Student(李四,11);int result=studentMapper.add(student);sqlSmit();加粗部分為操作方法的map映射接口xml配置MybatisSqlSession獲取sqlSessio

11、n獲取單例類例子:public class SqlSessionFactoryUtil private static SqlSessionFactory sqlSessionFactory;public static SqlSessionFactory getSqlSessionFactory()if(sqlSessionFactory=null)InputStream inputStream=null;tryinputStream=Resources.getResourceAsStream(mybatis-config.xml);sqlSessionFactory=new SqlSessio

12、nFactoryBuilder().build(inputStream);catch(Exception e)e.printStackTrace();return sqlSessionFactory;public static SqlSession openSession()return getSqlSessionFactory().openSession();xml配置Mybatismap映射接口在接口中定義抽象方法,抽象方法的返回類型決定了sql的返回類型,抽象方法的傳參,決定了操作xml配置實(shí)現(xiàn)時(shí)候的傳參.例如定義接口:public int (Student student);map映射

13、xml/namespace是命名空間對(duì)應(yīng)絕對(duì)路徑的mapper接口類/例子:實(shí)現(xiàn)了上面map映射接口中定義的add抽象方法insert into t_student values(null,#name,#age) 注:map映射xml實(shí)現(xiàn)了map映射接口中的所有抽象方法方法構(gòu)建完模型類之后,就要針對(duì)模型類進(jìn)行map映射的配置,每一個(gè)模型類一般對(duì)應(yīng)了一個(gè)map映射接口與map映射xml的配置文件xml配置Mybatismap映射xml數(shù)據(jù)庫(kù)操作標(biāo)簽下面先從簡(jiǎn)單的增刪改查sql操作開始增刪改查各自對(duì)應(yīng)了一個(gè)標(biāo)簽增加操作/id對(duì)應(yīng)map映射接口類中的抽象方法 parameterType 是傳參限定,

14、可以是類,也可以是Map也可以是集合數(shù)組等等insert into t_student values(null,#name,#age)/sql語(yǔ)句,在需要寫入值的時(shí)候,使用#鍵名,如果傳入的是類,則對(duì)應(yīng)對(duì)象的屬性名,如果是map則是key,不同的傳參,如果只定義了一個(gè)參數(shù),那么就指帶這個(gè)參數(shù)除了查找以為 ,其他的操作不用定義返回值類型.他們的返回值統(tǒng)一為Integer類型的.操作成功為1 失敗為0刪除操作delete from t_student where id=#idxml配置Mybatismap映射xml數(shù)據(jù)庫(kù)操作標(biāo)簽修改操作update t_student set name=#name

15、,age=#age where id=#id查找操作select * from t_student where id=#id查找操作要定義返回值類型.是針對(duì)的查找出的每一條記錄所需要承載的載體容器.并不是針對(duì)結(jié)果集./定義返回類型標(biāo)簽,type是返回的類型,這里使用模型類作為載體,id是這個(gè)返回類型的名稱./下面是模型類屬性對(duì)應(yīng)數(shù)據(jù)庫(kù)表的列名xml配置Mybatismap映射xml數(shù)據(jù)庫(kù)操作標(biāo)簽查找操作如果查找到的是結(jié)果集,那么需要一個(gè)載體去承載多條記錄.不過這里要注意的是,在map映射xml中的resultType是針對(duì)返回的每一條數(shù)據(jù).無論這個(gè)查找返回了一條數(shù)據(jù)還是多條數(shù)據(jù),而result

16、Type針對(duì)的每一條數(shù)據(jù).所以如果返回的是結(jié)果集,就要在map映射的接口中的抽象方法上定義返回類型為L(zhǎng)ist.這樣就會(huì)得到結(jié)果集的查詢集合.抽象方法:public List find();xml配置實(shí)現(xiàn)方法:select * from t_student where id=#idmap映射xml數(shù)據(jù)庫(kù)操作一對(duì)一一對(duì)一關(guān)系配置假如有一張學(xué)生表,學(xué)生表的列名中有一個(gè)外鍵列address為地址表的id在查找一個(gè)學(xué)生信息與地址信息的時(shí)候,需要對(duì)resultMap重新定義有三種方法做1對(duì)1的處理第一種方法,定義在一個(gè)resultMap中-對(duì)象級(jí)聯(lián)xml配置Mybatismap映射xml數(shù)據(jù)庫(kù)操作一對(duì)一1

17、.對(duì)象級(jí)聯(lián)兩張表對(duì)應(yīng)的模型類的關(guān)系定義在一個(gè)resultMap中 /下面的是學(xué)生表信息對(duì)應(yīng)/下面是地址表信息對(duì)應(yīng)上面的column對(duì)應(yīng)的是student表外鍵的名字,而下面的column對(duì)應(yīng)的是address表的列名 這樣在查詢的時(shí)候,使用這個(gè)resultMap作為resultType就可以獲得一對(duì)一的查詢數(shù)據(jù)出來,不過這樣的方法,比較麻煩,每次要放在一起定義一個(gè)新的resultMap.xml配置Mybatismap映射xml數(shù)據(jù)庫(kù)操作一對(duì)一2.嵌套(上面的address是Student模型類的引用屬性,返回類型是根據(jù)Address模型對(duì)象定義的resultMap) 或者 這樣的定義方法相對(duì)于

18、第一種靈活了很多,但是還不是最優(yōu)方法.xml配置Mybatismap映射xml數(shù)據(jù)庫(kù)操作一對(duì)一3.每張表對(duì)應(yīng)一份xml的map映射文件和map映射接口在address的map映射xml中在map映射接口中定義一個(gè)抽象方法:根據(jù)id查找地址的抽象方法,傳入?yún)?shù)是Inteage然會(huì)類型是Address模型類對(duì)象.(實(shí)現(xiàn)過程略)在map映射xml中實(shí)現(xiàn)上面接口中的抽象方法/定義對(duì)應(yīng)的返回類型/定義跟住主鍵的查詢方法select * from t_address where id=#id Student的map映射xml中association 標(biāo)簽通過select定義查詢方法,并查出對(duì)應(yīng)外鍵的數(shù)據(jù),

19、存在模型類的引用屬性中xml配置Mybatismap映射xml數(shù)據(jù)庫(kù)操作一對(duì)多假如多了一個(gè)年級(jí)表,并且在student的表中多了一個(gè)列為年級(jí)的id首先完成年級(jí)表的模型,map映射接口與map映射xml在模型中添加新屬性為L(zhǎng)istselect * from t_grade where id=#id 這里需要在student的map映射中定義一個(gè)查詢方法,通過傳入年級(jí)id參數(shù)去查找學(xué)生的信息select * from t_student where gradeId=#gradeId說明:一個(gè)年級(jí)對(duì)應(yīng)多個(gè)學(xué)生,在年級(jí)的map映射接口中定義一個(gè)查找方法,根據(jù)id查詢年級(jí)的信息,然后再map映射的xml

20、文件中,定義resultMap返回類型,其中使用標(biāo)簽 通過學(xué)生模型類的映射map中定義的按照年級(jí)查找學(xué)生的方法找出學(xué)生結(jié)果集,存放在年級(jí)模型對(duì)象的List屬性中xml配置Mybatis動(dòng)態(tài)sql關(guān)于動(dòng)態(tài)sql,主要是Mybatis中提供的條件標(biāo)簽并且配合模型類或者M(jìn)ap的使用,而產(chǎn)生的效果if標(biāo)簽select * from t_student where gradeId=#gradeIdif標(biāo)簽中test是條件,如name!=null , 就是指在傳入的map中,參數(shù)中是否存在key是name的value或者傳入對(duì)象的屬性是否有name的屬性并且不為空,如果滿足了,就會(huì)執(zhí)行if標(biāo)簽中的語(yǔ)句.c

21、hoose標(biāo)簽select * from t_student 類似switch語(yǔ)句,靈活性不高不建議使用xml配置Mybatis動(dòng)態(tài)sqlwhere標(biāo)簽select * from t_student 如果where標(biāo)簽中的標(biāo)簽成立,則會(huì)自動(dòng)在sql語(yǔ)句中添加where關(guān)鍵詞, 如果在where中的第一個(gè)成立的條件前面有and,那么他會(huì)自動(dòng)去除第一個(gè)成立的標(biāo)簽中的and , 但是他不會(huì)自動(dòng)添加and!trim標(biāo)簽select * from t_student 自定義前綴,判斷性的添加prefix中定義的值,如果trim標(biāo)簽中有成立的,那么就會(huì)剔除第一個(gè)成立的中prefixOverrides中定義

22、的參數(shù),用法類似于where,不過更加的靈活多變.xml配置Mybatis動(dòng)態(tài)sqlforeachselect * from t_student gradeId in 如果傳參map中有key為gradeIds的集合,那么就可以遍歷gradeIds集合進(jìn)行SQL語(yǔ)句的in操作 ,open是為了拼sql語(yǔ)句in中的( , )等符號(hào)setupdate t_studentwhere id=#id根據(jù)傳入的值去判斷更改的選項(xiàng)xml配置-雜項(xiàng)多個(gè)參數(shù)傳入如果在定義map映射接口的時(shí)候,需要傳入多個(gè)參數(shù)傳參.那么在xml的map映射中需要特別提取方法(形參的定義取決于map映射的接口中的方法)/map映射

23、接口public List searchStudents6(String name,int age);/map映射xmlselect * from t_student where name like #param1 and age=#param2mybatis分頁(yè)-邏輯分頁(yè)Mybatis自帶的分頁(yè)為邏輯分頁(yè),就是取出所有的數(shù)據(jù)放在內(nèi)存中,然后再根據(jù)指令從內(nèi)存中取出規(guī)定條數(shù)返回.首先在map映射接口中定義抽象方法public List findStudents(RowBounds rowBounds);注意RowBounds是Mybatis提供的類,為了存放分頁(yè)信息;select * from

24、t_student/下面為實(shí)現(xiàn)過程int offset=0,limit=3;RowBounds rowBounds=new RowBounds(offset,limit);List studentList=studentMapper.findStudents(rowBounds);for(Student student:studentList)System.out.println(student);Mybatis分頁(yè)-物理分頁(yè)物理分頁(yè)的主要實(shí)現(xiàn)方法是對(duì)sql語(yǔ)句的拼接map映射接口定義方法public List findStudents2(Map map);map映射xml實(shí)現(xiàn)接口方法sele

25、ct * from t_student傳入?yún)?shù)map中定義key為start的起始位置與key為size的分頁(yè)大小Mybatis的緩存默認(rèn)情況下是一級(jí)緩存,即同一個(gè)SqlSession接口對(duì)象調(diào)用了相同的select語(yǔ)句,則直接從緩存中獲取結(jié)果,而不是再查一次數(shù)據(jù)庫(kù),開發(fā)者可以自己配置二級(jí)緩存,二級(jí)緩存為全局緩存.緩存主要針對(duì)的是select.在map映射的xml中配置二級(jí)緩存1,size:表示緩存cache中能容納的最大元素?cái)?shù)。默認(rèn)是1024;2,flushInterval:定義緩存刷新周期,以毫秒計(jì);3,eviction:定義緩存的移除機(jī)制;默認(rèn)是LRU(least recently us

26、erd,最近最少使用),還有FIFO(first in first out,先進(jìn)先出)4,readOnly:默認(rèn)值是false,假如是true的話,緩存只能讀。在標(biāo)簽中可以添加是否使用緩存(默認(rèn)true)與清空緩存(默認(rèn)false,可以在insert與update和delete中使用)xml配置-雜項(xiàng)注解配置Mybatis基本映射語(yǔ)句注解方法是不需要map映射xml的,需要map映射接口Insert(insert into t_student values(null,#name,#age)public int insertStudent(Student student);Update(upda

27、te t_student set name=#name,age=#age where id=#id)public int updateStudent(Student student);Delete(delete from t_student where id=#id)public int deleteStudent(int id);Select(select * from t_student where id=#id)public Student getStudentById(Integer id);只需要在接口的抽象方法上定義相應(yīng)的注解就可以自己查找注解返回結(jié)果集Select(select

28、* from t_student)Results(/這里要定義結(jié)果集返回的每一條結(jié)果的列名對(duì)應(yīng)承載對(duì)象Student的屬性名Result(id=true,column=id,property=id),Result(column=name,property=name),Result(column=age,property=age)public List findStudents();映射語(yǔ)句一對(duì)一注解方法一對(duì)一Select(select * from t_student where id=#id)Results(Result(id=true,column=id,property=id),Resu

29、lt(column=name,property=name),Result(column=age,property=age),/定義一個(gè)返回結(jié)果,對(duì)應(yīng)的是學(xué)生表的外鍵列,對(duì)應(yīng)學(xué)生address屬性,通過地址id在地址映射接口查找地址信息Result(column=addressId,property=address,one=One(select=com.java1234.mappers.AddressMapper.findById)public Student selectStudentWithAddress(int id);/在地址的映射接口中定義方法public interface Addr

30、essMapper /定義一個(gè)查詢方法,通過id查詢地址Select(select * from t_address where id=#id)public Address findById(Integer id);注解配置Mybatis映射語(yǔ)句一對(duì)多/年級(jí)map映射接口public interface GradeMapper Select(select * from t_grade where id=#id)Results(Result(id=true,column=id,property=id),Result(column=gradeName,property=gradeName),)pu

31、blic Grade findById(Integer id);學(xué)生map映射接口Select(select * from t_student where gradeId=#gradeId)Results(Result(id=true,column=id,property=id),Result(column=name,property=name),Result(column=age,property=age),)public Student selectStudentByGradeId(int gradeId);注解配置Mybatis動(dòng)態(tài)sql注解配置Mybatis實(shí)現(xiàn)動(dòng)態(tài)sql必須要寫實(shí)現(xiàn)類

32、map映射接口InsertProvider(type=StudentDynaSqlProvider.class,method=insertStudent)public int insertStudent(Student student);UpdateProvider(type=StudentDynaSqlProvider.class,method=updateStudent)public int updateStudent(Student student);DeleteProvider(type=StudentDynaSqlProvider.class,method=deleteStudent

33、)public int deleteStudent(int id);SelectProvider(type=StudentDynaSqlProvider.class,method=getStudentById)public Student getStudentById(Integer id);SelectProvider(type=StudentDynaSqlProvider.class,method=findStudents)public List findStudents(Map map);在上面的接口注釋中,type=StudentDynaSqlprovider.class就是動(dòng)態(tài)sql的實(shí)現(xiàn)類,后面的method是在實(shí)現(xiàn)類中對(duì)應(yīng)的方法名稱注解配置Mybatis動(dòng)態(tài)sql注解配置Mybatis實(shí)現(xiàn)動(dòng)態(tài)sql必須要寫實(shí)現(xiàn)類/因?yàn)橛心涿鄄焕?所以形參定義成finalpublic String insertStudent(final Student student)return new SQL()INSERT_INTO(t_student);if(student.getName()!=null)VA

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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)論