手把手教你基于SpringBoot+Mybatis+Redis搭建简单的web服务-3

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第18天,点击查看活动详情

1.9 编写UserMapper接口

1.queryUserList()方法为查询User表所有数据,

2.queryUserByID()方法为根据id查询,

3.addUser 方法为增加一条数据,

4.updateUser方法 为更新一条数据,

5.deleteUser方法为删除一条数据,

6.@Mapper 注解的作用:在接口类上添加了@Mapper,在编译之后会生成相应的接口实现类,另一个方式:在启动类上加@MapperScan注解也可以起到相同的作用,二者选一个即可

package com.example.myFirstBlog.mapper;

import com.example.myFirstBlog.entity.User;
import org.apache.ibatis.annotations.Mapper;

import java.util.List;

@Mapper
public interface UserMapper {
    List<User> queryUserList();
    User queryUserByID(int id);
    int addUser(User user);
    int updateUser(User user);
    int deleteUser(int id);

}
复制代码

1.10 编写 UserMapper.xml

( 1.参数 namespace 为对应的UserMapper接口的全限定名. 2. 在mapper标签下写对应的sql语句,id 为接口对应的函数名,3.resultType/resultMap 为函数的返回值类型,parameterType/Map 为函数参数类型,Map 比 Type 更灵活.4.每种sql语句都有对应的标签,例如查询语句对应select标签,插入语句对应insert标签等)

<?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.example.myFirstBlog.mapper.UserMapper">
    <!--resultMap 作用就是 使数据库中的字段与实体类中的字段形成映射关系 -->
    <resultMap id="userMap" type="User">
        <!--column数据库中的字段   property实体类中的字段 -->
        <result column="id" property="id"/>
        <result column="name" property="name"/>
        <result column="pwd" property="pwd"/>
    </resultMap>

    <select id="queryUserList" resultMap="userMap">
        select * from user
    </select>

    <select id="queryUserByID" resultType="User">
        select * from user where id = #{id}
    </select>

    <insert id="addUser" parameterType="User">
        insert into user (id,name,pwd) values (#{id},#{name},#{pwd})
    </insert>

    <update id="updateUser" parameterType="User">
        update user set name = #{name},pwd = #{pwd} where id = #{id}
    </update>

    <delete id="deleteUser" parameterType="int">
        delete from user where id = #{id}
    </delete>

</mapper>
复制代码

1.11 编写UserController

1.@RestController 处理http请求,返回json 相当于 @Controller + @ResponseBody;

2.@Resource 和 @Autowired 作用类似:@Resource和@Autowired都是做bean的注入时使用,两者都可以写在字段和setter方法上。两者如果都写在字段上,那么就不需要再写setter方法。@Autowired注解是按照类型(byType)装配依赖对象,默认情况下它要求依赖对象必须存在,如果允许null值,可以设置它的required属性为false。如果我们想使用按照名称(byName)来装配,可以结合@Qualifier注解一起使用。@Resource默认按照ByName自动注入,由J2EE提供,需要导入包javax.annotation.Resource。@Resource有两个重要的属性:name和type,而Spring将@Resource注解的name属性解析为bean的名字,而type属性则解析为bean的类型。所以,如果使用name属性,则使用byName的自动注入策略,而使用type属性时则使用byType自动注入策略。如果既不制定name也不制定type属性,这时将通过反射机制使用byName自动注入策略。

3.@RequestMapping是一个用来处理请求地址映射的注解,可用于类或者方法上。用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径。

4.通过 @PathVariable 可以将 URL 中占位符参数绑定到控制器处理方法的入参中:URL 中的 {xxx} 占位符可以通过@PathVariable(“xxx”) 绑定到操作方法的入参中。

package com.example.myFirstBlog.controller;

import com.example.myFirstBlog.entity.User;
import com.example.myFirstBlog.mapper.UserMapper;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.annotation.Resource;
import java.util.List;

@RestController
public class UserController {

    @Resource
    private UserMapper userMapper;

    @RequestMapping("/queryUserList")
    public List<User> queryUserList(){
        List<User> userList = userMapper.queryUserList();
        return userList;
    }

    @RequestMapping("getUser/{id}")
    public User queryUserByID(@PathVariable int id){
        User user = userMapper.queryUserByID(id);
        return user;
    }

    @RequestMapping("/addUser")
    public String addUser(){
        userMapper.addUser(new User(3,"wangwu","2345"));
        return "add is successful";
    }

    @RequestMapping("/updateUser")
    public String updateUser(){
        userMapper.updateUser(new User(3,"wangwu","666666"));
        return "update is successful";
    }

    @RequestMapping("/deleteUser")
    public String deleteUser(){
        userMapper.deleteUser(2);
        return "delete is successful";
    }
}
复制代码

猜你喜欢

转载自juejin.im/post/7087955108398366733