springboot入門:mysql建表

用戶表(user)           用戶uid(自增,唯一鍵,可不填) 手機號碼(登錄) 密碼(要填) 用戶名 性別 年齡
博客表(blog)           id(自增) title content create_time update_time is_delete uid
用戶收藏書的表(b_collect)    id(自增) bid(書的id) uid(用戶id)

1   需求說明

打算建個數據庫ohsay,ohsay庫下有user表,blog表,b_collect表。

2   數據庫新建和刪除操作,大小寫都可以

刪除數據庫【oh_say】SQL語句: 

DROP DATABASE IF EXISTS oh_say; 

新建數據庫【ohsay】SQL語句

create database if not exists ohsay;

3  建用戶表,表名【user】

SQL語句方式建表

CREATE TABLE `ohsay`.`user` (
  `uid` INT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '用戶id',
  `phone` VARCHAR(20) NOT NULL,
  `pwd` VARCHAR(20) NULL,
  `name` VARCHAR(20) NULL,
  `sex` INT NULL,
  PRIMARY KEY (`uid`),
  UNIQUE INDEX `uid_UNIQUE` (`uid` ASC) VISIBLE,
  UNIQUE INDEX `phone_UNIQUE` (`phone` ASC) VISIBLE)
COMMENT = '用戶表';

直接在視圖建表方式 

 4  關於mybatis的使用  ( better_mybatis-generator插件下載 )

mybatis generator插件可以自動化生成sql模板,然後在設置裏面配置生成模板存放路徑

(注意:如果創建失敗可能需要勾選mysql_8)

需要先連接數據庫 (注意,URL需要帶上serverTimeZone,否則創建實體會鏈接數據庫失敗)

 

 

右鍵user選擇mybatis generator自動生成user表的實體類 

在上一步中model dao xml的package包設置爲***.generator.user

在model包中新建文件UserBean.kt  (注意mybatis自動生成的User和UserBean的使用)

import com.fasterxml.jackson.annotation.JsonInclude;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.extern.slf4j.Slf4j;

@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
@Slf4j
public class UserBean {
    private int uid;
    private String phone;
    private String pwd;
    @JsonInclude(JsonInclude.Include.NON_NULL)
    private String name;
    @JsonInclude(JsonInclude.Include.NON_NULL)
    private Integer sex;
}

在service包中新建文件UserRestService.kt 和 文件 UserRestServiceImpl.kt



import com.fgh.spring.model.UserBean;

import java.util.List;

public interface UserRestService {

    int saveUser(UserBean userBean);

    int deleteUser(int uid);

    int updateUser(UserBean userBean);

    UserBean getUser(int uid);

    List<UserBean> getAllUser();

}
import com.fgh.spring.generator.User;
import com.fgh.spring.generator.UserMapper;
import com.fgh.spring.model.UserBean;
import com.fgh.spring.utils.DozerUtil;
import lombok.extern.slf4j.Slf4j;
import org.dozer.Mapper;
import org.springframework.stereotype.Service;

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

@Slf4j
@Service
public class UserRestServiceImpl implements UserRestService {

    @Resource
    Mapper mapper;

    @Resource
    UserMapper userMapper;

    @Override
    public int saveUser(UserBean userBean) {
        User user = mapper.map(userBean, User.class);
        return userMapper.insert(user);
    }

    @Override
    public int deleteUser(int uid) {
        return userMapper.deleteByPrimaryKey(uid);
    }

    //updateByPrimaryKeySelective會對字段進行判斷再更新(如果爲Null就忽略更新),如果你只想更新某一字段,可以用這個方法。
    //updateByPrimaryKey對你注入的字段全部更新
    @Override
    public int updateUser(UserBean userBean) {
        User user = mapper.map(userBean, User.class);
        return userMapper.updateByPrimaryKeySelective(user);
    }

    @Override
    public UserBean getUser(int uid) {
        User user = userMapper.selectByPrimaryKey(uid);
        return mapper.map(user, UserBean.class);
    }

    @Override
    public List<UserBean> getAllUser() {
        List<User> list = userMapper.selectByExample(null);
        return DozerUtil.mapList(list, UserBean.class);
    }
}

關於Dozerutil,在utils目錄下新建


import com.google.common.collect.Lists;
import org.dozer.DozerBeanMapper;

import java.util.Collection;
import java.util.Iterator;
import java.util.List;

public class DozerUtil {

    static DozerBeanMapper dozerBeanMapper = new DozerBeanMapper();

    public static <T> List<T> mapList(Collection sourceList, Class<T> destinationClass) {

        List destinationList = Lists.newArrayList();
        for (Iterator i$ = sourceList.iterator(); i$.hasNext();) {
            Object sourceObject = i$.next();
            Object destinationObject = dozerBeanMapper.map(sourceObject, destinationClass);
            destinationList.add(destinationObject);
        }
        return destinationList;

    }

}

還需要在config目錄下新建 DozerBeanMapperConfigure.java

import org.dozer.DozerBeanMapper;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class DozerBeanMapperConfigure {
    @Bean
    public DozerBeanMapper mapper() {
        DozerBeanMapper mapper = new DozerBeanMapper();
        return mapper;
    }
}

在controller目錄下新建UserRestController.java


import com.fgh.spring.model.AjaxResponse;
import com.fgh.spring.model.UserBean;
import com.fgh.spring.service.UserRestService;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*;

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

@Slf4j
@RestController
@RequestMapping("/user")
public class UserRestController {

    @Resource(name = "userRestServiceImpl")
    UserRestService userRestService;

    //創建用戶
    @PostMapping("/register")
    public AjaxResponse saveUser(@RequestParam String phone, @RequestParam String pwd) {
        UserBean userBean = new UserBean();
        userBean.setPhone(phone);
        userBean.setPwd(pwd);
        int code = userRestService.saveUser(userBean);
        return AjaxResponse.success(code);
    }

    //更改用戶資料
    @PostMapping("/info/update")
    public AjaxResponse changeInfo(@RequestParam int uid,
                                   @RequestParam(required = false) String phone,
                                   @RequestParam(required = false) Integer sex,
                                   @RequestParam(required = false) String name) {
        UserBean userBean = new UserBean();
        userBean.setUid(uid);
        userBean.setPhone(phone);
        userBean.setSex(sex);
        userBean.setName(name);
        int code = userRestService.updateUser(userBean);
        return AjaxResponse.success(code);
    }

    //獲取用戶資料
    @PostMapping("/info")
    public AjaxResponse getUser(@RequestParam int uid) {
        UserBean user = userRestService.getUser(uid);
        return AjaxResponse.success(user);
    }

    //註銷用戶
    @PostMapping("/delete")
    public AjaxResponse deleteUser(@RequestParam int uid) {
        int code = userRestService.deleteUser(uid);
        return AjaxResponse.success(code);
    }

    //獲取所有用戶(不分頁)
    @GetMapping("/alluser")
    public AjaxResponse getAllUser() {
        List<UserBean> list = userRestService.getAllUser();
        return AjaxResponse.success(list);
    }

    //獲取所有用戶(分頁)
    @GetMapping("/alluser/v2")
    public AjaxResponse getAllUserLimit(@RequestParam int page,
                                        @RequestParam int pageSize) {
        //startPage一定要在getAllUser前面
        PageHelper.startPage(page, pageSize);
        List<UserBean> list = userRestService.getAllUser();
        PageInfo<UserBean> data = PageInfo.of(list);
        return AjaxResponse.success(data);
    }

}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章