Spring框架是由于软件开发的复杂性而创建的。Spring使用的是基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅仅限于服务器端的开发。从简单性、可测试性和松耦合性角度而言,绝大部分Java应用都可以从Spring中受益。
Spring是一个轻量级控制反转(IoC)和面向切面(AOP)的容器框架。
一,引入架包

二,配置applicationContext.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:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
<!--1.提供注解支持-->
<context:component-scan base-package="com.zr"/>
<!--2.配置数据源-->
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/java?useSSL=true&character=utf-8"/>
<property name="username" value="root"/>
<property name="password" value="123456"/>
</bean>
<!--3.创建JDBCTemplate对象注入dataSource-->
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref="dataSource"/>
</bean>
</beans>
三,定义实体类
public class Student {
private int id;
private String name;
private String sex;
private int age;
public Student(String name, String sex, int age,int id) {
this.name = name;
this.sex = sex;
this.age = age;
this.id = id;
}
public Student(String name, String sex, int age) {
this.name = name;
this.sex = sex;
this.age = age;
}
public Student(int i, String 朱璐晨) {
}
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 String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "Student{" +
"id=" + id +
", name='" + name + '\'' +
", sex='" + sex + '\'' +
", age=" + age +
'}';
}
}
四,Dao层
import com.zr.bean.Student;
import java.util.List;
public interface IStudentDao {
//增加
boolean addStu(Student student);
//删除
boolean delStu(int id);
//修改
boolean updStu(Student student);
//单查询
Student findById(int id);
//全查
List<Student> findAll();
}
五,Dao层实现类
@Repository
public class StudentDaoImpl implements IStudentDao {
@Autowired
private JdbcTemplate jdbcTemplate;
//注入方法
private void setJdbcTemplate(JdbcTemplate jdbcTemplate){
this.jdbcTemplate = jdbcTemplate;
}
@Override
public boolean addStu(Student student) {
boolean flag = false;
String sql = "insert into tb_student values(null,?,?,?)";
int row = jdbcTemplate.update(sql, student.getName(), student.getSex(), student.getAge());
if (row > 0){
flag = true;
}
return flag;
}
@Override
public boolean delStu(int id) {
boolean flag = false;
String sql = "delete from tb_student where id = ?";
int row = jdbcTemplate.update(sql, id);
if (row > 0){
flag = true;
}
return flag;
}
@Override
public boolean updStu(Student student) {
boolean flag = false;
String sql = "update tb_student set name=?,sex=?,age=? where id=?";
int row = jdbcTemplate.update(sql,new Object[]{student.getName(),student.getSex(),student.getAge(),student.getId()});
if (row > 0){
flag=true;
}
return flag;
}
@Override
public Student findById(int id) {
String sql = "select * from tb_student where id = ?";
BeanPropertyRowMapper<Student> rowMapper = new BeanPropertyRowMapper<>(Student.class);
Student student = jdbcTemplate.queryForObject(sql, new Object[]{id}, rowMapper);
return student;
}
@Override
public List<Student> findAll() {
String sql = "select * from tb_student";
BeanPropertyRowMapper<Student> rowMapper = new BeanPropertyRowMapper<>(Student.class);
List<Student> studentList = jdbcTemplate.query(sql, rowMapper);
return studentList;
}
}
六,ServiceDao类
public interface IStudentService {
//增加
boolean addStu(Student student);
//删除
boolean delStu(int id);
//修改
boolean updStu(Student student);
//单查询
Student findById(int id);
//全查
List<Student> findAll();
}
七,Service实现类
@Service
public class StudentServiceImpl implements IStudentService {
@Autowired
private IStudentDao dao;
@Override
public boolean addStu(Student student) {
return dao.addStu(student);
}
@Override
public boolean delStu(int id) {
return dao.delStu(id);
}
@Override
public boolean updStu(Student student) {
return dao.updStu(student);
}
@Override
public Student findById(int id) {
return dao.findById(id);
}
@Override
public List<Student> findAll() {
return dao.findAll();
}
}
测试类
public class Main {
public static void main(String[] args) {
TestString testString = new TestString();
testString.test();
}
}
package com.zr.test;
import com.zr.bean.Student;
import com.zr.service.impl.StudentServiceImpl;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import java.util.List;
import java.util.Scanner;
public class TestString {
ApplicationContext ac = new ClassPathXmlApplicationContext("/applicationContext.xml");
Scanner sc = new Scanner(System.in);
@Test
public void test(){
Scanner sc = new Scanner(System.in);
System.out.println("欢迎进入用户管理系统!");
System.out.println("请选择:");
System.out.println("1.查询全部学生信息");
System.out.println("2.通过id查询学生信息");
System.out.println("3.添加学生信息");
System.out.println("4.修改学生信息");
System.out.println("5.删除学生信息");
System.out.println("0.退出");
boolean flag = false;
while (flag == false){
switch (sc.nextInt()){
case 1:
findAll();
break;
case 2:
findById();
break;
case 3:
addStu();
break;
case 4:
update();
break;
case 5:
delStu();
break;
case 0:
System.out.println("退出");
return;
default:
System.out.println("请输入正确的选项");
break;
}
}
}
public void addStu(){
StudentServiceImpl ssi = (StudentServiceImpl) ac.getBean("studentServiceImpl");
findAll();
Student student = new Student(sc.next(),sc.next(),sc.nextInt());
boolean b = ssi.addStu(student);
if (b){
System.out.println("学生添加成功!");
findAll();
}else {
System.out.println("学生添加失败!");
}
}
public Student findById(){
StudentServiceImpl ssi = (StudentServiceImpl) ac.getBean("studentServiceImpl");
System.out.println("请输入查询的学生id");
Student by = ssi.findById(sc.nextInt());
System.out.println("学生信息如下:");
System.out.println(by);
return by;
}
public void findAll(){
StudentServiceImpl ssi = (StudentServiceImpl) ac.getBean("studentServiceImpl");
List<Student> studentList = ssi.findAll();
System.out.println("学生信息表如下:");
for (Student stu:studentList) {
System.out.println(stu);
}
}
public void delStu(){
StudentServiceImpl ssi = (StudentServiceImpl) ac.getBean("studentServiceImpl");
findAll();
System.out.println("请输入要删除的学生信息id");
ssi.delStu(sc.nextInt());
System.out.println("删除后学生信息表");
findAll();
}
public void update(){
StudentServiceImpl ssi = (StudentServiceImpl) ac.getBean("studentServiceImpl");
findAll();
Student s2 = findById();
Student student = new Student(sc.next(),sc.next(),sc.nextInt(),s2.getId());
boolean b = ssi.updStu(student);
if (b){
System.out.println("修改成功!");
System.out.println("修改后的学生信息表:");
findAll();
test();
}else {
System.out.println("修改失败");
test();
}
}
}
本文介绍Spring框架的基本概念,包括其轻量级IoC和AOP特性,以及如何在Java应用中配置和使用Spring进行数据库操作。通过一个学生信息管理系统实例,详细展示了Spring的配置、实体类定义、DAO层、Service层的实现,以及测试类的编写。
939

被折叠的 条评论
为什么被折叠?



