(注意数据源的连接在spring.datasource.url=jdbc:mysql://localhost:3306/test 这个test是我的数据库名称,大家要写自己的数据库的名称)
#数据源配置
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.driverClassName=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/test?useSSL=false&useUnicode=true&characterEncoding=utf-8&autoReconnect=true&serverTimezone=Asia/Shanghai
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.initialSize=20
spring.datasource.minIdle=50
spring.datasource.maxActive=500
#上下文配置
server.port=8888
server.servlet.context-path=/kude
#配置jpa
#帮我们自动生成表结构
spring.jpa.properties.hibernate.hbm2ddl.auto=update
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect
spring.jpa.show-sql= true
spring.jpa.properties.hibernate.enable_lazy_load_no_trans=true
#redis的配置
# Redis_config
# Redis数据库索引(默认为0)
spring.redis.database=0
# Redis服务器地址
spring.redis.host=127.0.0.1
# Redis服务器连接端口
spring.redis.port=6379
# Redis服务器连接密码(默认为空)
spring.redis.password=123456
# 连接超时时间(毫秒)
spring.redis.timeout=3600
# 连接池最大连接数(使用负值表示没有限制)
spring.redis.jedis.pool.max-active=8
# 连接池最大阻塞等待时间(使用负值表示没有限制)
spring.redis.jedis.pool.max-wait=-1
# jedis超时
spring.redis.jedis.shutdown-timeout=100
# 连接池中的最大空闲连接
spring.redis.jedis.pool.max-idle=8
# 连接池中的最小空闲连接
spring.redis.jedis.pool.min-idle=0
#定义分页每页的记录数
mypager.perPagerSize=10
org.springframework.boot
spring-boot-starter-data-jpa
org.springframework.boot
spring-boot-starter-web
org.springframework.boot
spring-boot-devtools
runtime
mysql
mysql-connector-java
runtime
org.springframework.boot
spring-boot-starter-test
test
com.alibaba
druid
1.1.10
com.alibaba
fastjson
1.2.47
redis.clients
jedis
2.9.0
org.apache.commons
commons-pool2
2.4.2
org.springframework.boot
spring-boot-starter-data-redis
cn.hutool
hutool-all
4.5.6
javax.mail
mail
1.4.7
com.github.pagehelper
pagehelper-spring-boot-starter
1.2.10
首先去进行分包:controller对用户信息进行控制,dao层对数据库的操作,entity实体类(类名与属性与数据库中表一一对应),service服务层调用dao层,与控制层交接。
package com.example.stu.entity;
import javax.persistence.*;
@Entity//标识实体类
@Table(name ="Student")//建立的实体类会有多个,进行区别
public class Student {
@Id//标识id
@GeneratedValue(strategy = GenerationType.IDENTITY)//设置id字段进行自增操作
private Integer id;
@Column(length = 22)//设置字段长度
private String stuname;
@Column(length = 11)
private String password;
@Column(length = 2)
private String gender;
public Student() {
}
@Override
public String toString() {
return "Student{" +
"id=" + id +
", stuname='" + stuname + '\'' +
", password='" + password + '\'' +
", gender='" + gender + '\'' +
'}';
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getStuname() {
return stuname;
}
public void setStuname(String stuname) {
this.stuname = stuname;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
}
package com.example.stu.dao;
import com.example.stu.entity.Student;
import io.lettuce.core.dynamic.annotation.Param;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import java.util.List;
/**
*定义dao层接口 继承JapRepository(含有我们需要的数据库中的增删改查)
* 当我们进行复杂操作的时候需要自己书写SqL语句
*/
public interface StudentDao extends JpaRepository {
Student findStudentById(Integer id);//根据id去查询一条学生信息
/**
* 根据名字去查询学生信息
* 复杂查询自己书写Sql语句
* @Query(name = "方法名",nativeQuery = true,value =
* "Sql语句")
* @Param("参数名") 进行标识参数(在进行复杂查询的时候,不止一个参数)
* @param stuname
* @return
*/
@Query(name = "findStuByName",nativeQuery = true,value =
"select * from student where stuname=:stuname")
List findStuByName(@Param("stuname") String stuname);
/**
* 根据名字与密码进行登录
* @param stuname
* @param password
* @return
*/
@Query(name="login",nativeQuery = true,value =
"select * from student where stuname=:stuname and password=:password")
Student login(@Param("stuname") String stuname, @Param("password") String password);
/**
* 根据id和密码进行登录
* @param id
* @param password
* @return
*/
@Query(name = "loginbyId", nativeQuery = true, value =
"select * from student where id=:id and password=:password")
Student loginbyId(@Param("id") Integer id, @Param("password") String password);
}
定义Service接口,去实现接口
package com.example.stu.service;
import com.example.stu.entity.Student;
import org.springframework.data.domain.Page;
import java.util.List;
public interface StudentService {
List findAll();//查询学生所有信息
Student findStudentById(Integer id);//根据id查询一条学生信息
Student save(Student student);//插入一条学生信息
Student updateById(Student student);//根据id来进行修改一条学生信息
List findStudentByStuname(String stuname);//根据名字查询学生信息
Student login(String stuname,String password);//根据名字与密码进行登录
void deletById(Integer id);//根据id删除学生信息
Page findAll(int page, int pageSize);//分页查询
Student loginById(Integer id,String password);//根据id和密码去进行登录
}
在Service包中建立一个impl对service接口的实现全写在了其中(注意我的修改操作,save()也能当做修改,但它进行修改的前提是,你在给它进行传入修改对象的属性时,需要传入全部,没有传入的,Save()会默认会空,就是说,一个对象有名字,年龄,性别,你使用save()只进行修改其中一个两个,另当做null去保存到数据库中,你数据库中的这个对象没有进行修改的会为空,所以需要判断操作)
package com.example.stu.service.impl;
import com.example.stu.dao.StudentDao;
import com.example.stu.entity.Student;
import com.example.stu.service.StudentService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* 对接口studentservice的实现
*/
//标识service
@Service
public class StudentServiceImpl implements StudentService {
//自动注入
@Autowired
private StudentDao studentDao;//每个方法都需要使用,设为成员变量
/**
* 查询所有学生信息
* @return
*/
@Override
public List findAll() {
return studentDao.findAll();
}
/**
* 根据id查询一条学生信息
* @param id
* @return
*/
@Override
public Student findStudentById(Integer id) {
return studentDao.findStudentById(id);
}
/**
* 插入一条学生信息
* @param student
* @return
*/
@Override
public Student save(Student student) {
return studentDao.save(student);
}
/**
* 根据id去修改一条学生信息
* @param student
* @return
*/
@Override
public Student updateById(Student student) {
Student stu=studentDao.findStudentById(student.getId());
if(student.getStuname()==null){
stu.setStuname(stu.getStuname());
}else {
stu.setStuname(student.getStuname());
}
if(student.getPassword()==null){
stu.setPassword(stu.getPassword());
}else{
stu.setPassword(student.getPassword());
}
if(student.getGender()==null){
stu.setGender(stu.getGender());
}else {
stu.setGender(student.getGender());
}
return studentDao.save(stu);
}
/**
* 根据名字去查找学生信息
* @param stuname
* @return
*/
@Override
public List findStudentByStuname(String stuname) {
return studentDao.findStuByName(stuname);
}
/**
* 根据学生名称密码进行登录
* @param stuname
* @param password
* @return
*/
@Override
public Student login(String stuname, String password) {
return studentDao.login(stuname,password);
}
/**
* 根据id和密码去登录
* @param id
* @return
*/
@Override
public Student loginById(Integer id,String password) {
return studentDao.loginbyId(id,password);
}
/**
* 根据id去删除学生信息
* @param id
*/
@Override
public void deletById(Integer id) {
studentDao.deleteById(id);
}
/**
* 分页查询所有数据
* @param page 当前页
* @param pageSize 每页记录数
* @return
*/
@Override
public Page findAll(int page, int pageSize) {
Pageable pageable= PageRequest.of(page,pageSize);
return studentDao.findAll(pageable);
}
}
Controller控制层:
package com.example.stu.controller;
import com.example.stu.entity.Student;
import com.example.stu.service.StudentService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.repository.query.Param;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
@RestController//相当于restbody+controller标识这个类为控制器,同时返回的数据为json数据
@RequestMapping("/student")//控制器的名字
public class StudentController {
@Autowired
private StudentService studentService;
/**
* 查询学生所有信息
* @return
*/
@GetMapping("/findAll")//使用get请求,postmapping是post的请求
public List findAll(){
return studentService.findAll();
}
/**
* 根据Id查询一条学生信息
* @param id
* @return
*/
@GetMapping("/findOneById")
public Student findOneById(Integer id){
return studentService.findStudentById(id);
}
/**
* 新增一条学生信息
* @param student
* @return
*/
@PostMapping("/rgs")
public Student rgs(Student student){
return studentService.save(student);
}
/**
* 根据学生id去修改学生信息
* @param student
* @return
*/
@GetMapping("/update/{student}")
public Student update(@PathVariable Student student){
return studentService.updateById(student);
}
/**
* 根据学生名称查询学生信息
* @param stuname
* @return
*/
@GetMapping("/findstubystuname")
public List findStuByStuname(String stuname){
return studentService.findStudentByStuname(stuname);
}
/**
* 根据id去删除学生信息
* @param id
*/
@GetMapping("/delete/{id}")//这种格式,在进行地址栏输入为/delete/id值,不需要/delete?id=id值
public void delete(@PathVariable Integer id){
studentService.deletById( id);
}
/**
* 根据学生名称和密码进行登录
* @param stuname
* @param password
* @return
*/
@GetMapping("/login")
public Student login(String stuname,String password){
return studentService.login(stuname,password);
}
/**
* 根据学生id和密码进行登录
* @param id
* @param password
* @return
*/
@GetMapping("/loginbyid")
public Student loginById(Integer id,String password){
return studentService.loginById(id,password);
}
/**
* 分页查找显示所有
* @param page
* @param response
* @return
*/
@GetMapping("/pagefindall")
public Page pagefindAll(Integer page, HttpServletResponse response){
response.setHeader("Access-Control-Allow-Origin","*");//解决跨域请求
if(page==null || page<=0){
page = 0;
}else{
page -= 1;
}
return studentService.findAll(page,5);
}
}
你需要下载JQuery,layui。
layui
ID
用户名
密码
性别
layui
layui
layui
(简单的案例,还有些页面的操作完成之后的跳转没有进行完善,底层的功能也比较简陋,仅供参考)