Spring框架开发方式

目录

一. 创建项目

二、引入依赖

1.mysql常用版本

区别

(1)安装方式

(2)存储引擎

(3)驱动

(4)url

2.连接池

(1)是什么

(2)意义

(3)连接池参数

(4)4个参数

三、创建数据库、表

四、编写JavaBean的类

五、持久层的接口和实现类

接口

实现类

六、业务层的接口和实现类

接口

实现类

七、配置文件(application.xml)

八、测试类

九、运行结果


一. 创建项目

创建普通的javamaven就行

二、引入依赖

<dependencies>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>5.0.2.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>commons-logging</groupId>
            <artifactId>commons-logging</artifactId>
            <version>1.2</version>
        </dependency>
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.12</version>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
            <scope>test</scope>
        </dependency>
        <!--连接池-->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.1.10</version>
        </dependency>
        <!--mysql驱动包-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.6</version>
        </dependency>
    
    </dependencies>

1.mysql常用版本

5.6 5.7 8.0

区别

(1)安装方式

5.5安装方式只有一种,直接下一步下一步;

5.6,5.7支持压缩包解压,写配置,初始化,也有下一步下一步安装的方式

(2)存储引擎

5.5的存储引擎是myisam;剩下的是InnoDB

(3)驱动

5.6和5.7对应的mysql驱动都可以用5.6的驱动;

8.0版本的驱动一般用高版本8.0的驱动,8.0的多一个cj(com.mysql.cj.jdbc.Driver)

(4)url

5.6 5.7 : jdbc:mysql:///数据库

8.0 : jdbc:mysql:///数据库?时区参数

2.连接池

(1)是什么

可以把它想象成一个容器,

对JDBC来说,每操作一次数据库都要和数据库进行一次连接,每次用完还要销毁连接,这样很影响性能,耗费时间,所以有了池化思想,放一个容器,就一直连接数据库,有人拿走,用完之后,从哪里拿的放哪里去,后面的人来了想用也直接从连接池。

连接是有策略的,比如:10个连接,10个人拿走了,后面又来了一个人,连接池就会思考要不要加连接

(2)意义

节省创建连接与释放连接,减少性能消耗; 连接池中连接起到复用的作用,提升程序性能

(3)连接池参数

初始大小:10个

最小空闲连接数:3个

增量:一次创建的最小单位(5个)

最大空闲连接数:12个

最大连接数:20个

最大的等待时间:1000毫秒

(4)4个参数

驱动的名称 ‐‐ com.mysql.jdbc.Driver

连接 ‐‐ jdbc:mysql://localhost:3306/day14

jdbc:代表的主协议   
mysql:子协议  
localhost : 主机-----可以理解为是一个域名
3306 : mysql默认的端口号
day14 :数据库
如果访问的是本地的自己的数据库,那么localhost:3306就可以省略不写----jdbc:mysql:///day14

用户名 ‐‐ root

密码 ‐‐ 2020

三、创建数据库、表

create database spring_db;

use spring_db;

create table account(
    id int primary key auto_increment,
    name varchar(40),
    money double
)character set utf8 collate utf8_general_ci;
​

insert into account(name,money) values('aaa',1000);
insert into account(name,money) values('bbb',1000);
insert into account(name,money) values('ccc',1000);

四、编写JavaBean的类

package com.qcby.pojo;

import java.io.Serializable;

public class Account implements Serializable{
    private Integer id;
    private String name;
    private Double money;

    public Account() {
    }
  
    public Account(Integer id, String name, Double money) {
        this.id = id;
        this.name = name;
        this.money = money;
    }

    public Integer getId() {
        return id;
    }

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

    public String getName() {
        return name;
    }

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

    public Double getMoney() {
        return money;
    }

    public void setMoney(Double money) {
        this.money = money;
    }

    @Override
    public String toString() {
        return "Account{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", money=" + money +
                '}';
    }
}

五、持久层的接口和实现类

接口

package com.qcby.dao;

import com.qcby.pojo.Account;

import java.util.List;

public interface AccountDao {
    public List<Account> findAll();
}

实现类

package com.qcby.dao.impl;

import com.qcby.dao.AccountDao;
import com.qcby.pojo.Account;

import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

public class AccountDaoImpl implements AccountDao{
    private DataSource dataSource;

    public void setDataSource(DataSource dataSource) {
        this.dataSource = dataSource;
    }

    //查询所有数据
    @Override
    public List<Account> findAll(){
        List<Account> list = new ArrayList<>();
        Connection connection=null;
        PreparedStatement stmt=null;
        ResultSet rs = null;
        try {
            connection=dataSource.getConnection();
            String sql="select * from account";
            stmt=connection.prepareStatement(sql);
            rs=stmt.executeQuery();
            while (rs.next()){
                Account account = new Account();
                account.setId(rs.getInt("id"));
                account.setName(rs.getString("name"));
                account.setMoney(rs.getDouble("money"));
                list.add(account);
            }
        }catch (SQLException e){
            e.printStackTrace();
        }finally {
            try {
                connection.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
            try {
                stmt.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
            try {
                rs.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        return list;
    }
}

六、业务层的接口和实现类

接口

package com.qcby.service;

import com.qcby.pojo.Account;

import java.util.List;

public interface AccountService {
    public List<Account> findAll();
}

实现类

把他交给spring管理

package com.qcby.service.impl;

import com.qcby.dao.AccountDao;
import com.qcby.pojo.Account;
import com.qcby.service.AccountService;

import java.util.List;

public class AccountServiceImpl implements AccountService {
    private AccountDao accountDao;

    public void setAccountDao(AccountDao accountDao) {
        this.accountDao = accountDao;
    }

    @Override
    public List<Account> findAll() {
        return accountDao.findAll();
    }
}

七、配置文件(application.xml)

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
                           http://www.springframework.org/schema/beans/spring-beans.xsd">
    <!--配置连接池-->
    <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
        <property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
        <property name="url" value="jdbc:mysql:///spring_db"></property>
        <property name="username" value="root"></property>
        <property name="password" value="2020"></property>
    </bean>
    <!--管理bean-->
    <bean id="accountService" class="com.qcby.service.impl.AccountServiceImpl">
        <property name="accountDao" ref="accountDao"></property>
    </bean>
    
    <bean id="accountDao" class="com.qcby.dao.impl.AccountDaoImpl">
        <property name="dataSource" ref="dataSource"></property>
    </bean>
    
    
</beans>

八、测试类

package com.qcby.test;

import com.qcby.pojo.Account;
import com.qcby.service.AccountService;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import java.util.List;

public class Demo1 {
    @Test
    public void run1(){
        ApplicationContext applicationContext=new ClassPathXmlApplicationContext("application.xml");
        AccountService accountService=(AccountService)applicationContext.getBean("accountService");
        List<Account> list=accountService.findAll();
        for(Account account:list){
            System.out.println(account);
        }
    }
}

九、运行结果

 

猜你喜欢

转载自blog.csdn.net/2201_76081438/article/details/143372100