spring boot集成mybatis-plus——增加一个用户

实体类:

package org.example.Entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;

@TableName("users")        //不一致时,需要映射
public class MyUser
{
    @TableId(type = IdType.AUTO)
    private int id;

    private String name;

    private int age;

    public int getId()
    {

        return id;
    }

    public void setId(int id)
    {

        this.id = id;
    }

    public String getName()
    {

        return name;
    }

    public void setName(String name)
    {

        this.name = name;
    }

    public int getAge()
    {

        return age;
    }

    public void setAge(int age)
    {

        this.age = age;
    }

    @Override
    public String toString()
    {

        return "MyUser{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}

 

 

 

 

 

 

 

Mapper层不变

 

 

 

业务层接口与实现:

package org.example.service;

import org.example.Entity.MyUser;

import java.util.List;

public interface MyUserService
{

    // 查询所有用户
    List<MyUser> findAll();

    int save(MyUser myUser);



}

 

 

 

 

 

 

 

 

 

package org.example.service.Impl;

import org.example.Entity.MyUser;
import org.example.mapper.UserMapper;
import org.example.service.MyUserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;

@Service
public class MyUserServiceImpl implements MyUserService
{

    //继承了BaseMapper所有的方法,可以编写自己的扩展方法
    @Autowired
    private UserMapper userMapper;


    /**
     * 查询所有用户信息
     * @return
     */
    @Override
    public List<MyUser> findAll()
    {

        return userMapper.selectList(null);


    }

    /**
     * 增加一个用户信息
     * @param myUser
     * @return
     */
    @Override
    public int save(MyUser myUser) {
        return userMapper.insert(myUser);
    }


}

 

 

 

 

 

 

 

 

 

 

 

 

控制器类:

package org.example.controller;

import org.example.Entity.MyUser;
import org.example.service.MyUserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;

@RestController
public class MyUserController
{

    @Autowired
    private MyUserService myUserService;


    @GetMapping(value = "/findAll")
    public List<MyUser> findAll()
    {
        // 查询所有用户信息
        List<MyUser> users = myUserService.findAll();

        for (MyUser user : users)
        {
            System.out.println(user.getId()+"  "+user.getName()+"  "+user.getAge());
        }

        return users;
    }


    @GetMapping(value = "/save")
    public int save()
    {
        MyUser user = new MyUser();
        user.setName("小文");
        user.setAge(21);

        int insert = myUserService.save(user);//如果没有设置id,那么会自动生成id

        System.out.println(insert);//受影响行数

        System.out.println(user);//id会自动回填

        return insert;
    }


}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

注意:

 

 

Mybatis-Plus的常用注解

 

 

 

@TableName----用于定义表名
常用属性:

value 用于定义表名

 

 

 

@TableId ----用于定义表的主键
常用属性:

value 用于定义主键字段名
type 用于定义主键类型(主键策略 IdType)

 

主键策略:

IdType.AUTO — 主键自增,系统分配,不需要手动输入
IdType.NONE — 未设置主键
IdType.INPUT — 需要自己输入 主键值。
IdType.ASSIGN_ID — 系统分配 ID,用于数值型数据
IdType.ASSIGN_UUID — 系统分配 UUID,用于字符串型数据

 

 

 

 

@TableField ----用于定义表的非主键字段。
常用属性:

value 用于定义非主键字段名
exist 用于指明是否为数据表的字段, true 表示是,false 为不是。
fill 用于指定字段填充策略(FieldFill)。
字段填充策略:(一般用于填充 创建时间、修改时间等字段)

FieldFill.DEFAULT — 默认不填充
FieldFill.INSERT — 插入时填充
FieldFill.UPDATE — 更新时填充
FieldFill.INSERT_UPDATE — 插入、更新时填充。

 

 

 

 

 

@TableLogic ----用于定义表的字段进行逻辑删除(非物理删除)
常用属性:

value 用于定义未删除时字段的值
delval 用于定义删除时字段的值

 

 

 

 

@Version 用于字段实现乐观锁

 

 

 

 

 

 

 

 

 

@TableField注解
1、 主要用来解决实体类的字段名与数据库中的字段名不匹配的问题(数据库user_addr,字段useraddr未驼峰)

2、 实体类中的属性字段在表中不存在的问题

// 用来解决数据库中的字段和实体类的字段不匹配问题
@TableField(value = "age")

// 用来解决实体类中有的属性但是数据表中没有的字段
@TableField(exist = false) // 默认为true

 

@TableName(value = …)
当数据库名与实体类名不一致或不符合驼峰命名时,需要在此注解指定表名(不加这个注解默认将实体类的小写形式在db中寻找)

@TableField 字段注解,该注解用于标识非主键的字段。将数据库列与 JavaBean 中的属性进行映射

 

posted @ 2023-02-04 13:40  小白龙白龙马  阅读(222)  评论(0)    收藏  举报