【任务要求】:使用数据库编程的方式实现在控制台输入用户名和密码,如果用户名和密码正确,则显示用户所属班级,如果登录失败则显示登录失败

源代码下载(访问密码: 9653):

demo9_spring数据库编程实现用户登录.zip: https://url47.ctfile.com/f/64055047-1502138359-2ef9a0?p=9653

一、创建数据库

在navicat中输入下面的语句,

CREATE DATABASE spring;
use spring;
create table student(
    id int(11) primary key auto_increment,
    username varchar(255),
    password varchar(255),
		course varchar(255)
);


INSERT INTO `student`( `username`, `password`, `course`) VALUES ( 'zhangsan', '123456', '语文');
INSERT INTO `student`( `username`, `password`, `course`) VALUES ('tom', '654321', '数学');
INSERT INTO `student`( `username`, `password`, `course`) VALUES ( 'jack', '111111', '英语');
二、项目搭建

打开IDEA,点击“File—>New—>Project”

我们 选择“Maven”项目,然后点击“Next”

改一下项目名称,然后点击“Finish”

创建完项目默认如下:

打开POM文件,添加相关依赖(注意,要先配置好maven,不然下载不了依赖)

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>org.example</groupId>
    <artifactId>demo9</artifactId>
    <version>1.0-SNAPSHOT</version>
    <dependencies>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
            <version>5.2.8.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-beans</artifactId>
            <version>5.2.8.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-aop</artifactId>
            <version>5.2.8.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>5.2.8.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-expression</artifactId>
            <version>5.2.8.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>commons-logging</groupId>
            <artifactId>commons-logging</artifactId>
            <version>1.2</version>
        </dependency>
        <!-- jdbc包 -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
            <version>5.2.10.RELEASE</version>
        </dependency>
        <!-- spring-tx包 -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-tx</artifactId>
            <version>5.2.10.RELEASE</version>
        </dependency>
        <!-- MySQL数据库驱动 -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.11</version>
            <scope>runtime</scope>
        </dependency>
        <!-- aspectjweaver依赖 -->
        <dependency>
            <groupId>org.aspectj</groupId>
            <artifactId>aspectjweaver</artifactId>
            <version>1.9.6</version>
            <scope>runtime</scope>
        </dependency>
        <!-- aopalliance依赖包 -->
        <dependency>
            <groupId>aopalliance</groupId>
            <artifactId>aopalliance</artifactId>
            <version>1.0</version>
        </dependency>
    </dependencies>

</project>

如果maven依赖加载没问题,我们就开始创建项目结构。

右击java文件夹,选择New—>Package,

然后分别创建Dao、Entity、Impl这三个文件夹

com.demo9.Entity
com.demo9.Dao
com.demo9.Impl
三、编写项目代码

1.编写实体类

右击Entity文件夹,选择New—>Java Class

类名为Student

代码参考如下:

package com.demo9.Entity;

public class Student {
    //学生ID
    private Integer id;
    //学生姓名
    private String username;
    //学生密码
    private String password;
    //学生班级
    private String course;

    public Integer getId() {
        return id;
    }

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

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public String getCourse() {
        return course;
    }

    public void setCourse(String course) {
        this.course = course;
    }
}

2.编写dao层

右击Dao,选择New—>Java Class

名称StudentDao

代码参考如下:

package com.demo9.Dao;

import com.demo9.Entity.Student;
import java.util.List;

public interface StudentDao {
    //查询所有账户
    public List<Student> findAllStudent();
}

2.编写dao层

右击Impl文件夹,选择New—>Java Class

名称为StudentDaoImpl

代码参考如下:

package com.demo9.Impl;


import com.demo9.Dao.StudentDao;
import com.demo9.Entity.Student;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowMapper;

import java.util.List;

public class StudentDaoImpl implements StudentDao {
    // 声明JdbcTemplate属性及其setter方法
    private JdbcTemplate jdbcTemplate;

    public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
        this.jdbcTemplate = jdbcTemplate;
    }

    // 查询所有用户信息
    public List<Student> findAllStudent() {
        // 定义SQL语句
        String sql = "select * from student";
        // 创建一个新的BeanPropertyRowMapper对象
        RowMapper<Student> rowMapper =
                new BeanPropertyRowMapper<Student>(Student.class);
        // 执行静态的SQL查询,并通过RowMapper返回结果
        return this.jdbcTemplate.query(sql, rowMapper);
    }
}

4.编写配置文件

右击resources文件夹,选择New—>File,

文件名称写

applicationContext-student.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"
       xmlns:tx="http://www.springframework.org/schema/tx"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
       	    http://www.springframework.org/schema/beans/spring-beans-4.3.xsd
       	    http://www.springframework.org/schema/tx
       	    http://www.springframework.org/schema/tx/spring-tx-4.3.xsd">
    <!-- 1.配置数据源 -->
    <bean id="dataSource"
          class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <!--数据库驱动 -->
        <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
        <!--连接数据库的url -->
        <property name="url"
                  value="jdbc:mysql://localhost/spring?useSSL=false"/>
        <!--连接数据库的用户名 -->
        <property name="username" value="root"/>
        <!--连接数据库的密码 -->
        <property name="password" value="123456"/>
    </bean>
    <!-- 2.配置JDBC模板 -->
    <bean id="jdbcTemplate"
          class="org.springframework.jdbc.core.JdbcTemplate">
        <!-- 默认必须使用数据源 -->
        <property name="dataSource" ref="dataSource"/>
    </bean>
    <!-- 3.定义id为accountDao的Bean -->
    <bean id="studentDao" class="com.demo9.Impl.StudentDaoImpl">
        <!-- 将jdbcTemplate注入到AccountDao实例中 -->
        <property name="jdbcTemplate" ref="jdbcTemplate"/>
    </bean>
    <!-- 4.事务管理器,依赖于数据源 -->
    <bean id="transactionManager" class=
            "org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource"/>
    </bean>
    <!-- 5.注册事务管理器驱动 -->
    <tx:annotation-driven transaction-manager="transactionManager"/>
</beans>
四、编写测试代码

右击java文件夹,选择New—>Java Class

然后名称为:StudentTest

代码参考如下:

import com.demo9.Dao.StudentDao;
import com.demo9.Entity.Student;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import java.util.List;
import java.util.Scanner;

public class StudentTest {
    public static void main(String[] args) {
        System.out.println("欢迎来到学生管理系统");
        System.out.println("请输入用户名:");
        Scanner sca = new Scanner(System.in);
        String name = sca.nextLine();
        // 加载配置文件
        ApplicationContext applicationContext = new
                ClassPathXmlApplicationContext("applicationContext-student.xml");
        // 获取AccountDao实例
        StudentDao studentDao = (StudentDao) applicationContext.getBean("studentDao");
        // 执行findAllAccount()方法,获取Account对象的集合
        List<Student> student = studentDao.findAllStudent();
        // 循环输出集合中的对象
        for (Student stu : student) {
            if (name.equals(stu.getUsername())) {
                System.out.println("请输入" + stu.getUsername() + "的密码:");
                String mima = sca.nextLine();
                if (mima.equals(stu.getPassword())) {
                    System.out.println("用户登录成功!");
                    System.out.println(stu.getUsername() + "是" + stu.getCourse() + "班的");
                    return;
                }
            } else {
                System.out.println("账号密码错误!");
                return;
            }
        }
        System.out.println("操作完毕,准备退出");
    }
}

五、测试

1.登录成功的测试

2.登录失败的测试