java mysql redis数据库操作

2019-11-01 09:47:19 浏览数 (1)

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

本文链接:https://blog.csdn.net/weixin_44580977/article/details/95110508

  • 对称型数据库控制

数据库操作

##由下层到上层讲解

1.Mysql库驱动包,由数据库厂商统一按照java jdbc接口实现

Mysql驱动包内使用数据库

//1. 注册驱动

Class.forName("com.mysql.jdbc.Driver");

//2. 定义sql

String sql = "insert into account values(null,'王五',3000)";

//3.获取Connection对象

conn = DriverManager.getConnection("jdbc:mysql:///db3", "root", "root");

//4.获取执行sql的对象 Statement

stmt = conn.createStatement();

//5.执行sql

int count = stmt.executeUpdate(sql);//影响的行数

2.JDBC API封装了 数据库驱动 加载配置信息(其实他就是接口,各个数据库驱动包是是实现了JDBC

1.JDBC API使用数据库操作

在静态代码块内

代码语言:javascript复制
Static{
            Properties pro = new Properties();
            //获取src路径下的文件的方式--->ClassLoader 类加载器
            ClassLoader classLoader = JDBCUtils.class.getClassLoader();
            URL res  = classLoader.getResource("jdbc.properties");
            String path = res.getPath();
           // System.out.println(path);///D:/IdeaProjects/itcast/out/production/day04_jdbc/jdbc.properties

//2. 加载文件

代码语言:javascript复制
           // pro.load(new FileReader("D:\IdeaProjects\itcast\day04_jdbc\src\jdbc.properties"));
            pro.load(new FileReader(path));

//3. 获取数据,赋值

代码语言:javascript复制
            url = pro.getProperty("url");
            user = pro.getProperty("user");
            password = pro.getProperty("password");
            driver = pro.getProperty("driver");

//4. 注册驱动

代码语言:javascript复制
            Class.forName(driver);
}

2.配置文件应该怎么写?

代码语言:javascript复制
url=jdbc:mysql:///db3
user=root
password=root
driver=com.mysql.jdbc.Driver

3.缺点:

* 数据库频繁创建链接,关闭链接,浪费资源

**下面就出现了druid连接池技术,

使用阿里巴巴提供的druid

实际上就相当于一个存放数据库连接的容器,当系统初始化好后,容器被创建,容器中会申请一些连接对象,当用户来访问数据库时,从容器中获取连接对象,用户访问完之后,会将连接对象归还给容器。其实就是一个容器(集合),存放数据库连接的容器。

阿里巴巴 连接池工具 druid 包 使用方式

1.使用工厂类 创建连接池 : 这需要配置文件对象 作为 工厂类的创建连接池的参数

代码语言:javascript复制
        static private DataSource ds

=DruidDataSourceFactory.createDataSource(配置文件对象);

2.配置文件对象怎么加载?

1.先要创建一个 配置文件对象 来加载配置文件new Properties();

2.加载配置文件成字节流

1.要找到配置文件的路径

1.JDBCUtils.class找到父类路径,即 class<T>的路径

2.JDBCUtils.class.getClassLoader获得类加载器,他也是一个java类,里面存有类加载器的信息,其中就有路径

2.JDBCUtils.class.getClassLoader().getResourceAsStream在类加载器目录下搜索配置文件,性能高

3.配置文件内容怎么填?

代码语言:javascript复制
driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql:///day23
username=root
password=root
initialSize=5
maxActive=10
maxWait=3000

4.实质是什么?

一个更加方便管理数据库连接的工具

3. Spring JDBC 框架对JDBC进行了简单的封装。

1.提供了一个JDBCTemplate对象简化JDBC的开发

需要的包有以下几个

1.如何使用spring JDBCTemplate?

1.需要DataSource连接池对象

New JdbcTemplate(ds)

2.如何完成增删改查的操作呢CRUD?

  • 非对称性数据库控制

1.redies为什么要用redies

* 查询速度:比mysql快太多了

* 储存格式:可以存的形式很多如文档,图片形式等,还有集合对象等,而数据库只能存基础类型

2. redies键值可以存哪些数据类型?

1) 字符串类型 string

2) 哈希类型 hash

3) 列表类型 list

4) 集合类型 set

5) 有序集合类型 sortedset

3.redies有哪些应用场景?

• 缓存(数据查询、短连接、新闻内容、商品内容等等)

• 聊天室的在线好友列表

• 任务队列。(秒杀、抢购、12306等等)

• 应用排行榜

• 网站访问统计

• 数据过期处理(可以精确到毫秒

• 分布式集群架构中的session分离

4.java中如何使用?

1. 导入jedis的jar包

2. 使用

这里值举出了String烈性的存储

//1. 获取连接

Jedis jedis = new Jedis("localhost",6379);

//2. 操作

jedis.set("username","zhangsan");

Jedies.get(“username”);

//3. 关闭连接

jedis.close();

因为上面存在申请创建连接和关闭连接,存在资源的浪费

解决资源浪费,这里使用jedis连接池,和druid同理

* jedis连接池: JedisPool

1. 创建JedisPool连接池对象

2. 调用方法 getResource()方法获取Jedis连接

代码语言:javascript复制
                                   //0.创建一个配置对象
                             JedisPoolConfig config = new JedisPoolConfig();
                             config.setMaxTotal(50);
                             config.setMaxIdle(10);

//1.创建Jedis连接池对象

代码语言:javascript复制
                             JedisPool jedisPool = new JedisPool(config,"localhost",6379);

//2.获取连接

代码语言:javascript复制
                             Jedis jedis = jedisPool.getResource();

//3. 使用

代码语言:javascript复制
                             jedis.set("hehe","heihei");

//4. 关闭 归还到连接池中

代码语言:javascript复制
                             jedis.close();

* 连接池工具类

代码语言:javascript复制
                            public class JedisPoolUtils {
                                private static JedisPool jedisPool;
                                static{
                                    //读取配置文件
                                    InputStream is = JedisPoolUtils.class.getClassLoader().getResourceAsStream("jedis.properties");
                                    //创建Properties对象
                                    Properties pro = new Properties();
                                    //关联文件
                                    try {
                                        pro.load(is);
                                    } catch (IOException e) {
                                        e.printStackTrace();
                                    }
                                    //获取数据,设置到JedisPoolConfig中
                                    JedisPoolConfig config = new JedisPoolConfig();
                                    config.setMaxTotal(Integer.parseInt(pro.getProperty("maxTotal")));
                                    config.setMaxIdle(Integer.parseInt(pro.getProperty("maxIdle")));
                                    //初始化JedisPool
                                    jedisPool = new JedisPool(config,pro.getProperty("host"),Integer.parseInt(pro.getProperty("port")));
                                }

1.为什么要加个配置让带啊变得繁琐?

工具类的原则就是,将配置和代码分离,实现灵活的改变端口

0 人点赞