日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

mybatis3.2.8 与 hibernate4.3.6 混用

發(fā)布時(shí)間:2025/4/16 编程问答 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mybatis3.2.8 与 hibernate4.3.6 混用 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

mybatis、hibernate這二個(gè)框架各有特色,對(duì)于復(fù)雜的查詢,利用mybatis直接手寫(xiě)sql控制起來(lái)更靈活,而一般的insert/update,hibernate比較方便。同一個(gè)項(xiàng)目中,這二個(gè)框架可以和諧共存,下面是一些步驟:

一、版本要求

Spring 4.11 + hibernate 4.3.6 + mybatis 3.2.8 + struts 2.3.16.3 (這是目前各框架的最新版本)

建議:如果用hibernate 4.x ,Spring最好也是4.x系列,否則getCurrentSession()容易報(bào)錯(cuò)。

二、pom.xml依賴項(xiàng)

1 <?xml version="1.0" encoding="UTF-8"?> 2 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 3 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 4 <modelVersion>4.0.0</modelVersion> 5 <groupId>infosky</groupId> 6 <artifactId>struts2-rest-ex</artifactId> 7 <packaging>war</packaging> 8 <version>1.0</version> 9 <properties> 10 <java-version>1.6</java-version> 11 <struts2.version>2.3.16.3</struts2.version> 12 <spring.version>4.1.1.RELEASE</spring.version> 13 <mybatis.version>3.2.8</mybatis.version> 14 <hibernate.version>4.3.6.Final</hibernate.version> 15 </properties> 16 <dependencies> 17 18 <dependency> 19 <groupId>commons-dbcp</groupId> 20 <artifactId>commons-dbcp</artifactId> 21 <version>1.4</version> 22 </dependency> 23 24 <!-- oracle --> 25 <dependency> 26 <groupId>com.oracle</groupId> 27 <artifactId>ojdbc6</artifactId> 28 <version>11.2.0.3</version> 29 </dependency> 30 31 <dependency> 32 <groupId>asm</groupId> 33 <artifactId>asm</artifactId> 34 <version>3.3.1</version> 35 </dependency> 36 37 <dependency> 38 <groupId>asm</groupId> 39 <artifactId>asm-commons</artifactId> 40 <version>3.3.1</version> 41 </dependency> 42 43 <dependency> 44 <groupId>asm</groupId> 45 <artifactId>asm-tree</artifactId> 46 <version>3.3.1</version> 47 </dependency> 48 49 <dependency> 50 <groupId>commons-beanutils</groupId> 51 <artifactId>commons-beanutils</artifactId> 52 <version>1.8.3</version> 53 </dependency> 54 55 <dependency> 56 <groupId>commons-collections</groupId> 57 <artifactId>commons-collections</artifactId> 58 <version>3.2.1</version> 59 </dependency> 60 61 <dependency> 62 <groupId>commons-fileupload</groupId> 63 <artifactId>commons-fileupload</artifactId> 64 <version>1.3</version> 65 </dependency> 66 67 <dependency> 68 <groupId>commons-io</groupId> 69 <artifactId>commons-io</artifactId> 70 <version>2.2</version> 71 </dependency> 72 73 <dependency> 74 <groupId>org.apache.commons</groupId> 75 <artifactId>commons-lang3</artifactId> 76 <version>3.1</version> 77 </dependency> 78 79 <dependency> 80 <groupId>javassist</groupId> 81 <artifactId>javassist</artifactId> 82 <version>3.12.1.GA</version> 83 </dependency> 84 85 <dependency> 86 <groupId>ognl</groupId> 87 <artifactId>ognl</artifactId> 88 <version>3.0.6</version> 89 </dependency> 90 91 92 <!-- log --> 93 <dependency> 94 <groupId>org.apache.logging.log4j</groupId> 95 <artifactId>log4j-api</artifactId> 96 <version>2.0.2</version> 97 </dependency> 98 <dependency> 99 <groupId>org.apache.logging.log4j</groupId> 100 <artifactId>log4j-core</artifactId> 101 <version>2.0.2</version> 102 </dependency> 103 <dependency> 104 <groupId>org.apache.logging.log4j</groupId> 105 <artifactId>log4j-web</artifactId> 106 <version>2.0.2</version> 107 </dependency> 108 <dependency> 109 <groupId>org.slf4j</groupId> 110 <artifactId>slf4j-api</artifactId> 111 <version>1.7.7</version> 112 </dependency> 113 114 <dependency> 115 <groupId>net.sf.ezmorph</groupId> 116 <artifactId>ezmorph</artifactId> 117 <version>1.0.6</version> 118 </dependency> 119 120 <dependency> 121 <groupId>org.freemarker</groupId> 122 <artifactId>freemarker</artifactId> 123 <version>2.3.19</version> 124 </dependency> 125 126 <dependency> 127 <groupId>org.codehaus.jackson</groupId> 128 <artifactId>jackson-core-asl</artifactId> 129 <version>1.9.10</version> 130 </dependency> 131 132 <dependency> 133 <groupId>org.codehaus.jackson</groupId> 134 <artifactId>jackson-mapper-asl</artifactId> 135 <version>1.9.10</version> 136 </dependency> 137 138 <dependency> 139 <groupId>net.sf.json-lib</groupId> 140 <artifactId>json-lib</artifactId> 141 <version>2.4</version> 142 <classifier>jdk15</classifier> 143 </dependency> 144 145 <dependency> 146 <groupId>org.apache.struts</groupId> 147 <artifactId>struts2-convention-plugin</artifactId> 148 <version>2.3.16</version> 149 </dependency> 150 151 <dependency> 152 <groupId>org.apache.struts</groupId> 153 <artifactId>struts2-config-browser-plugin</artifactId> 154 <version>2.3.16</version> 155 </dependency> 156 157 <dependency> 158 <groupId>org.apache.struts</groupId> 159 <artifactId>struts2-core</artifactId> 160 <version>${struts2.version}</version> 161 </dependency> 162 163 <dependency> 164 <groupId>org.apache.struts</groupId> 165 <artifactId>struts2-rest-plugin</artifactId> 166 <version>2.3.16</version> 167 </dependency> 168 169 <dependency> 170 <groupId>com.thoughtworks.xstream</groupId> 171 <artifactId>xstream</artifactId> 172 <version>1.4.3</version> 173 </dependency> 174 175 <dependency> 176 <groupId>org.apache.struts.xwork</groupId> 177 <artifactId>xwork-core</artifactId> 178 <version>${struts2.version}</version> 179 </dependency> 180 181 <!-- Servlet --> 182 <dependency> 183 <groupId>javax.servlet</groupId> 184 <artifactId>servlet-api</artifactId> 185 <version>2.5</version> 186 <scope>provided</scope> 187 </dependency> 188 189 <!-- spring --> 190 <dependency> 191 <groupId>org.apache.struts</groupId> 192 <artifactId>struts2-spring-plugin</artifactId> 193 <version>${struts2.version}</version> 194 </dependency> 195 196 <dependency> 197 <groupId>org.springframework</groupId> 198 <artifactId>spring-context</artifactId> 199 <version>${spring.version}</version> 200 </dependency> 201 202 <dependency> 203 <groupId>org.springframework</groupId> 204 <artifactId>spring-orm</artifactId> 205 <version>${spring.version}</version> 206 </dependency> 207 208 <dependency> 209 <groupId>org.springframework</groupId> 210 <artifactId>spring-beans</artifactId> 211 <version>${spring.version}</version> 212 </dependency> 213 214 <dependency> 215 <groupId>org.springframework</groupId> 216 <artifactId>spring-core</artifactId> 217 <version>${spring.version}</version> 218 </dependency> 219 220 <dependency> 221 <groupId>org.springframework</groupId> 222 <artifactId>spring-web</artifactId> 223 <version>${spring.version}</version> 224 </dependency> 225 226 <dependency> 227 <groupId>org.springframework</groupId> 228 <artifactId>spring-context</artifactId> 229 <version>${spring.version}</version> 230 </dependency> 231 232 <dependency> 233 <groupId>org.springframework</groupId> 234 <artifactId>spring-context-support</artifactId> 235 <version>${spring.version}</version> 236 </dependency> 237 238 <dependency> 239 <groupId>org.springframework</groupId> 240 <artifactId>spring-expression</artifactId> 241 <version>${spring.version}</version> 242 </dependency> 243 244 <dependency> 245 <groupId>org.springframework</groupId> 246 <artifactId>spring-jdbc</artifactId> 247 <version>${spring.version}</version> 248 </dependency> 249 250 <dependency> 251 <groupId>org.springframework</groupId> 252 <artifactId>spring-tx</artifactId> 253 <version>${spring.version}</version> 254 </dependency> 255 256 <dependency> 257 <groupId>org.springframework</groupId> 258 <artifactId>spring-aop</artifactId> 259 <version>${spring.version}</version> 260 </dependency> 261 262 263 <dependency> 264 <groupId>org.aspectj</groupId> 265 <artifactId>aspectjweaver</artifactId> 266 <version>1.7.3</version> 267 </dependency> 268 269 <dependency> 270 <groupId>aopalliance</groupId> 271 <artifactId>aopalliance</artifactId> 272 <version>1.0</version> 273 </dependency> 274 275 276 <dependency> 277 <groupId>junit</groupId> 278 <artifactId>junit</artifactId> 279 <version>4.11</version> 280 </dependency> 281 282 <!-- mybatis --> 283 <dependency> 284 <groupId>org.mybatis</groupId> 285 <artifactId>mybatis-spring</artifactId> 286 <version>1.2.2</version> 287 </dependency> 288 289 <dependency> 290 <groupId>org.mybatis</groupId> 291 <artifactId>mybatis</artifactId> 292 <version>${mybatis.version}</version> 293 </dependency> 294 295 <dependency> 296 <groupId>com.github.miemiedev</groupId> 297 <artifactId>mybatis-paginator</artifactId> 298 <version>1.2.15</version> 299 </dependency> 300 301 <!-- hibernate --> 302 <dependency> 303 <groupId>org.hibernate</groupId> 304 <artifactId>hibernate-core</artifactId> 305 <version>${hibernate.version}</version> 306 </dependency> 307 308 <dependency> 309 <groupId>xml-apis</groupId> 310 <artifactId>xml-apis</artifactId> 311 <version>1.0.b2</version> 312 <scope>provided</scope> 313 </dependency> 314 315 316 </dependencies> 317 318 <profiles> 319 <profile> 320 <!-- 開(kāi)發(fā)環(huán)境 --> 321 <id>dev</id> 322 <properties> 323 <db-url>jdbc:oracle:thin:@172.21.129.51:1521:orcl</db-url> 324 <db-username>***</db-username> 325 <db-password>***</db-password> 326 </properties> 327 <!-- 默認(rèn)激活本環(huán)境 --> 328 <activation> 329 <activeByDefault>true</activeByDefault> 330 </activation> 331 </profile> 332 <profile> 333 <!-- 測(cè)試環(huán)境 --> 334 <id>test</id> 335 <properties> 336 <db-url>jdbc:oracle:thin:@172.21.129.51:1521:orcl</db-url> 337 <db-username>***</db-username> 338 <db-password>***</db-password> 339 </properties> 340 </profile> 341 </profiles> 342 343 <build> 344 <finalName>struts2-rest-ex</finalName> 345 <resources> 346 <resource> 347 <directory>src/main/resources</directory> 348 <filtering>true</filtering> 349 </resource> 350 </resources> 351 <plugins> 352 <plugin> 353 <groupId>org.apache.maven.plugins</groupId> 354 <artifactId>maven-compiler-plugin</artifactId> 355 <version>2.5.1</version> 356 <configuration> 357 <source>1.6</source> 358 <target>1.6</target> 359 <encoding>utf-8</encoding> 360 </configuration> 361 </plugin> 362 363 <plugin> 364 <artifactId>maven-source-plugin</artifactId> 365 <version>2.1.2</version> 366 <executions> 367 <execution> 368 <phase>package</phase> 369 <goals> 370 <goal>jar-no-fork</goal> 371 </goals> 372 </execution> 373 </executions> 374 </plugin> 375 376 <plugin> 377 <groupId>org.apache.maven.plugins</groupId> 378 <artifactId>maven-surefire-plugin</artifactId> 379 <version>2.16</version> 380 <configuration> 381 <forkMode>once</forkMode> 382 <argLine>-Dfile.encoding=UTF-8</argLine> 383 </configuration> 384 </plugin> 385 </plugins> 386 </build> 387 <organization> 388 <name>yjmyzz</name> 389 <url>http://yjmyzz.cnblogs.com/</url> 390 </organization> 391 392 </project> View Code

最終打包后,WEB-INF/lib下的jar文件列表為:

antlr-2.7.7.jar
aopalliance-1.0.jar
asm-3.3.1.jar
asm-commons-3.3.1.jar
asm-tree-3.3.1.jar
aspectjweaver-1.7.3.jar
commons-beanutils-1.8.3.jar
commons-collections-3.2.1.jar
commons-dbcp-1.4.jar
commons-fileupload-1.3.jar
commons-io-2.2.jar
commons-lang-2.3.jar
commons-lang3-3.1.jar
commons-logging-1.1.1.jar
commons-pool-1.5.4.jar
dom4j-1.6.1.jar
ezmorph-1.0.6.jar
freemarker-2.3.19.jar
hamcrest-core-1.3.jar
hibernate-commons-annotations-4.0.5.Final.jar
hibernate-core-4.3.6.Final.jar
hibernate-jpa-2.1-api-1.0.0.Final.jar
jackson-core-asl-1.9.10.jar
jackson-mapper-asl-1.9.10.jar
jandex-1.1.0.Final.jar
javassist-3.12.1.GA.jar
javassist-3.18.1-GA.jar
jboss-logging-3.1.3.GA.jar
jboss-logging-annotations-1.2.0.Beta1.jar
jboss-transaction-api_1.2_spec-1.0.0.Final.jar
json-lib-2.4-jdk15.jar
junit-4.11.jar
log4j-api-2.0.2.jar
log4j-core-2.0.2.jar
log4j-web-2.0.2.jar
mybatis-3.2.8.jar
mybatis-paginator-1.2.15.jar
mybatis-spring-1.2.2.jar
ognl-3.0.6.jar
ojdbc6-11.2.0.3.jar
slf4j-api-1.7.7.jar
spring-aop-4.1.1.RELEASE.jar
spring-beans-4.1.1.RELEASE.jar
spring-context-4.1.1.RELEASE.jar
spring-context-support-4.1.1.RELEASE.jar
spring-core-4.1.1.RELEASE.jar
spring-expression-4.1.1.RELEASE.jar
spring-jdbc-4.1.1.RELEASE.jar
spring-orm-4.1.1.RELEASE.jar
spring-tx-4.1.1.RELEASE.jar
spring-web-4.1.1.RELEASE.jar
struts2-config-browser-plugin-2.3.16.jar
struts2-convention-plugin-2.3.16.jar
struts2-core-2.3.16.3.jar
struts2-rest-plugin-2.3.16.jar
struts2-spring-plugin-2.3.16.3.jar
xmlpull-1.1.3.1.jar
xpp3_min-1.1.4c.jar
xstream-1.4.3.jar
xwork-core-2.3.16.3.jar

三、Spring配置(關(guān)鍵)

1 <?xml version="1.0" encoding="UTF-8"?> 2 <beans xmlns="http://www.springframework.org/schema/beans" 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop" 4 xmlns:tx="http://www.springframework.org/schema/tx" xmlns:jdbc="http://www.springframework.org/schema/jdbc" 5 xmlns:context="http://www.springframework.org/schema/context" 6 xsi:schemaLocation=" 7 http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd 8 http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd 9 http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-3.0.xsd 10 http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd 11 http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd" 12 default-autowire="byName"> 13 14 <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" 15 destroy-method="close"> 16 <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver" /> 17 <property name="url" value="jdbc:oracle:thin:@172.21.129.**:1521:orcl" /> 18 <property name="username" value="***" /> 19 <property name="password" value="***" /> 20 <property name="defaultAutoCommit" value="false" /> 21 <property name="initialSize" value="2" /> 22 <property name="maxActive" value="10" /> 23 <property name="maxWait" value="60000" /> 24 </bean> 25 26 <bean id="sessionFactory" 27 class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"> 28 <property name="dataSource" ref="dataSource" /> 29 <property name="packagesToScan"> 30 <list> 31 <value>com.cnblogs.yjmyzz.entity</value> 32 </list> 33 </property> 34 <property name="mappingLocations"> 35 <list> 36 <value>classpath*:hibernate/**/*.hbm.xml</value> 37 </list> 38 </property> 39 <property name="hibernateProperties"> 40 <props> 41 <prop key="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</prop> 42 <!-- <prop key="current_session_context_class">thread</prop> --> 43 <prop key="hibernate.format_sql">false</prop> 44 <prop key="hibernate.show_sql">true</prop> 45 <prop key="hibernate.use_sql_comments">true</prop> 46 <prop key="hibernate.max_fetch_depth">3</prop> 47 <prop key="hibernate.jdbc.batch_size">20</prop> 48 <prop key="hibernate.jdbc.fetch_size">20</prop> 49 <prop key="hibernate.cache.use_second_level_cache">false</prop> 50 </props> 51 </property> 52 </bean> 53 54 <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> 55 <property name="dataSource" ref="dataSource" /> 56 <property name="configLocation" value="classpath:mybatis-config.xml"></property> 57 <property name="typeAliasesPackage" value="com.cnblogs.yjmyzz.entity"></property> 58 <property name="mapperLocations" value="classpath:mybatis/**/*.xml"></property> 59 <property name="plugins"> 60 <list> 61 <bean 62 class="com.github.miemiedev.mybatis.paginator.OffsetLimitInterceptor"> 63 <property name="dialectClass" 64 value="com.github.miemiedev.mybatis.paginator.dialect.OracleDialect"></property> 65 </bean> 66 </list> 67 </property> 68 </bean> 69 70 <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> 71 <property name="basePackage" value="com.cnblogs.yjmyzz.mybatis.mapper" /> 72 </bean> 73 74 <bean id="transactionManager" 75 class="org.springframework.orm.hibernate4.HibernateTransactionManager"> 76 <property name="sessionFactory"> 77 <ref local="sessionFactory" /> 78 </property> 79 </bean> 80 81 <tx:advice id="txAdvice" transaction-manager="transactionManager"> 82 <tx:attributes> 83 <tx:method name="do*" read-only="false" rollback-for="java.lang.Exception" /> 84 <tx:method name="*" propagation="SUPPORTS" read-only="true" /> 85 </tx:attributes> 86 </tx:advice> 87 88 <aop:config> 89 <aop:pointcut id="pc" 90 expression="execution(* com.cnblogs.yjmyzz.service.*.*(..))" /> 91 <aop:advisor pointcut-ref="pc" advice-ref="txAdvice" /> 92 </aop:config> 93 94 </beans> View Code

有幾個(gè)關(guān)鍵點(diǎn):

a) mybatis與hibernate的sessionFactory,共用同一個(gè)dataSource

b) 事務(wù)管理共用hibernate的事務(wù)管理

四、web.xml配置?

1 <?xml version="1.0" encoding="UTF-8"?> 2 <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4 xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> 5 6 <display-name>struts2-app-sample</display-name> 7 8 <listener> 9 <listener-class>org.apache.logging.log4j.web.Log4jServletContextListener</listener-class> 10 </listener> 11 <filter> 12 <filter-name>log4jServletFilter</filter-name> 13 <filter-class>org.apache.logging.log4j.web.Log4jServletFilter</filter-class> 14 </filter> 15 <filter-mapping> 16 <filter-name>log4jServletFilter</filter-name> 17 <url-pattern>/*</url-pattern> 18 <dispatcher>REQUEST</dispatcher> 19 <dispatcher>FORWARD</dispatcher> 20 <dispatcher>INCLUDE</dispatcher> 21 <dispatcher>ERROR</dispatcher> 22 </filter-mapping> 23 24 <context-param> 25 <param-name>contextConfigLocation</param-name> 26 <param-value>classpath:spring.xml</param-value> 27 </context-param> 28 <listener> 29 <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 30 </listener> 31 32 <filter> 33 <filter-name>struts2</filter-name> 34 <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class> 35 <init-param> 36 <param-name>loggerFactory</param-name> 37 <param-value>com.opensymphony.xwork2.util.logging.slf4j.Slf4jLoggerFactory</param-value> 38 </init-param> 39 </filter> 40 41 <filter> 42 <filter-name>openSessionInViewFilter</filter-name> 43 <filter-class>org.springframework.orm.hibernate4.support.OpenSessionInViewFilter</filter-class> 44 <init-param> 45 <param-name>singleSession</param-name> 46 <param-value>true</param-value> 47 </init-param> 48 </filter> 49 50 <filter-mapping> 51 <filter-name>struts2</filter-name> 52 <url-pattern>/*</url-pattern> 53 </filter-mapping> 54 55 <welcome-file-list> 56 <welcome-file>index.html</welcome-file> 57 </welcome-file-list> 58 59 </web-app> View Code

五、代碼調(diào)用

5.1 服務(wù)層基類

1 package com.cnblogs.yjmyzz.service.support; 2 3 import java.io.Serializable; 4 5 import javax.annotation.Resource; 6 7 import org.apache.ibatis.session.SqlSessionFactory; 8 import org.hibernate.Session; 9 import org.hibernate.SessionFactory; 10 import org.hibernate.StatelessSession; 11 12 public class BaseServiceImpl implements Serializable { 13 14 private static final long serialVersionUID = -33988360094493502L; 15 16 /** 17 * hibernate入口 18 */ 19 @Resource(name = "sessionFactory") 20 protected SessionFactory hibernateSessionFactory; 21 22 /** 23 * mybatis入口 24 */ 25 @Resource(name = "sqlSessionFactory") 26 protected SqlSessionFactory mybatisSessionFactory; 27 28 protected Session openSession() { 29 return hibernateSessionFactory.openSession(); 30 } 31 32 protected StatelessSession openStatelessSession() { 33 return hibernateSessionFactory.openStatelessSession(); 34 } 35 36 protected Session getCurrentSession() { 37 return hibernateSessionFactory.getCurrentSession(); 38 } 39 40 } View Code

其它各業(yè)務(wù)服務(wù)實(shí)現(xiàn)類,都繼承自它。當(dāng)然,也可以弄一個(gè)BaseDAO,對(duì)hibernate做些封裝

1 package com.cnblogs.yjmyzz.dao; 2 3 import java.io.Serializable; 4 import java.util.List; 5 6 /** 7 * 基礎(chǔ)數(shù)據(jù)庫(kù)操作類 8 * 9 * @author ss 10 * 11 */ 12 public interface BaseDAO<T> { 13 14 /** 15 * 保存一個(gè)對(duì)象 16 * 17 * @param o 18 * @return 19 */ 20 public Serializable save(T o); 21 22 /** 23 * 刪除一個(gè)對(duì)象 24 * 25 * @param o 26 */ 27 public void delete(T o); 28 29 /** 30 * 更新一個(gè)對(duì)象 31 * 32 * @param o 33 */ 34 public void update(T o); 35 36 /** 37 * 保存或更新對(duì)象 38 * 39 * @param o 40 */ 41 public void saveOrUpdate(T o); 42 43 /** 44 * 查詢 45 * 46 * @param hql 47 * @return 48 */ 49 public List<T> find(String hql); 50 51 /** 52 * 查詢集合 53 * 54 * @param hql 55 * @param param 56 * @return 57 */ 58 public List<T> find(String hql, Object[] param); 59 60 /** 61 * 查詢集合 62 * 63 * @param hql 64 * @param param 65 * @return 66 */ 67 public List<T> find(String hql, List<Object> param); 68 69 /** 70 * 查詢集合(帶分頁(yè)) 71 * 72 * @param hql 73 * @param param 74 * @param page 75 * 查詢第幾頁(yè) 76 * @param rows 77 * 每頁(yè)顯示幾條記錄 78 * @return 79 */ 80 public List<T> find(String hql, Object[] param, Integer page, Integer rows); 81 82 /** 83 * 查詢集合(帶分頁(yè)) 84 * 85 * @param hql 86 * @param param 87 * @param page 88 * @param rows 89 * @return 90 */ 91 public List<T> find(String hql, List<Object> param, Integer page, 92 Integer rows); 93 94 /** 95 * 獲得一個(gè)對(duì)象 96 * 97 * @param c 98 * 對(duì)象類型 99 * @param id 100 * @return Object 101 */ 102 public T get(Class<T> c, Serializable id); 103 104 /** 105 * 獲得一個(gè)對(duì)象 106 * 107 * @param hql 108 * @param param 109 * @return Object 110 */ 111 public T get(String hql, Object[] param); 112 113 /** 114 * 獲得一個(gè)對(duì)象 115 * 116 * @param hql 117 * @param param 118 * @return 119 */ 120 public T get(String hql, List<Object> param); 121 122 /** 123 * select count(*) from 類 124 * 125 * @param hql 126 * @return 127 */ 128 public Long count(String hql); 129 130 /** 131 * select count(*) from 類 132 * 133 * @param hql 134 * @param param 135 * @return 136 */ 137 public Long count(String hql, Object[] param); 138 139 /** 140 * select count(*) from 類 141 * 142 * @param hql 143 * @param param 144 * @return 145 */ 146 public Long count(String hql, List<Object> param); 147 148 /** 149 * 執(zhí)行HQL語(yǔ)句 150 * 151 * @param hql 152 * @return 響應(yīng)數(shù)目 153 */ 154 public Integer executeHql(String hql); 155 156 /** 157 * 執(zhí)行HQL語(yǔ)句 158 * 159 * @param hql 160 * @param param 161 * @return 響應(yīng)數(shù)目 162 */ 163 public Integer executeHql(String hql, Object[] param); 164 165 /** 166 * 執(zhí)行HQL語(yǔ)句 167 * 168 * @param hql 169 * @param param 170 * @return 171 */ 172 public Integer executeHql(String hql, List<Object> param); 173 174 } View Code 1 package com.cnblogs.yjmyzz.dao.impl; 2 3 import com.cnblogs.yjmyzz.dao.BaseDAO; 4 5 import java.io.Serializable; 6 import java.util.List; 7 8 import org.hibernate.Query; 9 import org.hibernate.Session; 10 import org.hibernate.SessionFactory; 11 import org.springframework.beans.factory.annotation.Autowired; 12 import org.springframework.stereotype.Component; 13 import org.springframework.stereotype.Repository; 14 15 @Component("baseDAO") 16 @SuppressWarnings("all") 17 public class BaseDAOImpl<T> implements BaseDAO<T> { 18 19 private SessionFactory sessionFactory; 20 21 public SessionFactory getSessionFactory() { 22 return sessionFactory; 23 } 24 25 @Autowired 26 public void setSessionFactory(SessionFactory sessionFactory) { 27 this.sessionFactory = sessionFactory; 28 } 29 30 private Session getCurrentSession() { 31 return sessionFactory.getCurrentSession(); 32 } 33 34 public Serializable save(T o) { 35 return this.getCurrentSession().save(o); 36 } 37 38 public void delete(T o) { 39 this.getCurrentSession().delete(o); 40 } 41 42 public void update(T o) { 43 this.getCurrentSession().update(o); 44 } 45 46 public void saveOrUpdate(T o) { 47 this.getCurrentSession().saveOrUpdate(o); 48 } 49 50 public List<T> find(String hql) { 51 return this.getCurrentSession().createQuery(hql).list(); 52 } 53 54 public List<T> find(String hql, Object[] param) { 55 Query q = this.getCurrentSession().createQuery(hql); 56 if (param != null && param.length > 0) { 57 for (int i = 0; i < param.length; i++) { 58 q.setParameter(i, param[i]); 59 } 60 } 61 return q.list(); 62 } 63 64 public List<T> find(String hql, List<Object> param) { 65 Query q = this.getCurrentSession().createQuery(hql); 66 if (param != null && param.size() > 0) { 67 for (int i = 0; i < param.size(); i++) { 68 q.setParameter(i, param.get(i)); 69 } 70 } 71 return q.list(); 72 } 73 74 public List<T> find(String hql, Object[] param, Integer page, Integer rows) { 75 if (page == null || page < 1) { 76 page = 1; 77 } 78 if (rows == null || rows < 1) { 79 rows = 10; 80 } 81 Query q = this.getCurrentSession().createQuery(hql); 82 if (param != null && param.length > 0) { 83 for (int i = 0; i < param.length; i++) { 84 q.setParameter(i, param[i]); 85 } 86 } 87 return q.setFirstResult((page - 1) * rows).setMaxResults(rows).list(); 88 } 89 90 public List<T> find(String hql, List<Object> param, Integer page, 91 Integer rows) { 92 if (page == null || page < 1) { 93 page = 1; 94 } 95 if (rows == null || rows < 1) { 96 rows = 10; 97 } 98 Query q = this.getCurrentSession().createQuery(hql); 99 if (param != null && param.size() > 0) { 100 for (int i = 0; i < param.size(); i++) { 101 q.setParameter(i, param.get(i)); 102 } 103 } 104 return q.setFirstResult((page - 1) * rows).setMaxResults(rows).list(); 105 } 106 107 public T get(Class<T> c, Serializable id) { 108 return (T) this.getCurrentSession().get(c, id); 109 } 110 111 public T get(String hql, Object[] param) { 112 List<T> l = this.find(hql, param); 113 if (l != null && l.size() > 0) { 114 return l.get(0); 115 } else { 116 return null; 117 } 118 } 119 120 public T get(String hql, List<Object> param) { 121 List<T> l = this.find(hql, param); 122 if (l != null && l.size() > 0) { 123 return l.get(0); 124 } else { 125 return null; 126 } 127 } 128 129 public Long count(String hql) { 130 return (Long) this.getCurrentSession().createQuery(hql).uniqueResult(); 131 } 132 133 public Long count(String hql, Object[] param) { 134 Query q = this.getCurrentSession().createQuery(hql); 135 if (param != null && param.length > 0) { 136 for (int i = 0; i < param.length; i++) { 137 q.setParameter(i, param[i]); 138 } 139 } 140 return (Long) q.uniqueResult(); 141 } 142 143 public Long count(String hql, List<Object> param) { 144 Query q = this.getCurrentSession().createQuery(hql); 145 if (param != null && param.size() > 0) { 146 for (int i = 0; i < param.size(); i++) { 147 q.setParameter(i, param.get(i)); 148 } 149 } 150 return (Long) q.uniqueResult(); 151 } 152 153 public Integer executeHql(String hql) { 154 return this.getCurrentSession().createQuery(hql).executeUpdate(); 155 } 156 157 public Integer executeHql(String hql, Object[] param) { 158 Query q = this.getCurrentSession().createQuery(hql); 159 if (param != null && param.length > 0) { 160 for (int i = 0; i < param.length; i++) { 161 q.setParameter(i, param[i]); 162 } 163 } 164 return q.executeUpdate(); 165 } 166 167 public Integer executeHql(String hql, List<Object> param) { 168 Query q = this.getCurrentSession().createQuery(hql); 169 if (param != null && param.size() > 0) { 170 for (int i = 0; i < param.size(); i++) { 171 q.setParameter(i, param.get(i)); 172 } 173 } 174 return q.executeUpdate(); 175 } 176 177 } View Code

至于mybatis,就沒(méi)必要封裝了,因?yàn)楦鱴xxMapper接口,注入后可以直接拿來(lái)調(diào)

5.2 調(diào)用示例

1 package com.cnblogs.yjmyzz.service.support; 2 3 import java.math.BigDecimal; 4 import java.util.*; 5 6 import javax.annotation.Resource; 7 8 import org.springframework.beans.factory.annotation.Autowired; 9 import org.springframework.stereotype.Service; 10 11 import com.cnblogs.yjmyzz.convertor.OrderConverter; 12 import com.cnblogs.yjmyzz.dao.BaseDAO; 13 import com.cnblogs.yjmyzz.dto.Order; 14 import com.cnblogs.yjmyzz.entity.TOrder; 15 import com.cnblogs.yjmyzz.mybatis.mapper.OrderMapper; 16 import com.cnblogs.yjmyzz.service.OrderService; 17 18 @Service 19 public class OrdersServiceImpl extends BaseServiceImpl implements OrderService { 20 21 @Autowired 22 OrderMapper orderMapper; 23 24 @Resource 25 BaseDAO<TOrder> tOrderDAO; 26 27 private static final long serialVersionUID = 1513133416493770048L; 28 29 @Override 30 public Order get(String id) { 31 // hibernate實(shí)現(xiàn) 32 // return OrderConverter.toDto((TOrder) getCurrentSession().get( 33 // TOrder.class, new BigDecimal(Integer.parseInt(id)))); 34 return OrderConverter.toDto(tOrderDAO.get(TOrder.class, new BigDecimal( 35 Integer.parseInt(id)))); 36 37 // mybatis實(shí)現(xiàn) 38 // return 39 // OrderConverter.toDto(orderMapper.getOrder(Integer.parseInt(id))); 40 } 41 42 @Override 43 public List<Order> getAll() { 44 List<TOrder> entities = orderMapper.getAllOrder(); 45 List<Order> orders = new ArrayList<Order>(); 46 for (TOrder entity : entities) { 47 orders.add(OrderConverter.toDto(entity)); 48 } 49 return orders; 50 } 51 52 @Override 53 public void doSave(Order order) { 54 // hibernate 55 TOrder entity = OrderConverter.toEntity(order); 56 if (entity.getId() != null) { 57 entity = (TOrder) getCurrentSession().get(TOrder.class, 58 entity.getId()); 59 60 // update fields 61 entity.setClientname(order.getClientName()); 62 entity.setAmount(new BigDecimal(order.getAmount())); 63 } 64 getCurrentSession().saveOrUpdate(entity); 65 } 66 67 @Override 68 public void doRemove(String id) { 69 // mybatis 70 orderMapper.deleteOrder(Integer.parseInt(id)); 71 72 } 73 74 } View Code

其它注意事項(xiàng):

hibernate 4.x以后,entity類上的注解,最好改成@Entity("TABLE_NAME"),而非以前的@Table(xxx),參考:

@Entity(name = "T_ORDER") public class TOrder implements java.io.Serializable { View Code

示例代碼下載:struts-hibernate-mybatis-rest.zip?

總結(jié)

以上是生活随笔為你收集整理的mybatis3.2.8 与 hibernate4.3.6 混用的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

久久综合亚洲鲁鲁五月久久 | 久久综合偷偷噜噜噜色 | 国产又粗又猛又黄又爽视频 | 在线 视频 亚洲 | 国产精品女主播一区二区三区 | 五月婷婷丁香激情 | 免费网站黄色 | 天天色天天草天天射 | 五月婷婷,六月丁香 | 午夜av剧场 | 黄色aaa毛片| 国产综合精品久久 | 日韩视频专区 | 国产美女精品视频 | 91免费在线播放 | 97国产精品免费 | 99久久99久久免费精品蜜臀 | 国产精品久久久久永久免费看 | www.午夜色.com| www.狠狠| 国产成年免费视频 | 亚洲精品乱码久久久久久写真 | 成年人视频在线 | 亚洲视频,欧洲视频 | 亚洲精品国产精品国自产在线 | 欧美精品免费在线观看 | 国产xx在线 | 在线观看视频黄 | 色在线免费视频 | 国产成人一区在线 | 亚洲h色精品 | 午夜精品福利在线 | 天天拍天天爽 | 一区二区三区 中文字幕 | 九九久久久久久久久激情 | www.狠狠插.com| 国产女人18毛片水真多18精品 | 999久久久免费精品国产 | 国产成人一级电影 | 日韩精品视频一二三 | 久久免费高清 | 久艹在线播放 | 欧美日韩国产二区三区 | 日韩美在线观看 | 福利在线看片 | 成人97视频一区二区 | 婷婷久久网 | 蜜桃麻豆www久久囤产精品 | 国产美女在线免费观看 | 丁香婷婷激情啪啪 | 中文字幕人成乱码在线观看 | 97成人精品视频在线播放 | 成人v | 99精品久久99久久久久 | 天天色天天色 | 色就是色综合 | 久久色亚洲 | 欧美一二三四在线 | 午夜久久久久久久 | 亚洲国产成人精品在线观看 | 日韩丝袜在线观看 | 久草在线手机观看 | 蜜臀av性久久久久蜜臀aⅴ四虎 | a久久久久久 | 国产精品一区二区久久国产 | 99久久精品免费看国产 | 91麻豆免费视频 | 国产黄色精品在线 | 欧日韩在线视频 | 国产精品一区二区久久久 | 婷婷激情站 | 国产精品福利无圣光在线一区 | 久久精国产| 日韩欧美在线观看一区二区 | 在线观看视频一区二区三区 | 国产在线a| 亚洲 欧美 另类人妖 | 日韩免费电影 | 成人一级片视频 | 精品美女在线视频 | 91人人射 | 日本中文字幕在线视频 | 午夜黄网 | 久久精品视频4 | 九九精品视频在线观看 | 久久综合九色综合久99 | 一区二区三区动漫 | 韩日精品在线观看 | 色姑娘综合| 在线观看午夜av | www.狠狠操.com| 国产69精品久久久久久 | av夜夜操 | 黄色免费av | 国产精品久久久久久久久毛片 | 欧美在线视频日韩 | 精品视频免费在线 | 91精品国自产在线观看欧美 | 亚洲爱av | 久久久观看 | 91精品免费| 在线日韩| 91最新在线视频 | www.五月婷婷 | 精品国产伦一区二区三区 | 免费在线观看国产黄 | 国产视频日韩视频欧美视频 | 久久99九九99精品 | 久操中文字幕在线观看 | 亚洲最大在线视频 | 午夜三级理论 | 麻豆传媒视频在线免费观看 | 日韩av手机在线观看 | 91看片一区二区三区 | 亚洲精品视频网站在线观看 | 免费看的黄网站软件 | www.com久久| 六月丁香婷婷在线 | 久久国产精品视频免费看 | 色夜视频 | 日本三级香港三级人妇99 | 手机在线看片日韩 | 亚洲涩涩网 | 91高清完整版在线观看 | 99久久久久国产精品免费 | 天天干天天想 | 天天色天天操天天爽 | 狠狠干综合 | 天天草天天草 | 蜜臀av在线一区二区三区 | 成人av网页 | 精品一区二区三区久久 | 久久露脸国产精品 | 国产日产精品一区二区三区四区 | 最近中文字幕第一页 | 日韩视频一区二区三区 | 中文字幕永久免费 | 97超视频在线观看 | 久久视频这里只有精品 | 黄色片免费电影 | 国产麻豆剧果冻传媒视频播放量 | 亚洲国产wwwccc36天堂 | 欧美久久久久久久久 | 国产精品久久网 | 久久久久久久久毛片精品 | 成人av免费 | 亚洲天堂网在线视频 | 亚洲福利精品 | 91成人精品一区在线播放69 | 日韩在线免费不卡 | 国产aaa免费视频 | 24小时日本在线www免费的 | 婷婷视频在线 | 一区二区三区高清不卡 | 视频在线国产 | 91成人在线网站 | 国产精品免费在线视频 | 成人av免费在线 | 亚洲精品视频免费看 | 国产偷国产偷亚洲清高 | 亚洲视频一级 | 在线精品在线 | 成人免费视频在线观看 | 日韩美在线 | 国产精品黄色 | 久久久麻豆 | 97超碰在线久草超碰在线观看 | 99视频在线看 | 国内精品久久久久久中文字幕 | 黄色软件在线看 | 国产高清在线 | 亚洲影音先锋 | 九九在线国产视频 | 亚洲春色成人 | 人人澡视频 | 国产91精品一区二区麻豆亚洲 | 久草综合视频 | 国产一区二区影院 | 天天射射天天 | 成人av电影在线播放 | 天天干天天上 | 综合色久 | 91视频免费看片 | 日韩美在线| 狠狠狠色狠狠色综合 | 成人免费一级 | 欧美激情在线网站 | 天天操天天干天天综合网 | 精品久久久久久久久久久久久 | 亚洲欧美国内爽妇网 | 996久久国产精品线观看 | 最新色站| 国产毛片在线 | 黄色三级免费片 | 精品久久久999 | 欧洲在线免费视频 | 亚洲人片在线观看 | 欧美另类高清 | 天天摸天天操天天爽 | 国产免费xvideos视频入口 | 国产一区二区在线播放视频 | 久久在线看 | av在线播放中文字幕 | 国产一区二区三区在线免费观看 | 麻豆久久 | 高清不卡毛片 | 精品国模一区二区三区 | 欧美一区二区在线免费观看 | 综合色在线观看 | 国产高清不卡在线 | 国产精品中文久久久久久久 | 狠狠干夜夜操 | 999抗病毒口服液 | 久久久久久久久国产 | 中文字幕在线播出 | 亚洲精品影视在线观看 | 精品一区二区三区久久 | 国产高清精 | 国产视频999 | 国产综合精品久久 | 成人在线黄色电影 | 国产 欧美 日本 | 一区二区三区在线观看中文字幕 | 黄色一二级片 | 香蕉久草 | 97超级碰碰 | 亚洲最大免费成人网 | 精品在线二区 | 国产成人一区二区精品非洲 | 天天草网站 | 九热精品 | 成人在线播放视频 | 91女人18片女毛片60分钟 | 久久久综合| 成人免费看片98欧美 | 免费99视频 | 亚洲色图色 | 在线成人一区 | 亚洲好视频 | 九九综合久久 | 亚洲成人av一区二区 | 91在线视频观看免费 | 日本在线观看一区 | 日韩91在线| 亚洲乱码在线观看 | 在线只有精品 | 激情丁香| 日韩欧美有码在线 | 97超碰成人在线 | 国产精品第一视频 | 黄色片免费看 | 在线观看亚洲国产精品 | 狠狠躁夜夜躁人人爽超碰97香蕉 | 日韩网站一区二区 | 欧美一级片在线免费观看 | 久久久国产一区 | 久久亚洲视频 | 亚洲小视频在线 | 在线观看网站黄 | 91女神的呻吟细腰翘臀美女 | 超碰在线天天 | 久久视频在线观看免费 | 精品久久久久久亚洲综合网 | 国产中文字幕一区二区 | 久久手机免费观看 | 国产精品成人免费一区久久羞羞 | 九九爱免费视频在线观看 | 四虎影视8848dvd | 免费av观看网站 | a电影免费看| 天海冀一区二区三区 | 97人人澡人人添人人爽超碰 | 国产96在线观看 | 香蕉视频久久 | 九九九视频在线 | 欧美男男tv网站 | 四虎影院在线观看av | 久草五月 | 成人久久毛片 | 免费看色的网站 | 亚洲成人网在线 | 色婷婷久久一区二区 | 国产亚洲小视频 | 亚洲视频www | 日韩一区二区三区免费视频 | 久精品视频在线观看 | 久久乱码卡一卡2卡三卡四 五月婷婷久 | 91xav| 欧美日韩中文国产一区发布 | 日本不卡久久 | 天天天天色综合 | 亚洲区另类春色综合小说 | 亚洲天堂精品视频 | 久久精品日本啪啪涩涩 | 亚洲精品五月天 | 又色又爽又黄 | 欧美日韩免费一区二区 | 国产精品一区二区在线免费观看 | 五月花激情 | 一级精品视频在线观看宜春院 | 天天色成人网 | 欧美日韩1区 | 精品一区二区三区电影 | 97网| av在线免费观看不卡 | 黄色免费av | 中文字幕在线观看日本 | japanese黑人亚洲人4k | 国产视频在线免费观看 | 天天插天天操天天干 | 日韩大陆欧美高清视频区 | 探花视频在线观看+在线播放 | 国产亚洲一区二区在线观看 | 又黄又爽又色无遮挡免费 | 看全黄大色黄大片 | 色97在线| 亚洲不卡123 | av电影不卡在线 | 好看av在线 | 天天操狠狠操夜夜操 | 国产丝袜网站 | 久久久久视 | 久久久久久久久久久久av | 日韩在线精品视频 | 色七七亚洲影院 | 午夜精品久久久久久久久久久久久久 | 狠狠色伊人亚洲综合成人 | 91在线看片 | 99久久99久久精品国产片 | 亚洲天天综合网 | 亚洲资源视频 | 国产精品自产拍在线观看网站 | 久久久久亚洲国产 | 5月丁香婷婷综合 | av在线小说 | 国产精品久久久av久久久 | 在线观看av麻豆 | 久久人人看 | www黄色大片 | 日韩电影一区二区三区在线观看 | 一本色道久久综合亚洲二区三区 | 久久9视频 | 久久久久久久久久久久电影 | 五月天久久激情 | 在线免费观看不卡av | 亚州精品在线视频 | 日日日日干| 91高清在线 | 亚洲精品乱码久久久久久9色 | 免费91在线观看 | 国产亚洲成av人片在线观看桃 | 成年人在线免费看视频 | 亚洲国产一区二区精品专区 | 国产亚洲一区 | 日日夜夜人人精品 | 亚洲精品高清在线观看 | 六月丁香激情综合 | 久色网| 日韩视频欧美视频 | 国产永久免费高清在线观看视频 | 亚洲成年人免费网站 | 日本女人在线观看 | 中文字幕4| 色婷婷国产 | 国产美女免费视频 | 欧美综合在线视频 | 久草在线最新视频 | 国产亚洲视频系列 | 精品久久中文 | 91九色视频导航 | 国产一级视频在线观看 | 中文av影院 | 欧美福利精品 | 福利一区在线视频 | 午夜黄色一级片 | 国产成人黄色av | 狠狠干天天操 | 四虎永久免费网站 | 久久夜av | 国产91国语对白在线 | 欧洲高潮三级做爰 | 日日夜夜网 | www.少妇| 久久婷婷国产色一区二区三区 | 中国一 片免费观看 | 黄色在线观看免费 | 最近中文国产在线视频 | 久久国产精品99久久久久 | 日韩国产精品久久 | 亚洲少妇自拍 | 97人人澡人人添人人爽超碰 | 国产免费又黄又爽 | 日韩专区在线观看 | 国产va在线| 亚洲国产大片 | 999毛片 | 日韩av图片 | 中文字幕第| 人人看黄色 | 精品女同一区二区三区在线观看 | 丁香五婷| 丁香六月婷婷开心婷婷网 | 日日干日日操 | 最近日本中文字幕 | 亚洲免费国产视频 | 99久久精品电影 | 国产成人av电影 | 日本精品va在线观看 | 91成版人在线观看入口 | 日韩三区在线观看 | 欧美激情综合色综合啪啪五月 | 久久久蜜桃| 欧美日韩亚洲精品在线 | 精品久久久久久亚洲综合网站 | 黄色91在线| 中文字幕av全部资源www中文字幕在线观看 | 国产成人资源 | 亚洲免费资源 | 97韩国电影| 色噜噜在线观看视频 | 精品成人在线 | 91在线小视频 | www.夜夜骑.com | 欧美日韩成人一区 | 91久久久久久国产精品 | 久久久久久草 | 久久国产精品久久精品 | 91伊人| 日韩网站在线播放 | www免费黄色 | 精品国产乱码久久久久 | 天天插天天干 | 国产精品18久久久久vr手机版特色 | 狠狠干狠狠插 | 色综合久久中文字幕综合网 | 一区二区视频在线观看免费 | 亚洲黄色a| 91综合视频在线观看 | 色欧美88888久久久久久影院 | 九九在线精品视频 | 亚洲高清国产视频 | 国产一线二线三线性视频 | 中字幕视频在线永久在线观看免费 | 国产成人精品一区一区一区 | 欧美综合国产 | 欧美亚洲精品一区 | 国产一级黄色片免费看 | 国产97免费| 一区二区视频在线播放 | 亚洲日本一区二区在线 | 久久精品一区二区 | 波多野结衣视频一区 | 国产色视频网站 | 日日草视频 | 久久国产精品99国产精 | 久久久国产99久久国产一 | 国内精品久久久久久久久久久久 | 国产乱对白刺激视频在线观看女王 | 最近最新mv字幕免费观看 | 激情网色 | 国产一区在线精品 | 久久久精品欧美一区二区免费 | 国产在线毛片 | 国产理论免费 | 欧洲激情综合 | 五月天婷婷在线视频 | 久久久精品小视频 | 欧美日韩综合在线观看 | 久久最新网址 | 九九九视频在线 | 亚洲区另类春色综合小说校园片 | 久久综合狠狠 | 特级黄录像视频 | 一区 在线观看 | 91精品国产乱码在线观看 | 日韩国产高清在线 | 五月天婷亚洲天综合网鲁鲁鲁 | 亚洲精品免费观看视频 | 国产成人一区三区 | 美女视频黄在线 | 免费高清在线观看成人 | 激情视频一区 | aaawww | 国产精品午夜在线 | 国产超碰在线观看 | 97成人在线视频 | 精品国产一区二区三区久久 | 日本久久免费视频 | 亚洲欧美视频在线播放 | 久久久精品国产免费观看同学 | 欧美精品久久久久久久久老牛影院 | 88av网站| 中文字幕在线观看视频一区 | 国产精品人成电影在线观看 | 91精品国产欧美一区二区成人 | 91av视频| 欧美日韩一级视频 | 欧美激情视频一区二区三区 | 婷婷久久久 | 欧美日本国产在线观看 | 国产精品av在线免费观看 | 欧美精品久久久久久久久老牛影院 | 四虎4hu永久免费 | 欧美日韩国产在线精品 | 色婷婷久久久综合中文字幕 | 日韩欧美网站 | 一区二区三区在线免费 | 久草在线视频免赞 | 五月婷婷中文网 | 亚洲观看黄色网 | 精品国产午夜 | 国产在线97 | 成人黄色大片在线观看 | 欧美国产不卡 | 97在线免费观看视频 | 国产一区二区三区免费在线 | 成人精品电影 | 国语精品视频 | 久久特级毛片 | 亚洲精品在线观看不卡 | 丁香六月五月婷婷 | 亚洲精品播放 | 久久综合偷偷噜噜噜色 | 久久免费观看少妇a级毛片 久久久久成人免费 | 在线激情小视频 | 91精品高清| 国产精品麻豆91 | 久久久久久高清 | 成人久久久久久久久久 | 人人爱爱 | 911亚洲精品第一 | 黄色亚洲精品 | 激情av在线播放 | 成年人免费在线观看网站 | 免费在线看成人av | 国产精品中文字幕在线 | 在线色亚洲 | 久久国内免费视频 | 国产区在线 | 亚洲午夜激情网 | 91自拍视频在线观看 | 成人国产精品久久久久久亚洲 | 国产免费资源 | 久草电影免费在线观看 | 中文字幕在线免费观看 | 区一区二区三在线观看 | 欧美日韩天堂 | 国内精品久久久久久久影视简单 | 精品免费久久久久 | 国产男女免费完整视频 | 色瓜 | 亚洲在线视频免费观看 | 91桃色免费观看 | 碰碰影院 | 日日夜夜精品免费视频 | 欧美成人视 | 国产精品久久电影观看 | 久久免费福利视频 | 天天做天天爱天天综合网 | 色综合久久久久久中文网 | 欧美大片在线看免费观看 | 久久免费精彩视频 | 人人要人人澡人人爽人人dvd | 人人爱爱人人 | 亚洲一区二区三区四区精品 | 久久少妇免费视频 | 免费毛片一区二区三区久久久 | 日韩中文字幕网站 | 精品国产伦一区二区三区免费 | 在线观看免费日韩 | 精品福利视频在线观看 | 激情欧美日韩一区二区 | 国产成人精品一区一区一区 | 99久久精品免费看 | 亚洲人成人天堂h久久 | 日韩在线视频一区 | 日韩欧美有码在线 | 免费黄色特级片 | 综合网天天射 | 久久综合五月天 | 91在线文字幕 | 欧美成人精品在线 | 欧美日韩精品综合 | 狠狠干狠狠久久 | 麻豆小视频在线观看 | 亚洲美女精品区人人人人 | 日本精品一区二区在线观看 | www.久久久 | 精品亚洲成a人在线观看 | 99久久网站 | 久久久久久久久久久高潮一区二区 | 8090yy亚洲精品久久 | 日本h在线播放 | 亚洲开心激情 | 国产1区在线观看 | 色婷婷免费视频 | 在线免费高清一区二区三区 | 91视频a | 99r精品视频在线观看 | www.夜夜干.com | 免费观看xxxx9999片 | 天天操夜夜叫 | 精品国产乱码 | 欧美激情综合色综合啪啪五月 | 人人澡视频| 国产一区在线播放 | 97视频在线看 | 久久精品欧美日韩精品 | 91麻豆精品国产91 | 久久情网 | 日产乱码一二三区别免费 | 久久福利电影 | 久久三级毛片 | 91精品系列 | 天天色天天综合网 | 日韩中文免费视频 | av福利在线导航 | 国产亚洲成av人片在线观看桃 | 日韩精品一区二区三区不卡 | 激情电影在线观看 | 亚洲精品一区二区在线观看 | 91视频免费网址 | 日日夜夜操av | 国产精品成人免费 | 成人在线观看资源 | 国产日韩在线看 | av中文在线影视 | 草莓视频在线观看免费观看 | 国产99久久久精品视频 | 四虎在线免费观看视频 | 亚洲日本精品视频 | 九色精品免费永久在线 | 午夜精品久久久久 | 九九热在线播放 | 97超碰在线久草超碰在线观看 | 亚洲欧美日韩国产一区二区三区 | 国产中文在线播放 | 在线韩国电影免费观影完整版 | 日本在线观看一区二区 | 国产不卡精品视频 | 欧美人人爱 | 在线观看中文字幕视频 | 亚洲激情在线观看 | 日韩在线播放视频 | 欧美亚洲精品一区 | 久久久久久久久久久久影院 | 在线日韩av | 日韩精品一区二区在线视频 | 水蜜桃亚洲一二三四在线 | 在线国产小视频 | 亚洲精品1区2区3区 超碰成人网 | 免费观看丰满少妇做爰 | 最新久久免费视频 | 亚洲在线视频免费观看 | a资源在线 | 337p西西人体大胆瓣开下部 | 免费男女羞羞的视频网站中文字幕 | 久精品视频在线观看 | 久久久久久久久久毛片 | 午夜91视频| 中文字幕a∨在线乱码免费看 | 久久久精品国产免费观看一区二区 | 久久不卡免费视频 | 亚洲va综合va国产va中文 | 天天插一插 | 精品国产一区二区三区久久 | 久久久久蜜桃 | 亚洲精品视频在线免费播放 | 四虎www.| 91超碰在线播放 | 国产精品久久久av久久久 | 欧美aaaxxxx做受视频 | 在线国产91 | 国产无套精品久久久久久 | av在线免费观看网站 | 国产精品久久久av | 日韩视频中文字幕在线观看 | 在线视频日韩欧美 | 亚洲三级黄色 | 在线99 | 伊人久久在线观看 | 天天色天天爱天天射综合 | 激情开心 | 国产一区二区在线播放视频 | 国产区精品视频 | av成人动漫| 国产精品久久久久久久久久久久午 | 国产精品欧美一区二区 | 高清av免费一区中文字幕 | 国产高清视频在线 | 国产老熟 | 玖玖玖影院 | 国产999精品久久久影片官网 | 黄网站a | a'aaa级片在线观看 | 免费在线a | 99草视频| 91大神dom调教在线观看 | www.午夜| 免费在线激情电影 | 精品国产一区二区三区久久 | 久久神马影院 | 久久久男人的天堂 | 成年人电影免费在线观看 | 国产乱码精品一区二区三区介绍 | 黄污网站在线 | v片在线看 | av性在线| 日韩电影久久 | 99九九热只有国产精品 | 婷婷资源站 | 久久国产精品久久久 | av电影一区二区三区 | 九九精品在线观看 | 欧美日韩有码 | 99精品国产在热久久下载 | 黄色毛片一级 | 国产永久网站 | 国产白浆在线观看 | 黄av资源| 国产精品毛片一区二区 | 国产1区在线观看 | 免费久久网站 | 91在线观看视频网站 | 精品久久久久久久久久久久 | 日韩最新中文字幕 | 国产看片网站 | 日本电影黄色 | 色老板在线视频 | 色av资源网 | 日韩av成人在线观看 | 国产精品白浆视频 | 91探花国产综合在线精品 | 伊人久久婷婷 | 91精品啪在线观看国产81旧版 | 久久中文字幕视频 | 亚洲伊人成综合网 | 久久精品久久精品 | 中文字幕视频免费观看 | 91伊人| 女人18片 | 人人看人人做人人澡 | 精品久久久久一区二区国产 | 国产专区视频在线观看 | 丰满少妇一级片 | 在线精品视频在线观看高清 | 欧洲精品久久久久毛片完整版 | 国产片免费在线观看视频 | 欧美一级在线 | 免费在线观看亚洲视频 | 精品免费观看视频 | 丁香伊人网 | 91在线播放综合 | 探花视频在线观看免费 | 五月宗合网| 又湿又紧又大又爽a视频国产 | 国产不卡视频在线 | 99性视频 | 色先锋资源网 | 波多野结衣一区二区 | 久久精品看片 | 日日综合网 | 国产精品一区二区电影 | 国产.精品.日韩.另类.中文.在线.播放 | 国产精品人人做人人爽人人添 | www.av中文字幕.com | 免费av高清| 丁香六月综合网 | 中文av一区二区 | 亚洲va欧美| av再线观看 | 日韩精品一区二区三区在线播放 | 成人一级黄色片 | www.在线观看av | 五月天激情视频在线观看 | 亚洲欧美成aⅴ人在线观看 四虎在线观看 | 亚洲最大免费成人网 | 99久久久国产精品免费观看 | 欧洲一区二区三区精品 | 女人18毛片a级毛片一区二区 | 91最新网址 | 国产黄 | 久久精品久久久久久久 | 日韩视频免费在线观看 | 狠狠干中文字幕 | 亚洲精品理论 | 久久精品一级片 | 日韩精品第一区 | 国产一区视频免费在线观看 | 色婷五月| 美女网站一区 | 青青河边草手机免费 | 国产精品嫩草69影院 | 97人人添人澡人人爽超碰动图 | 亚洲 av网站 | 免费看黄在线网站 | 久久国产片 | 欧美aaa大片 | 日韩毛片久久久 | 久久久久国产视频 | 国产精品一区二区 91 | 亚洲 欧美变态 另类 综合 | 亚洲 欧美 综合 在线 精品 | 一区二区三区中文字幕在线 | 91麻豆精品国产91久久久使用方法 | 日韩手机在线 | 91久久黄色 | 久久爱综合 | 精品久久国产精品 | 91久久人澡人人添人人爽欧美 | 九色91在线视频 | 日韩高清毛片 | 亚洲黄色小说网 | 久久国产精品色婷婷 | 888av| 欧美黄色软件 | 日本69hd | 伊人手机在线 | 日韩大片在线免费观看 | 91丨九色丨国产在线观看 | 91成人精品国产刺激国语对白 | 在线观看亚洲电影 | 国产小视频福利在线 | 高清av网站 | 欧美成人xxx | 亚洲国产视频网站 | 天天干天天拍天天操天天拍 | 97成人在线 | 亚洲资源在线 | 久久成人国产精品 | 欧美精品乱码久久久久久 | www.色的 | 伊人官网 | 日韩一级黄色大片 | 黄色精品在线看 | 500部大龄熟乱视频使用方法 | 国产精品久久久久久久久久久免费 | 日韩理论片在线观看 | 成人avav | 亚洲视频 一区 | 在线观看亚洲国产精品 | 国产一区视频在线播放 | 99热手机在线 | 色噜噜狠狠色综合中国 | 天天色天天操天天爽 | 97碰碰碰| 麻豆av一区二区三区在线观看 | 国产区在线看 | 色婷婷成人网 | 一级免费看视频 | 五月婷婷在线综合 | 视频在线观看日韩 | 玖玖在线看 | 久久这里只有精品久久 | 国产小视频在线看 | 在线欧美a | 免费在线成人 | 最近中文字幕在线中文高清版 | 色多多污污 | 99视频在线免费 | 免费黄色小网站 | 黄色精品在线看 | 日本一区二区三区免费看 | 国产高清免费视频 | 成人精品一区二区三区中文字幕 | 96国产在线 | 超碰av在线免费观看 | 亚洲天堂网站视频 | 国产高清日韩欧美 | 日韩a欧美 | 日韩理论在线播放 | 国产免费高清视频 | 成人黄色免费在线观看 | 国色天香在线观看 | 国内精品久久久久久中文字幕 | 正在播放国产精品 | 五月天激情开心 | 色爱成人网 | 久久国产精品久久w女人spa | 色久网| 亚洲欧美日本A∨在线观看 青青河边草观看完整版高清 | 日韩中文字幕在线看 | 国产美女视频免费观看的网站 | 日日夜夜天天久久 | 在线观看福利网站 | 日本精品一区二区三区在线播放视频 | 亚洲精品乱码久久久久久蜜桃动漫 | 色婷婷激情四射 | 深夜福利视频在线观看 | 国产精品美女视频 | 九热精品 | 欧美性生活免费看 | 狠狠色伊人亚洲综合成人 | 99久久久久久国产精品 | 国产精品视频免费在线观看 | 操久| 天堂av在线网站 | 国产精品一区二区三区视频免费 | 久久精品成人热国产成 | 色婷婷色| 成人97视频 | 欧美做受高潮 | 毛片网站免费 | va视频在线观看 | 91女人18片女毛片60分钟 | 亚洲极色 | 久久久免费精品国产一区二区 | 欧美少妇18p | 久久久精品视频成人 | 国产区在线看 | 久久精品视频免费播放 | 丁香六月综合网 | 中文字幕高清免费日韩视频在线 | 欧美性生活久久 | aaa毛片视频 | 色综合久久久久久久 | 久久尤物电影视频在线观看 | 成人亚洲免费 | 国产中文字幕第一页 | 国内精品视频在线播放 | 国产伦理久久精品久久久久_ | 网站在线观看日韩 | 精品1区二区| 911久久香蕉国产线看观看 | 福利片免费看 | 亚洲情婷婷| www.99热精品 | 最新成人av | av在线影片 | 毛片网站免费在线观看 | 久综合网 | 欧美日韩亚洲第一页 | 精品视频9999 | 精品亚洲一区二区三区 | 欧美一区二区三区在线 | 国产精品一区二区三区四区在线观看 | 夜夜躁狠狠躁日日躁 | 久久久影视| www好男人 | 天天爽天天爽天天爽 | 日日夜夜天天射 | 日韩在线视频在线观看 | 日韩av免费在线电影 | 黄色三级网站 | 久久精品一区二区三区四区 | 国产精品毛片一区视频播不卡 | 91精品在线播放 | 国产理论一区二区三区 | 91在线视频观看 | 久久天堂亚洲 | 色婷五月 | 91在线区 | 激情网站免费观看 | 99热国产在线观看 | 狠狠色丁香婷婷综合基地 | av在线免费不卡 | 日韩草比 | 国产精品美女视频网站 | 成人亚洲精品久久久久 | 国产999精品视频 | 久久久亚洲网站 | 夜夜操狠狠操 | 天天插狠狠插 | 久久激情婷婷 | 亚洲少妇久久 | 五月婷婷影院 | 国产不卡在线视频 | 在线a视频| 久久久久久久久久久福利 | 91在线91拍拍在线91 | 天天操夜夜操夜夜操 | 久草精品在线 | 国产精品成人一区二区 | 亚洲高清视频在线观看 | 中文字幕一区二区三区在线播放 | 狠狠色婷婷丁香六月 | 国产精品v欧美精品v日韩 | 免费a级大片 | 亚洲va欧美va人人爽春色影视 | 国产一区二区久久久久 | 日韩一区二区免费在线观看 | 在线亚洲午夜片av大片 | 国产三级香港三韩国三级 | 99热播精品 | 99精品视频在线观看免费 | www.av在线播放 | 久久久黄色免费网站 | 国产成人精品午夜在线播放 | 黄色视屏在线免费观看 | 高清av不卡| 国产精品白丝av | 色婷婷国产 | 国产精品成人自产拍在线观看 | 在线看国产视频 | 中文字幕在线专区 | 五月激情婷婷丁香 | 久久视频免费在线观看 | 视频在线99 |