SSM整合(二)
代码结构:
- 首先是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像前端传输数据。