SSM整合(二)

代码结构:

image.png

  • 首先是pojo类:字段要和数据库中的字段一直,这样使用mybatis查询出来的时候就不用在配置名字映射了,使用lombok
package pojo;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.apache.ibatis.type.Alias;

/**
 * @Author: nsk
 * @Description:
 * @Date: create in 2021/4/16 14:35
 */
@Alias("user")  //mybatis-config.xml中配置了别名,自动扫包
@Data
@NoArgsConstructor
@AllArgsConstructor
public class User {
    private int id;
    private String name;
    private String pwd;
}
  • 编写dao层的新建,mapper接口类和mapper.xml。在mapper接口类中编写业务:
package dao;

import org.apache.ibatis.annotations.Param;
import pojo.User;

import java.util.List;

/**
 * @Author: nsk
 * @Description:
 * @Date: create in 2021/4/16 14:35
 */
public interface UserMapper {
    List<User> getUser();
}
  • 编写mapper.xml,注意id要和接口类的名字对上:
<?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="dao.UserMapper">
    <select id="getUser" resultType="user">
        select * from user
    </select>
</mapper>
  • 注意此时,接口类已经被spring-mybatis.xml中配置好自动注入类,service引用这个接口的时候只需要在service类中新建一个private的接口属性,使用@AutoWired注解。serivce的注解生效是在spring-service.xml中的<context:component-scan base-package=“service”/>配置的,如果是取service的bean,bean的名字是加@Service的类名首字母小写

  • 编写service层,先写接口,接口可以规定必须要实现什么方法:UserService.java:

package service;

import pojo.User;

import java.util.List;

/**
 * @Author: nsk
 * @Description:
 * @Date: create in 2021/4/16 14:45
 */

public interface UserService {
    List<User> getUser();
}
  • 编写service接口的实现类,这个类中的@Service是将此类注入spring容器中,@Autowired是使用容器中已经存在的对象。ServiceImpl.java:
package service;

import dao.UserMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import pojo.User;

import java.util.List;

/**
 * @Author: nsk
 * @Description:
 * @Date: create in 2021/4/16 14:45
 */
@Service
public class UserServiceImpl implements UserService{
    @Autowired
    private UserMapper userMapper;

    public List<User> getUser() {
        return userMapper.getUser();
    }
}
  • 编写controller层,控制url,实现与后端和前端数据交互
package controller;

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 pojo.User;
import service.UserService;

import java.util.List;

/**
 * @Author: nsk
 * @Description:
 * @Date: create in 2021/4/16 15:38
 */
@Controller
@RequestMapping("/user")
public class UserController {
    @Autowired
    private UserService userService;
    @RequestMapping("/users")
    public String getUsers(Model model){
        List<User> userList = userService.getUser();
        model.addAttribute("users",userList);
        return "index";
    }
}
  • 注意:

  • 使用@Controller @Autowored是在spring-mvc.xml中的 <context:component-scan base-package=“controller”/>声明的。

  • 使用@RequestMapping(“/user”)是在spring-mvc.xml中的 mvc:annotation-driven/设置的

  • 后端通过Model像前端传输数据。