您的位置:首页 > 编程语言 > Java开发

使用数据库和ssm框架(spring + springmvc + mybatis )写一个简单的书籍管理网站之二——详细解释各种调用层次,以及注解,便于学习理解(附源码)

2019-06-30 11:31 916 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/qq_42231859/article/details/94294747

使用数据库和ssm框架(spring + springmvc + mybatis )写一个简单的书籍管理网站之二——详细解释各种调用层次,以及注解,便于学习理解(附源码)

废话不多说,先给心急的伙伴把全部代码附上:
先说楼主电脑软件配置:idea2018;MySQL5.5.58(不同的可能需要修改代码中驱动和jar包,楼主会出一期MySQL卸载教材,安装教材可以参考上一期;maven3.0)
再说一下,请心急的小伙伴先按照我上一期的内容一步步搭好层次结构:
上一期的连接附上:https://mp.csdn.net/mdeditor/93917511#
层次如图:


ok,现在代码奉上:Userinfo类:

package com.zhongruan.bean;

public class Userinfo {
private int id;
private String username;
private String password;

public int getId() {
return id;
}

public void setId(int 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;
}
}

UserController类:

package com.zhongruan.controller;

import com.zhongruan.bean.Userinfo;
import com.zhongruan.service.IUserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;

import java.util.List;

@Controller
@RequestMapping("user")//网页地址导航1
public class UserController {
@Autowired
private IUserService userService;
@RequestMapping("/findAll.do")//网页导航2
public ModelAndView findAll(){
List<Userinfo> userinfos = userService.findAll ();
ModelAndView modelAndView=new ModelAndView ();
modelAndView.addObject ("ui",userinfos);
modelAndView.setViewName ("allUser");
return modelAndView;
}
@RequestMapping("toAddUser.do")
public String addUser(Userinfo userinfo)
{
return "addUser";//返回字符串,等于导航到addUser.jsp
}

@RequestMapping("delete.do")
public String delete(int id)
{
userService.deleteUser (id);
return "redirect:/user/findAll.do";
}

@RequestMapping("deleteUser")
public String deleteUser(int id)
{
userService.deleteUser (id);
return "redirect:/user/findAll.do";
}

@RequestMapping("toUpdate.do")
public String update(Model model,int id)
{
model.addAttribute("userInfo", userService.queryById(id));
return "updateUser";
}

@RequestMapping("update.do")
public String updateUser( Model model,Userinfo userinfo)
{
userService.updateUser (userinfo);
userinfo=userService.queryById (userinfo.getId ());
model.addAttribute ("userInfo",userinfo);

return "redirect:/user/findAll.do";
}

@RequestMapping("save.do")
public String save(Userinfo userinfo)
{
userService.addUser (userinfo);   //执行相关操作,这里数据库的insert操作
return "redirect:/user/findAll.do";//点击保存,跳到find All.do执行
}
}

IUserDao类:

package com.zhongruan.dao;

import com.zhongruan.bean.Userinfo;
import org.springframework.web.servlet.ModelAndView;

import java.util.List;

public interface IUserDao {
public List<Userinfo> findAll();

public Userinfo addUser(Userinfo userinfo);

public void deleteUser(int id);//只能void,因为没有resultType:指定返回值类型//parameterType:是值函数的传参

public void updateUser(Userinfo userinfo);//每一个dao函数都和UserMapper.xml中的一个<select>标签所对应,直接执行sql

public Userinfo queryById(int id);
}
IUserServices接口:

package com.zhongruan.service;

import com.zhongruan.bean.Userinfo;
import org.springframework.web.servlet.ModelAndView;

import java.util.List;

public interface IUserService {
public List<Userinfo> findAll();

public void addUser(Userinfo userinfo);

public void deleteUser(int id);

public void updateUser(Userinfo userinfo);

public Userinfo queryById(int id);
}

UserServices接口的实现:

package com.zhongruan.service.impl;

import com.zhongruan.bean.Userinfo;
import com.zhongruan.dao.IUserDao;
import com.zhongruan.service.IUserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.web.servlet.ModelAndView;

import java.util.List;
@Service//注解,IUserService放进spring
public class UserServiceimpl implements IUserService {
@Autowired//注解,把spring中的iUserDao生成后取出
IUserDao iUserDao;
@Override
public List<Userinfo> findAll() {

return iUserDao.findAll ();
}

public void addUser(Userinfo userinfo)
{
iUserDao.addUser (userinfo);
}

public void deleteUser(int id)
{
iUserDao.deleteUser (id);
}

public void updateUser(Userinfo userinfo)
{
iUserDao.updateUser (userinfo);
}

public Userinfo queryById(int id)
{
return iUserDao.queryById(id);
}
}

//层次结构是:1.Userinfo是对象的类;2.IUserService是一个接口;3.UserServiceimpl是上面接口的实现,在里面调用IUserDao
//4.IUserDao是接口,里面的函数与UserMapper一一对应;5.UserController中实现功能,他有一个UserService对象,然后递归调用方法
//直到数据库,即可;注意页面的跳转。
UserMapper.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >

<mapper namespace="com.zhongruan.dao.IUserDao" >

<select id="findAll" resultType="com.zhongruan.bean.Userinfo">
select * from userinfo
</select>

<select id="addUser" resultType="com.zhongruan.bean.Userinfo">
insert  into userinfo(id,username,password) value (#{id},#{username},#{password})
</select>

<select id="deleteUser">
delete from userinfo where id=#{id}
</select>

<update id="updateUser" parameterType="com.zhongruan.bean.Userinfo">
update userinfo set username=#{username},password=#{password}
where id=#{id}
</update>

<select id="queryById" parameterType="int" resultType="com.zhongruan.bean.Userinfo">
select * from userinfo where id=#{id}

</select>

</mapper>

其他的在前一篇的素材中。现在给大家看看实现结果(都是学生我懂得):






基本上就实现了简单增删改查了。马上进入解惑环节:心急的小伙伴可以先收藏下次有空再看哦。
1.层次结构看上去很复杂,框架啥的不懂咋办?
答:层次虽然对于新手很复杂,却是企业开发项目开发的正式结构,希望大家可以提前掌握,用处很多,也有利于找bug和锻炼自己的思维模式。
框架是很难,但是不慌,会用即可,目前先大致了解一下,之后我们再深度学习。
2.上面项目的层次调用是啥啊?就看一堆名字差不多的类?看不懂鸭?
答:层次结构是:

  • 1.Userinfo是对象的类;
    2.IUserService是一个接口;
    3.UserServiceimpl是上面接口的实现,在里面调用IUserDao
    4.IUserDao是接口,里面的函数与UserMapper一一对应;
    5.UserController中实现功能,他有一个UserService对象,然后递归调用方法直到数据库,即可;注意页面的跳转。
    3.页面咋跳转的啊?
    答:通过在UserController中的有些函数的return来实现,比如

    return"allUser";
    来跳转到allUser.jsp所对应的页面。
    4.那些标签
    @
    啥意思啊,看不懂UserControlle中函数的跳转和返回?
    答:

    @RequestMapping(“user”)//网页地址导航函数
    return “redirect:/user/findAll.do”;//跳转user标签下的findAll.do

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐