SpringMVC常用的注解和简单的增删改功能

SpringMVC

Controller

常用注解

  • 定义控制器类 @Controller
  • 定义请求处理路径
    • @RequestMapping
    • @GetMapping
    • @PostMapping
  • 接收处理参数
    • @RequestParam
    • @ModelAttribute
  • @ResponseBody

SpringMVC处理请求参数的方式

view ------请求------>Server

  1. @RequestParam
  2. @ModelAttribute(可无可有)对象传值
  3. URL路径传值 ->(如HTTP URL :/json?name=xx&pwd=xx)
    • http://localhost:8080/urlparam/133(跟@ResponseBody一起使用导致路径改变,不建议一起使用)
    • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-h5F2rTfJ-1692601523162)(C:\Users\viros826\AppData\Roaming\Typora\typora-user-images\image-20230817153215710.png)]

view<--------响应--------Server

视图输出:${变量名}

  • WEB(常用)内置对象传值
    1. response 有效范围 :一次请求
    2. session 有效范围:一次会话,整个一系列操作之内
    3. application 应用 :有效范围:tomcat(服务器)启动到终止
  • Model对象传值 有效范围是跟session一样的
  • ModelAndView对象传值

view

Freenarker模板语言

  1. 数据类型处理
    <#assign 变量名="value" />
    变量名=${变量名}<br>
    <#assign str="字符串" />
    字符串变量的值:${str}<br>
    <#assign userid = 10000000 />
    number=${userid?string("#")}<br>
    ?string("#")->去掉特殊符号
    <#assign br = true />
    br=${br?c}<br>
    <hr>
    <#assign de="2023-08-08 15:45:46" />
    ${de}
    
  2. 流程控制处理
  3. 循环控制处理

Model

  • Java Bean - Datebase Table
  • ORM ->对象关系映射框架

常见的ORM框架(它们都实现JPA规范)

  1. MyBatis家族(支持灵活配置数据库操作)
  2. Hibernate(所有数据库操作封装成方法)
  3. Spring JPA(支持灵活配置封装)
/*
 *控制层    @Controller
 *服务层    @Service
 * 持久化层 @Repository
 */

MyBatis

配置文件

#配置数据库连接参数
spring.datasource.url=jdbc:mysql://localhost:3306/s98mvc
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.username=root
spring.datasource.password=990708

依赖

<!--mybatis的依赖 -->
<dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
    <version>2.2.0</version>
</dependency>

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.28</version>
</dependency>

mapper接口

/*
 *控制层    @Controller
 *服务层    @Service
 * 持久化层 @Repository
 */

@Repository //在SpringIOC容器注册
@Mapper    // 声明此接口是一个映射处理接口
//此接口中,可以处理所有数据库操作
//CRUD
public interface UserMapper {

    //查询用户信息
    @Select("select * from t_user")
    //将我们的数据库列映射到java对象
    @Results({
    //property对象属性名,column数据库列名;
    @Result(property = "id", column = "id"),
    @Result(property = "name", column = "name"),
    @Result(property = "pwd", column = "pwd")
    })
    List<User> queryUsers();

    @Select("select id,name,pwd from t_user where id=#{id}")
    @Results({
    @Result(property = "id",column = "id"),
    @Result(property = "name",column = "name"),
    @Result(property = "pwd",column = "pwd")
    })
    User selUser(int id);

    @Insert("insert into t_user values (#{id},#{name},#{pwd})")
    void addUser(User user);

    @Update("update t_user set name=#{name},pwd=#{pwd} where id=#{id}")
    void updateUser(User user);

    @Delete("delete from t_user where name=#{uanme}")
    void deleteUser(String uname);

}

控制层

@Controller
public class RegController {

    @Autowired
    UserService userService;

    @RequestMapping("/regUser")
    public String reg(User user, Model model) {
        userService.addUser(user);
        List<User> users = userService.queryUsers();
        model.addAttribute("users", users);
        return "showUser";
    }

    @RequestMapping("/delUser/{name}")
    public String delUser(@PathVariable String name, Model model) {
        userService.deleteUser(name);
        List<User> users = userService.queryUsers();
        model.addAttribute("users", users);
        return "showUser";
    }

    @RequestMapping("/updateUser/{id}")
    public String updateUser(@PathVariable String id, Model model) {
        String replace = id.replace(",", "");
        User user = userService.selUser(Integer.parseInt(replace));
        model.addAttribute("user", user);
        return "updateUser";
    }

    @RequestMapping("/upUser")
    public String upUser(Model model, User user) {
        System.out.println("user:"+user);
        userService.updateUser(user);
        List<User> users = userService.queryUsers();
        model.addAttribute("users", users);
        return "showUser";
    }

}
//处理用户逻辑
public interface UserService {

    void addUser(User user);

    List<User>queryUsers();

    void updateUser(User user);

    void deleteUser(String uname);
    User selUser(int id);

}
@Service
public class UserServiceImpl implements UserService {
    @Autowired
    UserMapper userMapper;
    @Override
    public void addUser(User user) {
        //生成一个ID
        user.setId((int) System.currentTimeMillis());
        userMapper.addUser(user);
    }

    @Override
    public List<User> queryUsers() {
        return userMapper.queryUsers();
    }

    @Override
    public void updateUser(User user) {
        userMapper.updateUser(user);
    }

    @Override
    public void deleteUser(String uname) {
        userMapper.deleteUser(uname);
    }

    @Override
    public User selUser(int id) {
        return userMapper.selUser(id);
    }
}

注册页面

<!DOCTYPE html>
<html lang="en">
<head>
   <meta charset="UTF-8">
   <title>注册</title>
</head>
<body>
<form action="/regUser" method="post">
   用户名<input type="text" name="name" placeholder="请输入用户名"/><br>
   密码<input type="text" name="pwd" placeholder="请输入密码"/><br>
   <button type="submit">提交注册</button>
</form>

</body>
</html>

修改页面

<!DOCTYPE html>
<html lang="en">
<head>
   <meta charset="UTF-8">
   <title>Title</title>
</head>
<body>
<form action="/upUser" method="post">
   <input type="hidden" name="id" value="${user.id?string("#")}">
   <input type="text" name="name" value="${user.name}">
   <input type="text" name="pwd" value="${user.pwd}">
   <button type="submit">修改</button>
</form>
</body>
</html>

显示页面

<!DOCTYPE html>
<html lang="en">
<head>
   <meta charset="UTF-8">
   <title>Title</title>
</head>
<body>
<#if users??>

<table border="1px">
   <thead>
   <tr>
      <td>编号</td>
      <td>名称</td>
      <td>密码</td>
      <td>操作</td>
   </tr>
   </thead>
   <tbody>
   <#list users as user>
   <tr>
      <td>${user.id?string("#")}</td>
      <td>${user.name}</td>
      <td>${user.pwd}</td>
      <td>
         <a href="/delUser/${user.name}">删除</a>
         <a href="/updateUser/${user.id}">修改</a>
      </td>
   </tr>
   </#list>
   </tbody>
</table>

</#if>
</body>
</html>

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Cxy_艾力

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值