久久福利_99r_国产日韩在线视频_直接看av的网站_中文欧美日韩_久久一

您的位置:首頁技術文章
文章詳情頁

Java中的使用及連接Redis數據庫(附源碼)

瀏覽:40日期:2022-08-24 11:31:56

引言:

本文主要分享了Redis如何在IDEA中部署,運行;模擬加入Redis的操作;

目錄結構

Java中的使用及連接Redis數據庫(附源碼)

1. 在IDEA中搭建Redis

1.1 創建項目

新建含有web的SpringBoot項目;

搭建項目參考:SpringBoot超詳細筆記:https://blog.csdn.net/weixin_42601136/article/details/108396511

Java中的使用及連接Redis數據庫(附源碼)

1.2 添加依賴(不夠手動添加)

<dependencies> <!-- 1、 Jedis--> <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>2.9.0</version> </dependency> <!-- 2、 Junit測試--> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>2.1.2</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <scope>runtime</scope> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency></dependencies>

1.3 測試環境是否搭建成功

@Test public void test0() { //連接Redis Jedis jedis = new Jedis('127.0.0.1', 6379); //獲取kak String kaka = jedis.get('kak'); log.info(kaka); //創建datex String datex = jedis.set('datex', new Date().toString()); //獲取datex String datex1 = jedis.get('datex'); log.info(datex1); //關閉資源 jedis.close(); }

Java中的使用及連接Redis數據庫(附源碼)

1.4 利用json存儲數據

@Test public void test1() { JedisPool pool = new JedisPool('127.0.0.1', 6379); Jedis jedis = pool.getResource(); Student student = new Student(1001, 'kak', 'man', '20'); String key = 'student'; String field = '1001'; String s = JsonUtils.objectToJson(student); String value = s; jedis.hset(key, field, value); String hget = jedis.hget(key, field); log.info(hget); jedis.close(); }

Java中的使用及連接Redis數據庫(附源碼)

1.5 以byte的形式存儲對象

@Test public void test02() { //連接redis Jedis jedis = new Jedis('127.0.0.1', 6379); String key = 'Student'; Student value = new Student(1002, 'taotao', 'woman', '20'); //將key和value轉換為byte[] byte[] byteKey = SerializationUtils.serialize(key); byte[] byteValue = SerializationUtils.serialize(value); //將key和value存儲到redis中 jedis.set(byteKey, byteValue); //獲取value值 byte[] bytes = jedis.get(byteKey); //bytes反序列化為Student對象 Student stu = (Student) SerializationUtils.deserialize(bytes); System.out.println(stu); jedis.close(); }

Java中的使用及連接Redis數據庫(附源碼)

1.6 加入連接池的操作

使用連接池操作,可以避免頻繁的創建和銷毀連接對象的消耗資源

@Test public void test3(){ //創建連接池 GenericObjectPoolConfig poolConfig = new GenericObjectPoolConfig(); poolConfig.setMaxTotal(100);//連接池中的最大活躍數 poolConfig.setMaxIdle(10);//最大空閑數 poolConfig.setMinIdle(5);//最小空閑數 poolConfig.setMaxWaitMillis(3000);//連接池空了,3000毫秒后沒有獲取Jedis對象,超時 //創建連接池 JedisPool pool = new JedisPool(poolConfig,'127.0.0.1',6379); //通過連接池獲取Jedis對象 Jedis resource = pool.getResource(); //獲取上面添加的datex String value = resource.get('datex'); log.info(value); resource.close(); }

Java中的使用及連接Redis數據庫(附源碼)

1.7 管道操作

Redis的管道操作,執行一個命令需要先發送請求到Redis,需要經歷網絡延遲,Redis還需給客戶端一個響應;如果需要一次操作多個命令,可以通過管道,將命令放到客戶端的一個Pipeline中,之后一次將命令發送到服務端,服務端一次性返回到客戶端;

@Test public void test3(){ //創建連接池 GenericObjectPoolConfig poolConfig = new GenericObjectPoolConfig(); poolConfig.setMaxTotal(100);//連接池中的最大活躍數 poolConfig.setMaxIdle(10);//最大空閑數 poolConfig.setMinIdle(5);//最小空閑數 poolConfig.setMaxWaitMillis(3000);//連接池空了,3000毫秒后沒有獲取Jedis對象,超時 //創建連接池 JedisPool pool = new JedisPool(poolConfig,'127.0.0.1',6379); //通過連接池獲取Jedis對象 Jedis resource = pool.getResource(); //獲取上面添加的datex String value = resource.get('datex'); log.info(value); resource.close(); }

Java中的使用及連接Redis數據庫(附源碼)

2. 從數據中查詢數據

場景:

將數據存入Redis中,避免訪問量過大,造成數據庫奔潰;

2.1 生成實體類

@Test public void test3(){ //創建連接池 GenericObjectPoolConfig poolConfig = new GenericObjectPoolConfig(); poolConfig.setMaxTotal(100);//連接池中的最大活躍數 poolConfig.setMaxIdle(10);//最大空閑數 poolConfig.setMinIdle(5);//最小空閑數 poolConfig.setMaxWaitMillis(3000);//連接池空了,3000毫秒后沒有獲取Jedis對象,超時 //創建連接池 JedisPool pool = new JedisPool(poolConfig,'127.0.0.1',6379); //通過連接池獲取Jedis對象 Jedis resource = pool.getResource(); //獲取上面添加的datex String value = resource.get('datex'); log.info(value); resource.close(); }

2.2 生成實體模板類

package com.sx.kak.po;import java.util.ArrayList;import java.util.List;public class StudentExample { protected String orderByClause; protected boolean distinct; protected List<Criteria> oredCriteria; public StudentExample() { oredCriteria = new ArrayList<Criteria>(); } public void setOrderByClause(String orderByClause) { this.orderByClause = orderByClause; } public String getOrderByClause() { return orderByClause; } public void setDistinct(boolean distinct) { this.distinct = distinct; } public boolean isDistinct() { return distinct; } public List<Criteria> getOredCriteria() { return oredCriteria; } public void or(Criteria criteria) { oredCriteria.add(criteria); } public Criteria or() { Criteria criteria = createCriteriaInternal(); oredCriteria.add(criteria); return criteria; } public Criteria createCriteria() { Criteria criteria = createCriteriaInternal(); if (oredCriteria.size() == 0) { oredCriteria.add(criteria); } return criteria; } protected Criteria createCriteriaInternal() { Criteria criteria = new Criteria(); return criteria; } public void clear() { oredCriteria.clear(); orderByClause = null; distinct = false; } protected abstract static class GeneratedCriteria { protected List<Criterion> criteria; protected GeneratedCriteria() { super(); criteria = new ArrayList<Criterion>(); } public boolean isValid() { return criteria.size() > 0; } public List<Criterion> getAllCriteria() { return criteria; } public List<Criterion> getCriteria() { return criteria; } protected void addCriterion(String condition) { if (condition == null) {throw new RuntimeException('Value for condition cannot be null'); } criteria.add(new Criterion(condition)); } protected void addCriterion(String condition, Object value, String property) { if (value == null) {throw new RuntimeException('Value for ' + property + ' cannot be null'); } criteria.add(new Criterion(condition, value)); } protected void addCriterion(String condition, Object value1, Object value2, String property) { if (value1 == null || value2 == null) {throw new RuntimeException('Between values for ' + property + ' cannot be null'); } criteria.add(new Criterion(condition, value1, value2)); } public Criteria andIdIsNull() { addCriterion('id is null'); return (Criteria) this; } public Criteria andIdIsNotNull() { addCriterion('id is not null'); return (Criteria) this; } public Criteria andIdEqualTo(Integer value) { addCriterion('id =', value, 'id'); return (Criteria) this; } public Criteria andIdNotEqualTo(Integer value) { addCriterion('id <>', value, 'id'); return (Criteria) this; } public Criteria andIdGreaterThan(Integer value) { addCriterion('id >', value, 'id'); return (Criteria) this; } public Criteria andIdGreaterThanOrEqualTo(Integer value) { addCriterion('id >=', value, 'id'); return (Criteria) this; } public Criteria andIdLessThan(Integer value) { addCriterion('id <', value, 'id'); return (Criteria) this; } public Criteria andIdLessThanOrEqualTo(Integer value) { addCriterion('id <=', value, 'id'); return (Criteria) this; } public Criteria andIdIn(List<Integer> values) { addCriterion('id in', values, 'id'); return (Criteria) this; } public Criteria andIdNotIn(List<Integer> values) { addCriterion('id not in', values, 'id'); return (Criteria) this; } public Criteria andIdBetween(Integer value1, Integer value2) { addCriterion('id between', value1, value2, 'id'); return (Criteria) this; } public Criteria andIdNotBetween(Integer value1, Integer value2) { addCriterion('id not between', value1, value2, 'id'); return (Criteria) this; } public Criteria andNameIsNull() { addCriterion('NAME is null'); return (Criteria) this; } public Criteria andNameIsNotNull() { addCriterion('NAME is not null'); return (Criteria) this; } public Criteria andNameEqualTo(String value) { addCriterion('NAME =', value, 'name'); return (Criteria) this; } public Criteria andNameNotEqualTo(String value) { addCriterion('NAME <>', value, 'name'); return (Criteria) this; } public Criteria andNameGreaterThan(String value) { addCriterion('NAME >', value, 'name'); return (Criteria) this; } public Criteria andNameGreaterThanOrEqualTo(String value) { addCriterion('NAME >=', value, 'name'); return (Criteria) this; } public Criteria andNameLessThan(String value) { addCriterion('NAME <', value, 'name'); return (Criteria) this; } public Criteria andNameLessThanOrEqualTo(String value) { addCriterion('NAME <=', value, 'name'); return (Criteria) this; } public Criteria andNameLike(String value) { addCriterion('NAME like', value, 'name'); return (Criteria) this; } public Criteria andNameNotLike(String value) { addCriterion('NAME not like', value, 'name'); return (Criteria) this; } public Criteria andNameIn(List<String> values) { addCriterion('NAME in', values, 'name'); return (Criteria) this; } public Criteria andNameNotIn(List<String> values) { addCriterion('NAME not in', values, 'name'); return (Criteria) this; } public Criteria andNameBetween(String value1, String value2) { addCriterion('NAME between', value1, value2, 'name'); return (Criteria) this; } public Criteria andNameNotBetween(String value1, String value2) { addCriterion('NAME not between', value1, value2, 'name'); return (Criteria) this; } public Criteria andSexIsNull() { addCriterion('sex is null'); return (Criteria) this; } public Criteria andSexIsNotNull() { addCriterion('sex is not null'); return (Criteria) this; } public Criteria andSexEqualTo(String value) { addCriterion('sex =', value, 'sex'); return (Criteria) this; } public Criteria andSexNotEqualTo(String value) { addCriterion('sex <>', value, 'sex'); return (Criteria) this; } public Criteria andSexGreaterThan(String value) { addCriterion('sex >', value, 'sex'); return (Criteria) this; } public Criteria andSexGreaterThanOrEqualTo(String value) { addCriterion('sex >=', value, 'sex'); return (Criteria) this; } public Criteria andSexLessThan(String value) { addCriterion('sex <', value, 'sex'); return (Criteria) this; } public Criteria andSexLessThanOrEqualTo(String value) { addCriterion('sex <=', value, 'sex'); return (Criteria) this; } public Criteria andSexLike(String value) { addCriterion('sex like', value, 'sex'); return (Criteria) this; } public Criteria andSexNotLike(String value) { addCriterion('sex not like', value, 'sex'); return (Criteria) this; } public Criteria andSexIn(List<String> values) { addCriterion('sex in', values, 'sex'); return (Criteria) this; } public Criteria andSexNotIn(List<String> values) { addCriterion('sex not in', values, 'sex'); return (Criteria) this; } public Criteria andSexBetween(String value1, String value2) { addCriterion('sex between', value1, value2, 'sex'); return (Criteria) this; } public Criteria andSexNotBetween(String value1, String value2) { addCriterion('sex not between', value1, value2, 'sex'); return (Criteria) this; } public Criteria andAgeIsNull() { addCriterion('age is null'); return (Criteria) this; } public Criteria andAgeIsNotNull() { addCriterion('age is not null'); return (Criteria) this; } public Criteria andAgeEqualTo(String value) { addCriterion('age =', value, 'age'); return (Criteria) this; } public Criteria andAgeNotEqualTo(String value) { addCriterion('age <>', value, 'age'); return (Criteria) this; } public Criteria andAgeGreaterThan(String value) { addCriterion('age >', value, 'age'); return (Criteria) this; } public Criteria andAgeGreaterThanOrEqualTo(String value) { addCriterion('age >=', value, 'age'); return (Criteria) this; } public Criteria andAgeLessThan(String value) { addCriterion('age <', value, 'age'); return (Criteria) this; } public Criteria andAgeLessThanOrEqualTo(String value) { addCriterion('age <=', value, 'age'); return (Criteria) this; } public Criteria andAgeLike(String value) { addCriterion('age like', value, 'age'); return (Criteria) this; } public Criteria andAgeNotLike(String value) { addCriterion('age not like', value, 'age'); return (Criteria) this; } public Criteria andAgeIn(List<String> values) { addCriterion('age in', values, 'age'); return (Criteria) this; } public Criteria andAgeNotIn(List<String> values) { addCriterion('age not in', values, 'age'); return (Criteria) this; } public Criteria andAgeBetween(String value1, String value2) { addCriterion('age between', value1, value2, 'age'); return (Criteria) this; } public Criteria andAgeNotBetween(String value1, String value2) { addCriterion('age not between', value1, value2, 'age'); return (Criteria) this; } } public static class Criteria extends GeneratedCriteria { protected Criteria() { super(); } } public static class Criterion { private String condition; private Object value; private Object secondValue; private boolean noValue; private boolean singleValue; private boolean betweenValue; private boolean listValue; private String typeHandler; public String getCondition() { return condition; } public Object getValue() { return value; } public Object getSecondValue() { return secondValue; } public boolean isNoValue() { return noValue; } public boolean isSingleValue() { return singleValue; } public boolean isBetweenValue() { return betweenValue; } public boolean isListValue() { return listValue; } public String getTypeHandler() { return typeHandler; } protected Criterion(String condition) { super(); this.condition = condition; this.typeHandler = null; this.noValue = true; } protected Criterion(String condition, Object value, String typeHandler) { super(); this.condition = condition; this.value = value; this.typeHandler = typeHandler; if (value instanceof List<?>) {this.listValue = true; } else {this.singleValue = true; } } protected Criterion(String condition, Object value) { this(condition, value, null); } protected Criterion(String condition, Object value, Object secondValue, String typeHandler) { super(); this.condition = condition; this.value = value; this.secondValue = secondValue; this.typeHandler = typeHandler; this.betweenValue = true; } protected Criterion(String condition, Object value, Object secondValue) { this(condition, value, secondValue, null); } }}

2.3 生成studentMapper.java

package com.sx.kak.po;import java.util.ArrayList;import java.util.List;public class StudentExample { protected String orderByClause; protected boolean distinct; protected List<Criteria> oredCriteria; public StudentExample() { oredCriteria = new ArrayList<Criteria>(); } public void setOrderByClause(String orderByClause) { this.orderByClause = orderByClause; } public String getOrderByClause() { return orderByClause; } public void setDistinct(boolean distinct) { this.distinct = distinct; } public boolean isDistinct() { return distinct; } public List<Criteria> getOredCriteria() { return oredCriteria; } public void or(Criteria criteria) { oredCriteria.add(criteria); } public Criteria or() { Criteria criteria = createCriteriaInternal(); oredCriteria.add(criteria); return criteria; } public Criteria createCriteria() { Criteria criteria = createCriteriaInternal(); if (oredCriteria.size() == 0) { oredCriteria.add(criteria); } return criteria; } protected Criteria createCriteriaInternal() { Criteria criteria = new Criteria(); return criteria; } public void clear() { oredCriteria.clear(); orderByClause = null; distinct = false; } protected abstract static class GeneratedCriteria { protected List<Criterion> criteria; protected GeneratedCriteria() { super(); criteria = new ArrayList<Criterion>(); } public boolean isValid() { return criteria.size() > 0; } public List<Criterion> getAllCriteria() { return criteria; } public List<Criterion> getCriteria() { return criteria; } protected void addCriterion(String condition) { if (condition == null) {throw new RuntimeException('Value for condition cannot be null'); } criteria.add(new Criterion(condition)); } protected void addCriterion(String condition, Object value, String property) { if (value == null) {throw new RuntimeException('Value for ' + property + ' cannot be null'); } criteria.add(new Criterion(condition, value)); } protected void addCriterion(String condition, Object value1, Object value2, String property) { if (value1 == null || value2 == null) {throw new RuntimeException('Between values for ' + property + ' cannot be null'); } criteria.add(new Criterion(condition, value1, value2)); } public Criteria andIdIsNull() { addCriterion('id is null'); return (Criteria) this; } public Criteria andIdIsNotNull() { addCriterion('id is not null'); return (Criteria) this; } public Criteria andIdEqualTo(Integer value) { addCriterion('id =', value, 'id'); return (Criteria) this; } public Criteria andIdNotEqualTo(Integer value) { addCriterion('id <>', value, 'id'); return (Criteria) this; } public Criteria andIdGreaterThan(Integer value) { addCriterion('id >', value, 'id'); return (Criteria) this; } public Criteria andIdGreaterThanOrEqualTo(Integer value) { addCriterion('id >=', value, 'id'); return (Criteria) this; } public Criteria andIdLessThan(Integer value) { addCriterion('id <', value, 'id'); return (Criteria) this; } public Criteria andIdLessThanOrEqualTo(Integer value) { addCriterion('id <=', value, 'id'); return (Criteria) this; } public Criteria andIdIn(List<Integer> values) { addCriterion('id in', values, 'id'); return (Criteria) this; } public Criteria andIdNotIn(List<Integer> values) { addCriterion('id not in', values, 'id'); return (Criteria) this; } public Criteria andIdBetween(Integer value1, Integer value2) { addCriterion('id between', value1, value2, 'id'); return (Criteria) this; } public Criteria andIdNotBetween(Integer value1, Integer value2) { addCriterion('id not between', value1, value2, 'id'); return (Criteria) this; } public Criteria andNameIsNull() { addCriterion('NAME is null'); return (Criteria) this; } public Criteria andNameIsNotNull() { addCriterion('NAME is not null'); return (Criteria) this; } public Criteria andNameEqualTo(String value) { addCriterion('NAME =', value, 'name'); return (Criteria) this; } public Criteria andNameNotEqualTo(String value) { addCriterion('NAME <>', value, 'name'); return (Criteria) this; } public Criteria andNameGreaterThan(String value) { addCriterion('NAME >', value, 'name'); return (Criteria) this; } public Criteria andNameGreaterThanOrEqualTo(String value) { addCriterion('NAME >=', value, 'name'); return (Criteria) this; } public Criteria andNameLessThan(String value) { addCriterion('NAME <', value, 'name'); return (Criteria) this; } public Criteria andNameLessThanOrEqualTo(String value) { addCriterion('NAME <=', value, 'name'); return (Criteria) this; } public Criteria andNameLike(String value) { addCriterion('NAME like', value, 'name'); return (Criteria) this; } public Criteria andNameNotLike(String value) { addCriterion('NAME not like', value, 'name'); return (Criteria) this; } public Criteria andNameIn(List<String> values) { addCriterion('NAME in', values, 'name'); return (Criteria) this; } public Criteria andNameNotIn(List<String> values) { addCriterion('NAME not in', values, 'name'); return (Criteria) this; } public Criteria andNameBetween(String value1, String value2) { addCriterion('NAME between', value1, value2, 'name'); return (Criteria) this; } public Criteria andNameNotBetween(String value1, String value2) { addCriterion('NAME not between', value1, value2, 'name'); return (Criteria) this; } public Criteria andSexIsNull() { addCriterion('sex is null'); return (Criteria) this; } public Criteria andSexIsNotNull() { addCriterion('sex is not null'); return (Criteria) this; } public Criteria andSexEqualTo(String value) { addCriterion('sex =', value, 'sex'); return (Criteria) this; } public Criteria andSexNotEqualTo(String value) { addCriterion('sex <>', value, 'sex'); return (Criteria) this; } public Criteria andSexGreaterThan(String value) { addCriterion('sex >', value, 'sex'); return (Criteria) this; } public Criteria andSexGreaterThanOrEqualTo(String value) { addCriterion('sex >=', value, 'sex'); return (Criteria) this; } public Criteria andSexLessThan(String value) { addCriterion('sex <', value, 'sex'); return (Criteria) this; } public Criteria andSexLessThanOrEqualTo(String value) { addCriterion('sex <=', value, 'sex'); return (Criteria) this; } public Criteria andSexLike(String value) { addCriterion('sex like', value, 'sex'); return (Criteria) this; } public Criteria andSexNotLike(String value) { addCriterion('sex not like', value, 'sex'); return (Criteria) this; } public Criteria andSexIn(List<String> values) { addCriterion('sex in', values, 'sex'); return (Criteria) this; } public Criteria andSexNotIn(List<String> values) { addCriterion('sex not in', values, 'sex'); return (Criteria) this; } public Criteria andSexBetween(String value1, String value2) { addCriterion('sex between', value1, value2, 'sex'); return (Criteria) this; } public Criteria andSexNotBetween(String value1, String value2) { addCriterion('sex not between', value1, value2, 'sex'); return (Criteria) this; } public Criteria andAgeIsNull() { addCriterion('age is null'); return (Criteria) this; } public Criteria andAgeIsNotNull() { addCriterion('age is not null'); return (Criteria) this; } public Criteria andAgeEqualTo(String value) { addCriterion('age =', value, 'age'); return (Criteria) this; } public Criteria andAgeNotEqualTo(String value) { addCriterion('age <>', value, 'age'); return (Criteria) this; } public Criteria andAgeGreaterThan(String value) { addCriterion('age >', value, 'age'); return (Criteria) this; } public Criteria andAgeGreaterThanOrEqualTo(String value) { addCriterion('age >=', value, 'age'); return (Criteria) this; } public Criteria andAgeLessThan(String value) { addCriterion('age <', value, 'age'); return (Criteria) this; } public Criteria andAgeLessThanOrEqualTo(String value) { addCriterion('age <=', value, 'age'); return (Criteria) this; } public Criteria andAgeLike(String value) { addCriterion('age like', value, 'age'); return (Criteria) this; } public Criteria andAgeNotLike(String value) { addCriterion('age not like', value, 'age'); return (Criteria) this; } public Criteria andAgeIn(List<String> values) { addCriterion('age in', values, 'age'); return (Criteria) this; } public Criteria andAgeNotIn(List<String> values) { addCriterion('age not in', values, 'age'); return (Criteria) this; } public Criteria andAgeBetween(String value1, String value2) { addCriterion('age between', value1, value2, 'age'); return (Criteria) this; } public Criteria andAgeNotBetween(String value1, String value2) { addCriterion('age not between', value1, value2, 'age'); return (Criteria) this; } } public static class Criteria extends GeneratedCriteria { protected Criteria() { super(); } } public static class Criterion { private String condition; private Object value; private Object secondValue; private boolean noValue; private boolean singleValue; private boolean betweenValue; private boolean listValue; private String typeHandler; public String getCondition() { return condition; } public Object getValue() { return value; } public Object getSecondValue() { return secondValue; } public boolean isNoValue() { return noValue; } public boolean isSingleValue() { return singleValue; } public boolean isBetweenValue() { return betweenValue; } public boolean isListValue() { return listValue; } public String getTypeHandler() { return typeHandler; } protected Criterion(String condition) { super(); this.condition = condition; this.typeHandler = null; this.noValue = true; } protected Criterion(String condition, Object value, String typeHandler) { super(); this.condition = condition; this.value = value; this.typeHandler = typeHandler; if (value instanceof List<?>) {this.listValue = true; } else {this.singleValue = true; } } protected Criterion(String condition, Object value) { this(condition, value, null); } protected Criterion(String condition, Object value, Object secondValue, String typeHandler) { super(); this.condition = condition; this.value = value; this.secondValue = secondValue; this.typeHandler = typeHandler; this.betweenValue = true; } protected Criterion(String condition, Object value, Object secondValue) { this(condition, value, secondValue, null); } }}

2.4 生成StudentMapper.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.sx.kak.mapper.StudentMapper' > <resultMap type='com.sx.kak.po.Student' > <id column='id' property='id' jdbcType='INTEGER' /> <result column='NAME' property='name' jdbcType='VARCHAR' /> <result column='sex' property='sex' jdbcType='VARCHAR' /> <result column='age' property='age' jdbcType='VARCHAR' /> </resultMap> <sql > <where > <foreach collection='oredCriteria' item='criteria' separator='or' > <if test='criteria.valid' > <trim prefix='(' suffix=')' prefixOverrides='and' > <foreach collection='criteria.criteria' item='criterion' > <choose ><when test='criterion.noValue' > and ${criterion.condition}</when><when test='criterion.singleValue' > and ${criterion.condition} #{criterion.value}</when><when test='criterion.betweenValue' > and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}</when><when test='criterion.listValue' > and ${criterion.condition} <foreach collection='criterion.value' item='listItem' open='(' close=')' separator=',' > #{listItem} </foreach></when> </choose> </foreach> </trim> </if> </foreach> </where> </sql> <sql > <where > <foreach collection='example.oredCriteria' item='criteria' separator='or' > <if test='criteria.valid' > <trim prefix='(' suffix=')' prefixOverrides='and' > <foreach collection='criteria.criteria' item='criterion' > <choose ><when test='criterion.noValue' > and ${criterion.condition}</when><when test='criterion.singleValue' > and ${criterion.condition} #{criterion.value}</when><when test='criterion.betweenValue' > and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}</when><when test='criterion.listValue' > and ${criterion.condition} <foreach collection='criterion.value' item='listItem' open='(' close=')' separator=',' > #{listItem} </foreach></when> </choose> </foreach> </trim> </if> </foreach> </where> </sql> <sql > id, NAME, sex, age </sql> <select resultMap='BaseResultMap' parameterType='com.sx.kak.po.StudentExample' > select <if test='distinct' > distinct </if> <include refid='Base_Column_List' /> from student <if test='_parameter != null' > <include refid='Example_Where_Clause' /> </if> <if test='orderByClause != null' > order by ${orderByClause} </if> </select> <select resultMap='BaseResultMap' parameterType='java.lang.Integer' > select <include refid='Base_Column_List' /> from student where id = #{id,jdbcType=INTEGER} </select> <delete parameterType='java.lang.Integer' > delete from student where id = #{id,jdbcType=INTEGER} </delete> <delete parameterType='com.sx.kak.po.StudentExample' > delete from student <if test='_parameter != null' > <include refid='Example_Where_Clause' /> </if> </delete> <insert parameterType='com.sx.kak.po.Student' > insert into student (id, NAME, sex, age) values (#{id,jdbcType=INTEGER}, #{name,jdbcType=VARCHAR}, #{sex,jdbcType=VARCHAR}, #{age,jdbcType=VARCHAR}) </insert> <insert parameterType='com.sx.kak.po.Student' > insert into student <trim prefix='(' suffix=')' suffixOverrides=',' > <if test='id != null' > id, </if> <if test='name != null' > NAME, </if> <if test='sex != null' > sex, </if> <if test='age != null' > age, </if> </trim> <trim prefix='values (' suffix=')' suffixOverrides=',' > <if test='id != null' > #{id,jdbcType=INTEGER}, </if> <if test='name != null' > #{name,jdbcType=VARCHAR}, </if> <if test='sex != null' > #{sex,jdbcType=VARCHAR}, </if> <if test='age != null' > #{age,jdbcType=VARCHAR}, </if> </trim> </insert> <select parameterType='com.sx.kak.po.StudentExample' resultType='java.lang.Integer' > select count(*) from student <if test='_parameter != null' > <include refid='Example_Where_Clause' /> </if> </select> <update parameterType='map' > update student <set > <if test='record.id != null' > id = #{record.id,jdbcType=INTEGER}, </if> <if test='record.name != null' > NAME = #{record.name,jdbcType=VARCHAR}, </if> <if test='record.sex != null' > sex = #{record.sex,jdbcType=VARCHAR}, </if> <if test='record.age != null' > age = #{record.age,jdbcType=VARCHAR}, </if> </set> <if test='_parameter != null' > <include refid='Update_By_Example_Where_Clause' /> </if> </update> <update parameterType='map' > update student set id = #{record.id,jdbcType=INTEGER}, NAME = #{record.name,jdbcType=VARCHAR}, sex = #{record.sex,jdbcType=VARCHAR}, age = #{record.age,jdbcType=VARCHAR} <if test='_parameter != null' > <include refid='Update_By_Example_Where_Clause' /> </if> </update> <update parameterType='com.sx.kak.po.Student' > update student <set > <if test='name != null' > NAME = #{name,jdbcType=VARCHAR}, </if> <if test='sex != null' > sex = #{sex,jdbcType=VARCHAR}, </if> <if test='age != null' > age = #{age,jdbcType=VARCHAR}, </if> </set> where id = #{id,jdbcType=INTEGER} </update> <update parameterType='com.sx.kak.po.Student' > update student set NAME = #{name,jdbcType=VARCHAR}, sex = #{sex,jdbcType=VARCHAR}, age = #{age,jdbcType=VARCHAR} where id = #{id,jdbcType=INTEGER} </update></mapper>

2.5 編寫application.yml

server: port: 8080spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://localhost:3306/db0711?characterEncoding=utf8&serverTimezone=UTC username: root password: rootmybatis: type-aliases-package: po mapper-locations: classpath:mapping/*.xml

2.6 編寫JsonUtils工具類

package com.sx.kak.utils;import java.util.List;import com.fasterxml.jackson.core.JsonProcessingException;import com.fasterxml.jackson.databind.JavaType;import com.fasterxml.jackson.databind.ObjectMapper;public class JsonUtils { // 定義jackson對象 private static final ObjectMapper MAPPER = new ObjectMapper(); /** * 將對象轉換成json字符串。 * <p>Title: pojoToJson</p> * <p>Description: </p> * @param data * @return */ public static String objectToJson(Object data) { try {String string = MAPPER.writeValueAsString(data);return string;} catch (JsonProcessingException e) {e.printStackTrace();} return null; } /** * 將json結果集轉化為對象 * * @param jsonData json數據 * @param clazz 對象中的object類型 * @return */ public static <T> T jsonToPojo(String jsonData, Class<T> beanType) { try { T t = MAPPER.readValue(jsonData, beanType); return t; } catch (Exception e) { e.printStackTrace(); } return null; } /** * 將json數據轉換成pojo對象list * <p>Title: jsonToList</p> * <p>Description: </p> * @param jsonData * @param beanType * @return */ public static <T>List<T> jsonToList(String jsonData, Class<T> beanType) { JavaType javaType = MAPPER.getTypeFactory().constructParametricType(List.class, beanType); try { List<T> list = MAPPER.readValue(jsonData, javaType); return list;} catch (Exception e) {e.printStackTrace();} return null; }}

2.7 編寫RedisUtils工具類

package com.sx.kak.utils;import java.util.List;import com.fasterxml.jackson.core.JsonProcessingException;import com.fasterxml.jackson.databind.JavaType;import com.fasterxml.jackson.databind.ObjectMapper;public class JsonUtils { // 定義jackson對象 private static final ObjectMapper MAPPER = new ObjectMapper(); /** * 將對象轉換成json字符串。 * <p>Title: pojoToJson</p> * <p>Description: </p> * @param data * @return */ public static String objectToJson(Object data) { try {String string = MAPPER.writeValueAsString(data);return string;} catch (JsonProcessingException e) {e.printStackTrace();} return null; } /** * 將json結果集轉化為對象 * * @param jsonData json數據 * @param clazz 對象中的object類型 * @return */ public static <T> T jsonToPojo(String jsonData, Class<T> beanType) { try { T t = MAPPER.readValue(jsonData, beanType); return t; } catch (Exception e) { e.printStackTrace(); } return null; } /** * 將json數據轉換成pojo對象list * <p>Title: jsonToList</p> * <p>Description: </p> * @param jsonData * @param beanType * @return */ public static <T>List<T> jsonToList(String jsonData, Class<T> beanType) { JavaType javaType = MAPPER.getTypeFactory().constructParametricType(List.class, beanType); try { List<T> list = MAPPER.readValue(jsonData, javaType); return list;} catch (Exception e) {e.printStackTrace();} return null; }}

2.8 編寫RedisUtils工具類的實現類

package com.sx.kak.utils;import redis.clients.jedis.Jedis;/** * Created by Kak on 2020/9/17. */public class SingleTonRedisUtil implements RedisUtils{ private Jedis jedis; public SingleTonRedisUtil(Jedis jedis){ this.jedis = jedis; } @Override public void hset(String key, String filed, String value) { jedis.hset(key, filed, value); } @Override public String hget(String key, String field) { return jedis.hget(key, field); }}

2.9 配置初始化文件

package com.sx.kak.config;import com.sx.kak.utils.SingleTonRedisUtil;import org.springframework.beans.factory.annotation.Qualifier;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import redis.clients.jedis.Jedis;/** * Created by Kak on 2020/9/17. */@Configurationpublic class RedisConfig { @Bean public SingleTonRedisUtil singleTonRedisUtil(@Qualifier('jedis') Jedis jedis){ SingleTonRedisUtil singleTonRedisUtil = new SingleTonRedisUtil(jedis); return singleTonRedisUtil; } @Bean(name = 'jedis') public Jedis getJedis(){ Jedis jedis = new Jedis('127.0.0.1',6379); return jedis; }}

2.10 配置StudentService.java

package com.sx.kak.service;import com.sx.kak.po.Student;import java.util.List;/** * Created by Kak on 2020/9/17. */public interface StudentService { public List<Student> findAllStudent();}

2.11 配置StudentServiceImpl.java

package com.sx.kak.service.serviceImpl;import com.sx.kak.mapper.StudentMapper;import com.sx.kak.po.Student;import com.sx.kak.po.StudentExample;import com.sx.kak.service.StudentService;import com.sx.kak.utils.JsonUtils;import com.sx.kak.utils.SingleTonRedisUtil;import lombok.extern.slf4j.Slf4j;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Service;import java.util.List;/** * Created by Kak on 2020/9/17. */@Service@Slf4jpublic class StudentServiceImpl implements StudentService { @Autowired(required = false) private StudentMapper studentMapper; //注入自定義的redis工具 @Autowired private SingleTonRedisUtil redisUtil; @Override public List<Student> findAllStudent() { //獲取redis中存出的json字符串 String student = redisUtil.hget('student', '0'); if(student!=null){ log.info('get student from redis'); //json對象,封裝的對象類型 List<Student> students = JsonUtils.jsonToList(student, Student.class); return students; } //創建查詢模板對象 StudentExample studentExample = new StudentExample(); List<Student> students = studentMapper.selectByExample(studentExample); log.info('get student from db'); try{ //將查詢的集合轉化為json字符串 String s = JsonUtils.objectToJson(students); //放入redis中 redisUtil.hset('student','0',s); log.info('set data to redis'); }catch (Exception ex){ log.info(ex.getMessage()); } return students; }}

2.12 編寫全查展示頁面

<!DOCTYPE html><html lang='en' xmlns:th='http://www.thymeleaf.org'><head> <meta charset='UTF-8'/> <title>學生全查頁面</title></head><body><div id='findAll'> <table> <tr> <th>ID</th> <th>NAME</th> <th>SEX</th> <th>AGE</th> <th>Action</th> </tr> <tr th:each='s:${students}'> <td th:text='${s.id}'></td> <td th:text='${s.name}'></td> <td th:text='${s.sex}'></td> <td th:text='${s.age}'></td> </tr> </table></div></body></html>

2.13 編寫StudentController

package com.sx.kak.Controller;import com.sx.kak.po.Student;import com.sx.kak.service.StudentService;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Controller;import org.springframework.ui.Model;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;import java.util.List;/** * Created by Kak on 2020/9/17. */@Controllerpublic class StudentController { @Autowired(required = false) private StudentService studentService; @RequestMapping('/findStudent') public String findAllStu(Model model){ List<Student> allStudent = studentService.findAllStudent(); model.addAttribute('students',allStudent); return 'showAllStudent'; }}

Java中的使用及連接Redis數據庫(附源碼)

3. 結果

從打印出的日志可以看出,第一次訪問是從數據庫得到數據,然后存入redis中

第二次直接從redis中獲取

Java中的使用及連接Redis數據庫(附源碼)

到此這篇關于Java中的使用及連接Redis數據庫(附源碼)的文章就介紹到這了,更多相關Java 使用及連接Redis內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Java
相關文章:
主站蜘蛛池模板: 亚洲人成人一区二区在线观看 | 成年人免费看片 | 7777av| 三级免费网站 | 欧美精品一区二区在线观看 | 91在线观看网站 | 日韩精品一区二区三区免费观看视频 | 欧美一级免费播放 | 999在线视频免费观看 | 日韩性猛交 | 一区二区三区视频免费在线观看 | 欧美日韩激情四射 | 日韩一区二区三区在线 | 在线免费观看成年人视频 | 成人一区在线观看 | 亚洲激情视频在线播放 | 国产91看片 | 在线播放高清视频www | 操操日 | 午夜精品久久久久久久白皮肤 | 欧美日韩第一 | 日韩一区二区成人 | 国产一区二区在线看 | 91短视频版在线观看www免费 | 欧美精品一区二区三区一线天视频 | 国产精品一区av | 国产在线欧美 | 国产伦精品一区二区三区四区视频 | 欧美综合一区二区 | 秋霞在线一区 | 国产在线在线 | 在线观看免费视频a | 成人国产精品久久 | 免费观看一级毛片 | 日本久久精品视频 | 欧美久久成人 | 91 在线| 久久久久久久国产精品 | 亚洲免费网站 | 欧美精品91 | av网站免费观看 | 国产成人精品一区二区三区四区 | 午夜影院在线观看视频 | 亚洲精品久久久久久下一站 | 奇米精品一区二区三区在线观看 | 六月丁香在线观看 | 精品久久一二三区 | 最新中文字幕在线 | 大香伊蕉在人线视频777 | 日韩3级 | 亚洲激情精品 | 草久久久| 91精品国产欧美一区二区成人 | 欧美激情一区二区三区四区 | 精品av| 欧美一区二区三区精品 | 亚洲一区二区三区高清 | 国产一级特黄aaa大片评分 | 午夜爽视频 | 欧美 日韩 亚洲 一区 | 亚洲 欧美日韩 国产 中文 | 亚洲精品中文字幕乱码无线 | 涩涩视频观看 | 国产免费自拍 | 精品天堂 | 思九九爱九九 | 天天av天天操 | 色婷婷国产精品免费网站 | 后进极品白嫩翘臀在线视频 | 国产一区| 亚洲精品一二三区 | 成人高清在线 | 看片国产 | 91久久久久久久久 | 成人欧美一区二区三区黑人孕妇 | 一本一道久久精品综合 | 欧美成人一区二区三区片免费 | 专干老肥女人88av | 一区二区三区久久 | 国产综合久久久久久鬼色 | 国产视频久久久 | 日本精品免费 | 成人二区| 特级淫片女子高清视频在线观看 | 欧美日韩一区二区三区在线观看 | 美女久久 | 亚洲欧美成人影院 | 国产亚洲成av人片在线观看桃 | 一区二区三区亚洲 | 91观看| 欧美日韩黄色一级片 | 国产亚洲精品v | 热久久免费视频 | 免费看黄视频网站 | 午夜资源 | 精品无人乱码区1区2区3区 | 亚洲国产精品成人 | 特黄一级 | 影音先锋中文字幕在线 | 国产美女精品 | 欧美一区二区三区视频 | 成人a视频在线观看 | 国产成人精品午夜视频免费 | 四虎影院免费网址 | 羞羞网页 | 亚洲激情在线 | 欧美一区二区免费 | 久久精品亚洲欧美日韩精品中文字幕 | 免费中文字幕 | 欧美日本乱大交xxxxx | 91久久国产综合久久 | 欧美日韩电影一区 | 一区二区在线免费观看 | 亚洲最黄网站 | 国产中文字幕在线观看 | 日本亚洲精品成人欧美一区 | 日韩精品在线网站 | 人妖天堂狠狠ts人妖天堂狠狠 | 亚洲狠狠久久综合一区77777 | 国产福利一区二区三区四区 | 国产一区二区久久 | 色爽女人免费 | 在线欧美日韩 | 每日更新av | 韩国精品主播一区二区在线观看 | 中文字幕av第一页 | 精品综合久久 | 日韩电影一区二区在线观看 | 日本高清无卡码一区二区久久 | 亚洲一区中文字幕在线观看 | 国精品一区 | 欧美在线一区二区三区 | 操操操操操操 | 欧美激情欧美激情在线五月 | 国产拍拍视频 | 狠狠久 | t66y最新地址一地址二69 | 嫩草成人影院 | 91人人爽人人爽人人精88v | 欧美在线视频网 | 最新中文字幕久久 | 国产精品日本欧美一区二区三区 | av午夜电影 | 夜夜骑av | 久久国产精品久久 | 国产精品视频在线观看 | 国产精品久久久久久久浪潮网站 | 91视频日韩| 成人男女激情免费视频 | 美女中文字幕视频 | 久久久精品网站 | 国产做a爰片久久毛片a我的朋友 | 日本一区二区不卡 | 青青操天天干 | 欧美日韩国产在线观看 | 色久视频| 午夜私人影院 | 一区二区三区四区精品 | 米奇狠狠狠狠8877 | 日韩免费 | 久久av一区二区三区 | 麻豆自拍偷拍 | 黄色免费网站在线看 | 国产91久久精品一区二区 | 91在线视频观看 | 久久精品二 | 日日干夜夜干 | 国产成人欧美一区二区三区的 | 日日干日日操 | 久久久久久99 | 九九精品在线 | 欧美一区在线视频 | 精品精品 | 一区二区三区在线 | 免费黄色在线视频网址 | 久久久婷| 中文字幕在线视频第一页 | 欧美一区二区三区xxxx监狱 | 亚洲精品二区三区 | 黄色激情网站 | 欧美成人激情视频 | 自拍偷拍在线视频 | 91在线视频一区 | 国产免费黄视频 | 欧美亚洲综合久久 | 久久伊人青青草 | 嫩呦国产一区二区三区av | 中文字幕国产区 | 久久se精品一区精品二区 | 黄色毛片在线观看 | 婷婷午夜激情 | 99精品免费视频 | 81精品国产乱码久久久久久 | 亚洲国产精品久久 | 少妇久久久 | 日韩中文字幕一区二区 | 久久毛片 | 日韩成人av在线 | 激情久久久久 | 欧美自拍三区 | 九九精品免费视频 | 日本成人午夜影院 | 免费成人av | 久久久美女 | 精品久久久久av | 婷婷综合五月天 | 日韩毛片在线视频 | 午夜视频免费 | 久久亚洲综合 | 91精品国产综合久久久久久丝袜 | 欧美一级特黄aaaaaaa视频片 | 青春草在线观看 | 在线视频一区二区 | 国产乱码精品一区二区三区忘忧草 | 精品久久久久久久久久久久 | 亚洲日本中文 | 成人无遮挡毛片免费看 | a级在线免费观看 | 国产中文字幕在线 | 国产欧美精品一区aⅴ影院 毛片视频网站 | 久草视频在线首页 | 亚洲精品不卡 | 青娱乐网 | 91久久久久久久久 | 亚洲一区二区视频在线播放 | 国产成人99久久亚洲综合精品 | 国产精品一二区 | 天天天插 | 亚洲a网 | 污色视频在线观看 | 亚洲 欧美 精品 | 日本黄色片免费 | 一区二区三区免费 | 国产精品毛片在线 | 久久久www| 久久久精品久久久 | 北条麻妃99精品青青久久 | 午夜精品久久久久久久久久久久 | 久久一区二区三区四区五区 | 91精品国产91久久久久久吃药 | 日韩精品一区二区三区 | 欧美a在线看 | 国产精品久久久久久久久久妇女 | 精品久久久久久久久久久久久久久久久久 | 国产精品久久久久久久久 | 国产精品一区在线 | 中文字幕日韩欧美 | 免费黄色在线观看 | 日韩在线观看高清 | 国产精品毛片久久久久久久 | 日韩欧美国产精品综合嫩v 久久久久久国产精品高清 国产目拍亚洲精品99久久精品 | 欧美日韩在线视频免费 | 国产 欧美 日韩 一区 | 日韩一区在线观看视频 | 欧美日韩一级电影 | 亚洲精品一区二区在线 | 欧美一区二区三区精品免费 | 精品一区二区三区免费看 | 国产精品成人3p一区二区三区 | 国产精品久久久久久久久久免费看 | 成人午夜精品久久久久久久3d | 国产色 | 亚洲成人基地 | 欧美在线观看视频 | 毛片91| 久久国产欧美一区二区三区精品 | 在线观看亚洲一区二区三区 | 国产精品欧美一区二区三区 | 91一区二区在线 | 日本一区二区不卡 | 粉嫩视频在线观看 | 国产一区二区视频免费看 | 国产一区二区在线看 | 欧美一区| 亚洲一级毛片 | 亚洲成人精品在线观看 | 成人日韩 | 岛国在线免费 | 日韩免费一区二区 | 精品久久久久久久久久久久久 | 色视频在线免费观看 | 国产美女永久免费无遮挡 | 日本国产一区二区 | 久草视频在线播放 | 成av在线| 国产精品久久久久aaaa九色 | 国产精品1区2区 | 中文字幕精品一区 | 日韩一区二区中文字幕 | 欧美精品一区二区三区在线四季 | 人人爽视频 | 国产精品.xx视频.xxtv | 亚洲精品影院在线 | 成人不卡| 国产综合亚洲精品一区二 | 亚洲永久精品www | 在线精品自拍 | 在线看91| 在线看亚洲 | 国产高清在线精品一区二区三区 | 一区二区精品在线观看 | 久久综合一区二区 | 日韩艹逼视频 | 日韩免费一区二区 | 日本高清h色视频在线观看 日日干日日操 | 成人欧美一区二区三区黑人孕妇 | 欧美日韩国产高清视频 | av一二三四 | 岛国av在线| 亚洲国产精品人人爽夜夜爽 | 天天天干夜夜夜操 | 91精品国产乱码久久蜜臀 | 伊人春色成人 | 羞羞视频免费看 | 男人超碰| 欧美一级视频在线观看 | 精品一区二区三区免费 | 毛片链接 | 欧美韩国日本一区 | 欧美一区二区久久 | 成人av影片在线观看 | 综合久久国产九一剧情麻豆 | 久久免费精品视频 | 日韩一区二区三区视频 | 懂色av一区二区三区在线播放 | 日韩爽妇网 | 亚洲激情在线播放 | 欧美精产国品一二三区 | 欧美国产视频 | 国产女人和拘做受视频 | 午夜视频91 | 亚洲精品成人免费 | 亚洲免费视频一区 | 色在线免费视频 | 久久大陆| 欧洲一级毛片 | 免费观看一级特黄欧美大片 | 91在线成人 | 亚洲永久| 国产成人61精品免费看片 | 久久精品视频免费观看 | 久久99精品视频在线观看 | 亚洲综合无码一区二区 | 欧美区国产区 | 久久国产精品视频 | 操人网址 | 午夜视频在线播放 | 久久午夜电影院 | 一级色视频 | 在线观看国产精品一区 | 91亚洲在线 | 精品免费视频 | caoporn免费 | 成人欧美一区二区三区在线观看 | 亚洲黄色一区二区三区 | 午夜影院入口 | 亚洲天堂一区 | 日本欧美久久久久免费播放网 | 欧美喷潮久久久xxxxx | 国产精品久久久久久久久久三级 | 亚洲高清视频一区二区 | 黄网站免费在线 | 国产精品www | 中文字幕亚洲一区二区三区 | 欧洲亚洲精品久久久久 | 99这里只有精品 | 久久久久一 | 精品久久久久久久久久久久久久久久久久久 | 久久夜视频 | 一区中文字幕 | 国产精品一区二区三区在线 | 日韩欧美一区二区在线观看 | 99福利视频 | 91在线观看视频 | 九九香蕉视频 | 成人福利在线 | 成人一区av | 精品久久久久久亚洲精品 | 免费午夜电影 | 99久久久国产精品美女 | 亚洲一区二区三区在线播放 | 中文字幕91 | 成人网18免费网站 | 99视频精品 | 毛片黄色 | 麻豆精品国产传媒 | 一级黄色录象片 | 亚洲视频 欧美视频 | 国精产品一区二区三区黑人免费看 | 日韩精品一区二 | 羞羞视频在线观看免费 | 动漫羞免费网站中文字幕 | 一级全黄少妇性色生活片免费 | 欧美一级特黄aaaaaaa在线观看 | 国偷自产一区二区免费视频 | 成人在线网 | www.国产精品.com| 精品免费久久久久 | 色婷婷综合久久久中文字幕 | 国产精品国产三级国产aⅴ原创 | 久久久久久国产视频 | 国产精品一区在线看 | 亚洲中出 | 欧美精品一级二级 | 久久这里只有精品首页 | 九九亚洲精品 | 欧美日韩在线免费观看 | 国产一区二区三区四区三区 | 丁香婷婷在线观看 | 伊人一二三区 | 97操视频| 国产精品污www一区二区三区 | 日韩免费一区 | 综合精品久久久 | 91破解版在线 | 亚洲 | 久久久精品网站 | 国产探花在线精品一区二区 | 国产精品久久久久久久一区探花 | 特级毛片在线大全免费播放 | 国产精品久久久久一区二区三区 | 日韩免费区 | 亚洲综合视频一区 | 久久天堂 | 国产在线成人 | 国产片侵犯亲女视频播放 | 嫩草网站在线观看 | 超碰av在线| 九草av | 午夜久久 | av资源中文在线天堂 | 91一区在线 | 九九在线视频 | 欧美日韩精品一区二区三区 | 久久精品免费观看视频 | 免费色在线 | 成人免费小视频 | 国产aⅴ | 国产美女高潮一区二区三区 | 无码日韩精品一区二区免费 | 国产亚洲精品精品国产亚洲综合 | 日夜夜精品| 久久久国产精品入口麻豆 | 亚洲精品3| 中文字幕成人 | 日韩欧美精品一区二区三区 | 国产欧美精品一区二区三区 | 国产成人精品久久 | 久久久99精品免费观看 | 国产欧美亚洲精品 | 一区二区在线不卡 | 亚洲午夜在线 | 中文字幕一区二区在线观看 | 欧美久久精品一级c片 | 特级毛片www| 欧美日韩高清在线一区 | 日本久久久久久久 | 久久99精品久久久久久琪琪 | 欧美精品被 | 色精品| 久久99深爱久久99精品 | av中文字幕在线播放 | 中文字幕亚洲视频 | 欧美片网站免费 | 国产成人精品一区二区三区视频 | 黄a免费 | 九九热精品视频在线观看 | 亚洲电影在线看 | 国产三级日本三级美三级 | 91秦先生艺校小琴 | 日韩欧美视频 | 男女www视频| 日韩精品一区二区三区中文字幕 | 国产精品国产精品国产 | 免费视频一区 | 国产福利网站 | 日韩中文在线视频 | 黄色片网站视频 | 亚洲天堂久 | www精品美女久久久tv | 男女羞羞视频免费在线观看 | 99色在线视频| av看片网| 男女免费视频 | 亚洲中午字幕 | 天天在线综合 | 亚洲国产成人av | 日韩午夜电影在线观看 | 亚洲精品综合 | 亚洲人成网站999久久久综合 | 天天舔日日干 | 久久av一区二区三区 | 日本一区二区三区免费观看 | 欧美亚洲性视频 | 日韩精品一区二区三区在线观看 | 国精产品一区二区三区有限公司 | 99精品在线观看 | 精品国产99 | av免费网站在线观看 | 91精品国产aⅴ | 国产在线视频在线 | 91色乱码一区二区三区 | 小草av| 欧美一区二区三区精品 | 91亚洲免费视频 | 亚洲欧美在线综合 | 奇米亚洲午夜久久精品 | 成人18视频在线观看 | 亚洲 中文 欧美 日韩 在线观看 | 国产精品综合久久 | 久久精品99视频 | 国产精品久久久久久亚洲调教 | 日韩一区二区中文字幕 | 国产精品99一区二区三区 | 久久精品国产亚洲blacked | 中文字幕第二页 | 亚洲欧洲精品在线 | 久久99国产精品免费网站 | 久操综合 | 91精品国产高清久久久久久久久 | 91亚洲国产 | 精品国产青草久久久久福利 | 高清av网站 | 亚洲第一av | 成人一区二区在线 | 日韩中文一区二区三区 | 日韩一区在线观看视频 | 中文在线亚洲 | 欧美日韩二区三区 | 亚洲精品视频一区 | 精品国产乱码久久久久久88av | 91爱爱 | 午夜精品久久久久久久久久久久 | 精品一级 | 九九综合九九 | 一区二区三区四区久久 | 久久亚洲一区 | 一区二区在线播放视频 | 久久久国产视频 | 欧美精品日韩 | 蜜臀视频在线观看 | 亚洲视频自拍 | 成人h动漫精品一区二区器材 | 欧美激情视频一区二区三区在线播放 | 日韩欧美一级 | 岛国伊人 | 一区二区三区四区久久 | 欧美日韩精品一区二区三区蜜桃 | 国产日韩欧美一区二区在线观看 | 午夜精品久久久久久久男人的天堂 | 久久一区二区三 | 国产精品91av | 欧美在线激情 | 亚洲一区二区在线 | 中文字幕在线播放不卡 | 欧美黄色性视频 | 韩国三级中文字幕hd久久精品 | 日韩在线中文字幕 | 亚洲成人av在线 | bxbx成人精品一区二区三区 | av色伊人久久综合一区二区 | 精品一区二区三区久久 | 国产精品久久久久久一区二区三区 | 91精品久久久久久久久久 | 亚洲一区 中文字幕 | 香蕉成人啪国产精品视频综合网 | 亚洲精品一区二区三区蜜桃久 | 成人在线观看h | 国产成人精品一区二区三区视频 | 精品一区二区三区四区视频 | 91精品久久久久久久久久 | 国产激情精品 | 亚洲综合精品久久 | 国产一级毛片国语一级 | 欧美一级视频 | 亚洲免费在线观看 | 久操草| 中文字幕三区 | 亚洲精品国产剧情久久9191 | 久久精品中文 | 日韩看片 | 偷派自拍 | 日韩精品一区二区三区中文在线 | 日本久久精品视频 | 91丁香婷婷综合久久欧美 | 四虎永久在线观看 | 精品一区二区三区免费视频 | 亚洲一区日韩 | 欧美精品一区二区三区在线四季 | 免费av片 | 色婷婷综合在线视频 | 免费的污网站 | 中文字幕精品一区二区三区精品 | 色综合天天综合网国产成人网 | 欧洲毛片 | 永久91嫩草亚洲精品人人 | 一级毛片免费完整视频 | 国产91精品一区二区绿帽 | 亚洲 精品 综合 精品 自拍 | 成年人在线视频播放 | 中文字幕观看 | 免费看片国产 | 中文字幕一区二区三区乱码图片 | 日韩精品视频在线观看一区二区 | 日日干夜夜操 | 亚洲伦理一区 | av久草| 81精品国产乱码久久久久久 | 91精品国产综合久久国产大片 | 国产精品第一国产精品 | 久久密 | 一区二区三区在线播放视频 | 日本一区二区三区四区 | 亚洲第一成年免费网站 | 亚洲www啪成人一区二区 | 久久精品小视频 |