JSP课程 Spring Boot + JPA + Thymeleaf 综合实践2023

将apache-maven-3.6.0复制粘贴到路径:C:\Program Files\JavaTools

复制路径:C:\Program Files\JavaTools\apache-maven-3.6.0

打开计算机>属性>高级系统设置>环境变量>系统变量下的MAVEN_HOME

将变量值替换成:C:\Program Files\JavaTools\apache-maven-3.6.0

C:\Program Files\JavaTools\apache-maven-3.6.0\conf

打开settings.xml文档

根据提示:

将常用工具下载放到本地仓库"maven_respository"存在D盘目录下的JAVA TOOLS文件夹

这些各种包都是从远程仓库下载下来,那远程仓库是在:

外网仓库地址:http://my.repository.com/repo/path        (不推荐使用)

 

把阿里云这段仓库代码剪贴下来,贴在146行下面吧,方便查看。

  <name>aliyun maven</name>
  <url>http://maven.aliyun.com/nexus/content/groups/public/</url> 
  <mirrorOf>central</mirrorOf> 
  <mirrors>

 复制下这个网址,打开:

http://maven.aliyun.com/nexus/content/groups/public/

 显示点击里面的网址:

https://maven.aliyun.com

 继续点击网址之后


准备数据库:

打开mysql,将代码复制进去后,点击闪电按钮,运行

 =》

set character set utf8;
create database bookmag  default character set utf8;
use bookmag;
create table book
(
bid int primary key NOT NULL AUTO_INCREMENT,
bookname varchar(50),
author varchar(10)
)ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;

CREATE TABLE `user` (
  `uid` int(10) NOT NULL AUTO_INCREMENT,
  `username` varchar(50) DEFAULT NULL,
  `password` varchar(50) NOT NULL,
  `age` int(10) DEFAULT NULL,
   `bid` int(10) DEFAULT NULL,
  PRIMARY KEY (`uid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

然后再新建一个user表和book表

点击user右键Select  Rows,进入下图界面

每次写完要点击下面的Apply,应用一下

打开        IDEA软件

open打开项目student03

File>setting

修改为以下路径配置,配置好后要点击ok才行:


 

移除重新添加

 

服务器端口号:

server.port=2741

server.port=2741
spring.datasource.url=jdbc:mysql://127.0.0.1/bookmag?useUnicode=true&characterEncoding=utf-8&serverTimezone=UTC&useSSL=true
spring.datasource.username=root
spring.datasource.password=123456
#spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.jpa.properties.hibernate.hbm2ddl.auto=update
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect
spring.jpa.show-sql=true
#关闭thymeleaf的缓存,不然在开发过程中修改页面不会立刻生效需要重启,生产可配置为true
spring.thymeleaf.cache=false

 


看看 

浏览器访问本地网址:

前面有提到过服务器端口号设置为:server.port=2741

http://localhost:2741/userlist

若是没有数据可以手动在浏览器这个/userlist页面手动添加的 


 新建class类Book

 Book类代码如下:

 因为porm.xml有依赖,所以可以在User类里面使用@Data

 

 

 

代码代码如下:


 

package com.exp.repository;

import com.exp.domain.Book;
import org.springframework.data.jpa.repository.JpaRepository;
//T表示泛型接口
public interface BookRepository extends JpaRepository<Book, Integer> {
    public Book findBookByBid(Integer bid);
}
package com.exp.repository;

import com.exp.domain.Publisher;
import org.springframework.data.jpa.repository.JpaRepository;

public interface PublisherRepository extends JpaRepository<UserRepository,Integer> {
public  Publisher findPublisherByPid(Integer pid);
}
package com.exp.repository;

import java.util.List;

import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;

import com.exp.domain.User;

public interface UserRepository extends JpaRepository<User, Integer> {
    //本次实验仅涉及简单的增删改查,如果需要其它功能可在该接口文件补充方法
    public User findUserByUid(Integer uid);

    @Query(value = "select * from user", nativeQuery = true)
    Page<List<User>> findPage(Pageable pageable);
}

 

 

 

package com.exp.service;

import com.exp.domain.Book;
import com.exp.repository.BookRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import javax.swing.text.html.Option;
import java.util.List;
import java.util.Optional;

@Service
public class BookServiceImpl {
    @Autowired  //自动装配
    private BookRepository bookRepository;
    public List<Book> selectBook()
    {
        return bookRepository.findAll();   //调用接口bookRepository里面的findAll方法

    }
    public Optional<Book> selectBookByBid(Integer bid){
        return bookRepository.findById(bid);
    }
    public Book selectBookByBid1(Integer bid){
        return bookRepository.findBookByBid(bid);
    }
    public void addBook(Book book)
    {
        bookRepository.save(book);
    }
    public void updateBook(Book book)
    {
        bookRepository.save(book);
    }
    public void deletBook(Integer bid)
    {
        bookRepository.deleteById(bid);
    }
}

 

package com.exp.service;

import com.exp.domain.User;
import com.exp.repository.UserRepository;
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.data.domain.Sort;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class PublicsherServiceImpl {
    @Autowired
    private UserRepository userRepository;

    public List<User> selectUserList() {
        return userRepository.findAll();
    }

    public User selectUserById(Integer uid) {
        //用这个内置方法 userRepository.findById(uid);接口中就不需要声明
        return userRepository.findUserByUid(uid);
    }

    //本次实验重在将后端数据传送到前端,编辑和修改操作直接调用了内置save方法,
    // 建议按照实验2自定义加上事务管理后使用后使用
    public void userSave(User user) {
        userRepository.save(user);
    }

    public void userEdit(User user) {
        userRepository.save(user);
    }

    public void userDelete(Integer uid) {
        userRepository.deleteById(uid);
    }

    public Page<User> getUserList(int pageNum, int pageSize) {
        Sort sort = new Sort(Sort.Direction.DESC, "uid");
        Pageable pageable = PageRequest.of(pageNum, pageSize, sort);
        Page<User> users = userRepository.findAll(pageable);
        return users;
    }
}
package com.exp.service;

import java.util.List;

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.data.domain.Sort;
import org.springframework.stereotype.Service;
import com.exp.domain.User;
import com.exp.repository.UserRepository;

@Service
public class UserServiceImpl {
    @Autowired
    private UserRepository userRepository;

    public List<User> selectUserList() {
        return userRepository.findAll();
    }

    public User selectUserById(Integer uid) {
        //用这个内置方法 userRepository.findById(uid);接口中就不需要声明
        return userRepository.findUserByUid(uid);
    }

    //本次实验重在将后端数据传送到前端,编辑和修改操作直接调用了内置save方法,
    // 建议按照实验2自定义加上事务管理后使用后使用
    public void userSave(User user) {
        userRepository.save(user);
    }

    public void userEdit(User user) {
        userRepository.save(user);
    }

    public void userDelete(Integer uid) {
        userRepository.deleteById(uid);
    }

    public Page<User> getUserList(int pageNum, int pageSize) {
        Sort sort = new Sort(Sort.Direction.DESC, "uid");
        Pageable pageable = PageRequest.of(pageNum, pageSize, sort);
        Page<User> users = userRepository.findAll(pageable);
        return users;
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值