java高级:管理系统

目录

一、连接数据库

二、类的写入

总结


一、连接数据库

在application文件写入配置信息。驱动、数据源地址和数据源的用户信息用户名和密码。

配置数据源在IDEA可见。 

 

二、类的写入

创建数据表写入需要的字段字段名

@Column:标识类中属性与数据表中字段的关系

@Data
@Entity
@Table(name = "furnitures")

public class Furniture {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private long id;

    @Column(name = "name")
    private String Name;

    @Column(name = "type")
    private String Type;

    @Column(name = "brand")
    private String Brand;

    @Column(name = "state")
    private String State;
}

 使用@GetMapping、@PostMapping 分别处理get和post请求。get请求的特点:参数会添加到请求路径的后面,只能添加少量参数。请求参数显示在浏览器地址栏,路由器会记录请求地址 。如果传输中文,会乱码。post请求的特点:请求参数添加到实体内容里面,可以添加大量的参数。 相对安全,post不会对请求参数进行加密处理。

@Controller
public class FurnitureController {

    @Autowired
    private FurnitureService furnitureService;

    @GetMapping("/")
    public String viewHomePage(Model model) {
        return findPaginated(1, "id", "asc", model);
    }

    @GetMapping("/showNewFurnitureForm")
    public String showNewFurnitureForm(Model model) {
        // create model attribute to bind form data
        Furniture furniture = new Furniture();
        model.addAttribute("furniture", furniture);
        return "new_furniture";
    }

    @PostMapping("/saveFurniture")
    public String saveEFurniture(@ModelAttribute("furniture") Furniture furniture) {
        // save eFurniture to database
        furnitureService.saveFurniture(furniture);
        return "redirect:/";
    }

    @GetMapping("/showFormForUpdate/{id}")
    public String showFormForUpdate(@PathVariable(value = "id") long id, Model model) {

        // get eFurniture from the service
        Furniture furniture = furnitureService.getFurnitureById(id);

        // set eFurniture as a model attribute to pre-populate the form
        model.addAttribute("furniture", furniture);
        return "update_furniture";
    }

    @GetMapping("/deleteFurniture/{id}")
    public String deleteFurniture(@PathVariable(value = "id") long id) {

        // call delete eFurniture method
        this.furnitureService.deleteFurnitureById(id);
        return "redirect:/";
    }

    @RequestMapping(value = "/index1")
    public String index(Model model) {
        //这样的话,${user}才可在index.html中被取出
        Furniture furniture = new Furniture();
        model.addAttribute("furniture", furniture);
        return "seek";
    }

    //访问show页面
    @PostMapping(value = "/show")
    //@ModelAttribute接受表单提交过来的user对象
    public String show(@ModelAttribute Furniture furniture, Model model) {
        Long id = furniture.getId();
        Furniture u= furnitureService.getFurnitureById(id);
        model.addAttribute("furniture", u);
        return "show";
    }

    //获取分页数据
    @GetMapping("/page/{pageNo}")
    public String findPaginated(@PathVariable (value = "pageNo") int pageNo,
                                @RequestParam("sortField") String sortField,
                                @RequestParam("sortDir") String sortDir,
                                Model model) {
        int pageSize = 5;

        Page<Furniture> page = furnitureService.findPaginated(pageNo, pageSize, sortField, sortDir);
        List<Furniture> listFurnitures = page.getContent();

        model.addAttribute("currentPage", pageNo);
        model.addAttribute("totalPages", page.getTotalPages());
        model.addAttribute("totalItems", page.getTotalElements());

        model.addAttribute("sortField", sortField);
        model.addAttribute("sortDir", sortDir);
        model.addAttribute("reverseSortDir", sortDir.equals("asc") ? "desc" : "asc");

        model.addAttribute("listFurnitures", listFurnitures);
        return "index";
    }
}

使用的htnl文件。

 创建repository。@Repository注解将类识别为Bean,和将所标注的类中抛出的数据访问异常封装为 Spring 的数据访问异常类型。

@Repository
public interface FurnitureRepository extends JpaRepository<Furniture, Long> {

}

创建service服务层。定义好我们需要的方法,然后在实现类去实现这个接口里的方法。

接口

public interface FurnitureService {
    //    public  Furniture findByName(String firstName);
    List <Furniture> getAllFurnitures();
    void saveFurniture(Furniture furniture);
    Furniture getFurnitureById(long id);
    void deleteFurnitureById(long id);

    Page<Furniture> findPaginated(int pageNo, int pageSize, String sortField, String sortDirection);
}

实现类

@Service
public class FurnitureServiceImpl implements FurnitureService {

    
    @Autowired
    private FurnitureRepository furnitureRepository;

    @Override
    public List <Furniture> getAllFurnitures() {
        return furnitureRepository.findAll();
    }

    @Override
    public void saveFurniture(Furniture furniture) {
        this.furnitureRepository.save(furniture);
    }

    @Override
    public Furniture getFurnitureById(long id) {
        //调用数据访问层查找指定ID的员工,返回Optional对象
        Optional <Furniture> optional = furnitureRepository.findById(id);

        Furniture furniture = null;
        //如果存在指定id的员工
        if (optional.isPresent()) {
            //从Optional对象中获取员工对象
            furniture = optional.get();
        } else {
            //否则抛出运行时异常
//            throw new RuntimeException(" 找不到员工ID :: " + id)
            System.out.println("对不起,您要查找的用户不存在!");
        }
        return furniture;
    }

    @Override
    public void deleteFurnitureById(long id) {
        this.furnitureRepository.deleteById(id);
    }

    @Override
    public Page<Furniture> findPaginated(int pageNo, int pageSize, String sortField, String sortDirection) {
        //设置排序参数,升序ASC/降序DESC?
        Sort sort = sortDirection.equalsIgnoreCase(Sort.Direction.ASC.name())
                ? Sort.by(sortField).ascending()
                : Sort.by(sortField).descending();

        //根据页号/每页记录数/排序依据返回某指定页面数据。
        Pageable pageable = PageRequest.of(pageNo - 1, pageSize, sort);
        return this.furnitureRepository.findAll(pageable);
    }
}

运行结果:

这里我们可以看到整个列表的内容有。

 我们可以通过add按钮新建内容。

 通过select按钮进行查看

 

总结

学习Java高级,学习到了很多的知识和内容,类型、变量、接口、输入输出流、分析异常、抛出异常,也有对Spring Boot,JAP内容的学习懂得了很多的专业知识。在学习Java时真的是每天必须保证一定量的练习,才能熟练贯通。学习编程语言没有捷径可走。需要在学习的过程中慢慢积累经验,扎实基础。才能做的更好。

gitee地址:https://gitee.com/l-zhijie/java-advanced-final-code.git

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值