Redis在Java中的使用及连接数据库(附源码),刚面试了阿里,滴滴,网易怎么办

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以添加V获取:vip1024b (备注Java)
img

正文

addCriterion(“id <=”, value, “id”);

return (Criteria) this;

}

public Criteria andIdIn(List values) {

addCriterion(“id in”, values, “id”);

return (Criteria) this;

}

public Criteria andIdNotIn(List 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 values) {

addCriterion(“NAME in”, values, “name”);

return (Criteria) this;

}

public Criteria andNameNotIn(List 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 values) {

addCriterion(“sex in”, values, “sex”);

return (Criteria) this;

}

public Criteria andSexNotIn(List 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 values) {

addCriterion(“age in”, values, “age”);

return (Criteria) this;

}

public Criteria andAgeNotIn(List 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.mapper;

import com.sx.kak.po.Student;

import com.sx.kak.po.StudentExample;

import java.util.List;

import org.apache.ibatis.annotations.Param;

public interface StudentMapper {

int countByExample(StudentExample example);

int deleteByExample(StudentExample example);

int deleteByPrimaryKey(Integer id);

int insert(Student record);

int insertSelective(Student record);

List selectByExample(StudentExample example);

Student selectByPrimaryKey(Integer id);

int updateByExampleSelective(@Param(“record”) Student record, @Param(“example”) StudentExample example);

int updateByExample(@Param(“record”) Student record, @Param(“example”) StudentExample example);

int updateByPrimaryKeySelective(Student record);

int updateByPrimaryKey(Student record);

}

2.4 生成StudentMapper.xml


<?xml version="1.0" encoding="UTF-8" ?>

and ${criterion.condition}

and ${criterion.condition} #{criterion.value}

and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}

and ${criterion.condition}

#{listItem}

and ${criterion.condition}

and ${criterion.condition} #{criterion.value}

and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}

and ${criterion.condition}

#{listItem}

id, NAME, sex, age

select

distinct

from student

order by ${orderByClause}

select

from student

where id = #{id,jdbcType=INTEGER}

delete from student

where id = #{id,jdbcType=INTEGER}

delete from student

insert into student (id, NAME, sex,

age)

values (#{id,jdbcType=INTEGER}, #{name,jdbcType=VARCHAR}, #{sex,jdbcType=VARCHAR},

#{age,jdbcType=VARCHAR})

insert into student

id,

NAME,

sex,

age,

#{id,jdbcType=INTEGER},

#{name,jdbcType=VARCHAR},

#{sex,jdbcType=VARCHAR},

#{age,jdbcType=VARCHAR},

select count(*) from student

update student

id = #{record.id,jdbcType=INTEGER},

NAME = #{record.name,jdbcType=VARCHAR},

sex = #{record.sex,jdbcType=VARCHAR},

age = #{record.age,jdbcType=VARCHAR},

update student

set id = #{record.id,jdbcType=INTEGER},

NAME = #{record.name,jdbcType=VARCHAR},

sex = #{record.sex,jdbcType=VARCHAR},

age = #{record.age,jdbcType=VARCHAR}

update student

NAME = #{name,jdbcType=VARCHAR},

sex = #{sex,jdbcType=VARCHAR},

age = #{age,jdbcType=VARCHAR},

where id = #{id,jdbcType=INTEGER}

update student

set NAME = #{name,jdbcType=VARCHAR},

sex = #{sex,jdbcType=VARCHAR},

age = #{age,jdbcType=VARCHAR}

where id = #{id,jdbcType=INTEGER}

2.5 编写application.yml


server:

port: 8080

spring:

datasource:

driver-class-name: com.mysql.cj.jdbc.Driver

url: jdbc:mysql://localhost:3306/db0711?characterEncoding=utf8&serverTimezone=UTC

username: root

password: root

mybatis:

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字符串。

  • Title: pojoToJson

  • Description:

  • @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 jsonToPojo(String jsonData, Class beanType) {

try {

T t = MAPPER.readValue(jsonData, beanType);

return t;

} catch (Exception e) {

e.printStackTrace();

}

return null;

}

/**

  • 将json数据转换成pojo对象list

  • Title: jsonToList

  • Description:

  • @param jsonData

  • @param beanType

  • @return

*/

public static List jsonToList(String jsonData, Class beanType) {

JavaType javaType = MAPPER.getTypeFactory().constructParametricType(List.class, beanType);

try {

List list = MAPPER.readValue(jsonData, javaType);

return list;

} catch (Exception e) {

e.printStackTrace();

}

return null;

}

}

2.7 编写RedisUtils工具类


package com.sx.kak.utils;

/**

  • Created by Kak on 2020/9/17.

*/

public interface RedisUtils {

public void hset(String key,String filed,String value);

public String hget(String key,String field );

public void set(String key ,String value);

public String get (String key);

public void expire(String key,int seconds);

public long ttl(String key);

}

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.

*/

@Configuration

public 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 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

@Slf4j

public class StudentServiceImpl implements StudentService {

@Autowired(required = false)

private StudentMapper studentMapper;

//注入自定义的redis工具

@Autowired

private SingleTonRedisUtil redisUtil;

@Override

public List findAllStudent() {

//获取redis中存出的json字符串

String student = redisUtil.hget(“student”, “0”);

if(student!=null){

log.info(“get student from redis”);

//json对象,封装的对象类型

List students = JsonUtils.jsonToList(student, Student.class);

return students;

}

//创建查询模板对象

StudentExample studentExample = new StudentExample();

List students = studentMapper.selectByExample(studentExample);

log.info(“get student from db”);

try{

//将查询的集合转化为json字符串

String s = JsonUtils.objectToJson(students);

总结

无论是哪家公司,都很重视高并发高可用的技术,重视基础,重视JVM。面试是一个双向选择的过程,不要抱着畏惧的心态去面试,不利于自己的发挥。同时看中的应该不止薪资,还要看你是不是真的喜欢这家公司,是不是能真的得到锻炼。其实我写了这么多,只是我自己的总结,并不一定适用于所有人,相信经过一些面试,大家都会有这些感触。

最后我整理了一些面试真题资料,技术知识点剖析教程,还有和广大同仁一起交流学习共同进步,还有一些职业经验的分享。

面试了阿里,滴滴,网易,蚂蚁,最终有幸去了网易【面试题分享】

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注Java)
img

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

mport 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

@Slf4j

public class StudentServiceImpl implements StudentService {

@Autowired(required = false)

private StudentMapper studentMapper;

//注入自定义的redis工具

@Autowired

private SingleTonRedisUtil redisUtil;

@Override

public List findAllStudent() {

//获取redis中存出的json字符串

String student = redisUtil.hget(“student”, “0”);

if(student!=null){

log.info(“get student from redis”);

//json对象,封装的对象类型

List students = JsonUtils.jsonToList(student, Student.class);

return students;

}

//创建查询模板对象

StudentExample studentExample = new StudentExample();

List students = studentMapper.selectByExample(studentExample);

log.info(“get student from db”);

try{

//将查询的集合转化为json字符串

String s = JsonUtils.objectToJson(students);

总结

无论是哪家公司,都很重视高并发高可用的技术,重视基础,重视JVM。面试是一个双向选择的过程,不要抱着畏惧的心态去面试,不利于自己的发挥。同时看中的应该不止薪资,还要看你是不是真的喜欢这家公司,是不是能真的得到锻炼。其实我写了这么多,只是我自己的总结,并不一定适用于所有人,相信经过一些面试,大家都会有这些感触。

最后我整理了一些面试真题资料,技术知识点剖析教程,还有和广大同仁一起交流学习共同进步,还有一些职业经验的分享。

[外链图片转存中…(img-IZBO5Oln-1713645914764)]

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注Java)
[外链图片转存中…(img-1T4Zo1YW-1713645914764)]

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 27
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值