SpringJDBC

目录

1、phpstudy安装

 2、安装Navicat

2.1、建立连接

 2.2、创建数据库

2.3、 建表

3、创建项目

 3.1、导入依赖包

3.2、Spring容器配置bean

3.3、数据库操作

3.4、运行结果

4、连接池

4.1、druid连接池

4.1.1、导入依赖包

4.1.2、连接池配置


首先先将我们需要的环境搭建好,我们需要连接数据库,这里我们使用Mysql8.0版本的。

1、phpstudy安装

phpstudy是什么呢?它能干什么呢?

phpStudy是用于PHP调试环境的程序集成软件包。该软件包集成了最新的Apache+PHP+MySQL+phpMyAdmin+ZendOptimizer,一次性安装,无需进行配置,这是一个非常方便且易于使用的PHP调试环境。该程序不仅包括PHP调试环境,还包括开发工具,开发手册等。

phpstudy下载地址

 下载完之后,先把电脑上原来的mysql卸载 先备份原来的Mysql数据库。我们统一安装8.0版本的。防止出现不兼容等问题。

 

 然后可以检查我们的数据密码啦!

 2、安装Navicat

通俗点说,Navicat就是一种mysql图形化工具,方便用户直接操作数据库。

安装完之后,应该先将phpstudy中的mysql开启,否则使用Navicat连接的时候,会连接不上。

2.1、建立连接

 2.2、创建数据库

 

2.3、 建表

 以上准备工作已经做好啦!

3、创建项目

下面先创建工程项目,打开ideal

为什么这里要使用Module创建项目而不用Project呢?

因为使用Module创建项目,ideal不会重新打开一个界面,而且会很方便的看到以前我们创建的项目,这样就方便我们查看以前的项目啦!

 

 3.1、导入依赖包

项目创建完之后,导依赖包,将这些依赖包导到

 <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-core</artifactId>
      <version>5.3.8</version>
    </dependency>

    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-beans</artifactId>
      <version>5.3.8</version>
    </dependency>

    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-context</artifactId>
      <version>5.3.8</version>
    </dependency>

    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-context-support</artifactId>
      <version>5.3.8</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-expression</artifactId>
      <version>5.3.8</version>
    </dependency>

    <dependency>
      <groupId>commons-logging</groupId>
      <artifactId>commons-logging</artifactId>
      <version>1.2</version>
    </dependency>

    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>8.0.20</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-jdbc</artifactId>
      <version>5.3.8</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-tx</artifactId>
      <version>5.3.8</version>
    </dependency>

    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-aop</artifactId>
      <version>5.3.8</version>
    </dependency>

3.2、Spring容器配置bean

这里一定要注意1.2连接数据库的url中,我这里“jdbc:mysql://localhost:3306/spring?characterEncoding=utf8&amp”中的spring是我的数据库名,需要根据自己的数据库名字进行修改。

<!--开启注解-->   
<context:component-scan base-package="com.springjdbc"/>


<!--  DriverManagerDataSource 数据库打开和关闭连接  -->
    <bean class="org.springframework.jdbc.datasource.DriverManagerDataSource"  id="dataSource">
        <!-- 1.1.数据库驱动 -->
        <property name="driverClassName" value="com.mysql.cj.jdbc.Driver"/>
        <!-- 1.2.连接数据库的url -->
        <property name="url" value="jdbc:mysql://localhost:3306/spring?characterEncoding=utf8&amp;serverTimezone=UTC"/>
        <!-- 1.3.连接数据库的用户名 -->
        <property name="username" value="root"></property>
        <!-- 1.4.连接数据库的密码 -->
        <property name="password" value="root"></property>
    </bean>


<!--    数据库增删改查的工具类-->

    <bean class="org.springframework.jdbc.core.JdbcTemplate" id="jdbcTemplate">
        <property name="dataSource" ref="dataSource"/>
    </bean>

 下面就可以对单表进行增删改查了。

3.3、数据库操作

创建Person.java类

package org.example;

public class Person {
    private int id;
    private String name;
    private int age;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}

创建PersonDao.java类

实现增删改查功能

package org.example;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowMapper;
import org.springframework.stereotype.Component;

import java.util.List;


@Component
public class PersonDao {

    @Autowired
    JdbcTemplate jdbcTemplate;
    public void addPerson(){
        int age=30;
        String name="tttt";
//student为表名
        jdbcTemplate.update("INSERT INTO student values(null ,?,?)",age,name);



    }

    public void deletePerson(){
        int id=1;
        jdbcTemplate.update("delete from student where id=?",id);
    }

    public void queryPerson(){
        String name="tst";
        RowMapper<Person> personDaoRowMapper=new BeanPropertyRowMapper<>(Person.class);
        List<Person> personList=jdbcTemplate.query("select * from student where name=?",personDaoRowMapper,name);
        for (Person person:personList){
            System.out.println(person.getId()+" "+person.getName()+" "+person.getAge());
        }
    }

    public void updatePerson(){
        String name="test123";
        int id=2;
        jdbcTemplate.update("update student set name=? where id=?",name,id);
    }
}

3.4、运行结果

4、连接池

为什么要使用连接池呢?

数据库连接是非常占用资源的,尤其是在高并发的情况下,如果每次都去建立数据库连接就会有性能问题,也会影响一个应用程序的延展性,针对这个问题,连接池出现了,连接池就是为了解决这个问题的。

实现对内统一管理连接,使之复用,对外提供获取、释放方法。而且放于内存中。

4.1、druid连接池

4.1.1、导入依赖包

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid</artifactId>
    <version>1.1.10</version>
</dependency>

<dependency>
    <groupId>org.aspectj</groupId>
    <artifactId>aspectjweaver</artifactId>
    <version>1.9.5</version>
</dependency>

4.1.2、连接池配置

<!--    druid 数据源连接池-->
<bean class="com.alibaba.druid.pool.DruidDataSource" id="dataSource">
    <!--        数据库驱动-->
    <property name="driverClassName" value="com.mysql.cj.jdbc.Driver"/>
    <property name="url" value="jdbc:mysql://localhost:3306/test01?characterEncoding=utf8&amp;serverTimezone=UTC"/>

    <property name="username" value="root"/>
    <property name="password" value="123456"/>

    <!--==============DRUID连接池相关配置==================-->

    <!--初始化时建立物理连接的个数-->
    <property name="initialSize" value="5"/>
    <!--最小连接池数量-->
    <property name="minIdle" value="10"/>
    <!--最大连接池数量-->
    <property name="maxActive" value="100"/>
    <!--连接时最大等待时间,单位毫秒-->
    <property name="maxWait" value="60000"/>
    <!--配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒-->
    <property name="timeBetweenEvictionRunsMillis" value="60000"/>
    <!--配置一个连接在池中最小生存的时间,单位是毫秒-->
    <property name="minEvictableIdleTimeMillis" value="300000"/>
    <!--用来检测连接是否有效的SQL,要求是一个查询语句-->
    <property name="validationQuery" value="SELECT 1 FROM DUAL"/>
    <!--申请连接时执行 validationQuery 检测连接是否有效,做了这个配置会降低性能-->
    <property name="testOnBorrow" value="true"/>
    <!--归还连接时执行 validationQuery 检测连接是否有效,做了这个配置会降低性能-->
    <property name="testOnReturn" value="true"/>
    <!--建议配置为true,不影响性能,并且保证安全性;申请连接的时候检测,如果空闲时间大于
        timeBetweenEvictionRunsMillis,执行 validationQuery 检测连接是否有效-->
    <property name="testWhileIdle" value="true"/>
    <!--是否缓存preparedStatement,也就是 PSCache-->
    <property name="poolPreparedStatements" value="true"/>
    <!--指定每个连接上 PSCache 的大小-->
    <property name="maxOpenPreparedStatements" value="20"/>
    <!-- 打开清除废弃连接功能 -->
    <property name="removeAbandoned" value="true"/>
    <!--清除废弃连接的超时时间-->
    <property name="removeAbandonedTimeout" value="1800"/>
    <!-- 关闭 清除 连接时输出错误日志 -->
    <property name="logAbandoned" value="true"/>
    <!--配置监控统计拦截的filters,属性类型是字符串,通过别名的方式配置扩展插件,
       常用的插件有:监控统计用的STAT;日志用的log4j;防御SQL注入的wall-->
    <!--        <property name="filters" value="stat,wall,log4j"/>-->
    <!--通过 connectProperties 属性来打开mergeSql功能;慢SQL记录-->
    <property name="connectionProperties" value="druid.stat.merggSql=ture;druid.stat.slowSqlMillis=5000"/>
    <!--合并多个DruidDataSource的监控数据-->
    <property name="useGlobalDataSourceStat" value="true"/>
</bean>

如果你是建立在上面没有配置连接池的方法上,一定要先将下面这个删除,再按照上面配置连接池哈!

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值