学JAVA之人傻了系列
二、增删改查(👀)
这是生成的Model类
这是生成的mapper文件
这是生成的mapxml文件
此处,隐去包名(这是mybatis生成的TTest类,且一眼看出我的数据库中只有5个字段——id,name,age,addr,tele)
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Arrays;
public class TTest implements Serializable {
private String id;
private String name;
private Integer age;
private String addr;
private String tele;
private static final long serialVersionUID = 1L;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id == null ? null : id.trim();
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name == null ? null : name.trim();
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public String getAddr() {
return addr;
}
public void setAddr(String addr) {
this.addr = addr == null ? null : addr.trim();
}
public String getTele() {
return tele;
}
public void setTele(String tele) {
this.tele = tele == null ? null : tele.trim();
}
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
sb.append(getClass().getSimpleName());
sb.append(" [");
sb.append("Hash = ").append(hashCode());
sb.append(", id=").append(id);
sb.append(", name=").append(name);
sb.append(", age=").append(age);
sb.append(", addr=").append(addr);
sb.append(", tele=").append(tele);
sb.append(", serialVersionUID=").append(serialVersionUID);
sb.append("]");
return sb.toString();
}
public enum Column {
id("id", "id", "VARCHAR", false),
name("name", "name", "VARCHAR", true),
age("age", "age", "INTEGER", false),
addr("addr", "addr", "VARCHAR", false),
tele("tele", "tele", "VARCHAR", false);
private static final String BEGINNING_DELIMITER = "`";
private static final String ENDING_DELIMITER = "`";
private final String column;
private final boolean isColumnNameDelimited;
private final String javaProperty;
private final String jdbcType;
public String value() {
return this.column;
}
public String getValue() {
return this.column;
}
public String getJavaProperty() {
return this.javaProperty;
}
public String getJdbcType() {
return this.jdbcType;
}
Column(String column, String javaProperty, String jdbcType, boolean isColumnNameDelimited) {
this.column = column;
this.javaProperty = javaProperty;
this.jdbcType = jdbcType;
this.isColumnNameDelimited = isColumnNameDelimited;
}
public String desc() {
return this.getEscapedColumnName() + " DESC";
}
public String asc() {
return this.getEscapedColumnName() + " ASC";
}
public static Column[] excludes(Column ... excludes) {
ArrayList<Column> columns = new ArrayList<>(Arrays.asList(Column.values()));
if (excludes != null && excludes.length > 0) {
columns.removeAll(new ArrayList<>(Arrays.asList(excludes)));
}
return columns.toArray(new Column[]{});
}
public static Column[] all() {
return Column.values();
}
public String getEscapedColumnName() {
if (this.isColumnNameDelimited) {
return new StringBuilder().append(BEGINNING_DELIMITER).append(this.column).append(ENDING_DELIMITER).toString();
} else {
return this.column;
}
}
public String getAliasedEscapedColumnName() {
return this.getEscapedColumnName();
}
}
}
还有个名为TTestExample的类我懒得放了
正文开始
Service包中建立接口TestService
// 这里有个import TTest的包,我隐去了,自己引入
import java.util.List;
public interface TestService {
TTest queryByPK(String id);
TTest query(String addr, String tele);
List<TTest> querylist(String addr, int age);
boolean insert(List<TTest> list);
boolean insert(TTest tTest);
boolean delete(String addr, String tele);
boolean deleteByPK(String id);
boolean updatadb(TTest tTest);
}
接下来就是接口的实现类了
//这里我还是隐去了TTest,TTestExample和TTestMapper包的引入,自己引
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType;
import org.springframework.stereotype.Service;
import org.springframework.web.client.RestTemplate;
import java.util.List;
@Service
public class TestServiceImpl implements TestService {
private Logger logger = LoggerFactory.getLogger(this.getClass());
@Autowired
private TTestMapper tTestMapper;
@Override
public TTest queryByPK(String id) {
TTest tTest = tTestMapper.selectByPrimaryKey(id);
return tTest;
}
@Override
public TTest query(String addr, String tele) {
TTestExample tTestExample = new TTestExample();
tTestExample.createCriteria().andAddrEqualTo(addr).andTeleEqualTo(tele);
TTest tTest = tTestMapper.selectOneByExample(tTestExample);
if(null == tTest){
return null;
}
return tTest;
}
@Override
public List<TTest> querylist(String addr, int age) {
TTestExample tTestExample = new TTestExample();
tTestExample.createCriteria().andAddrEqualTo(addr).andAgeEqualTo(age);
List<TTest> list = tTestMapper.selectByExample(tTestExample);
if (list.isEmpty()){
return null;
}
return list;
}
@Override
public boolean insert(List<TTest> list) {
tTestMapper.batchInsert(list);
return true;
}
@Override
public boolean insert(TTest tTest) {
tTestMapper.insert(tTest);
return true;
}
@Override
public boolean delete(String addr, String tele) {
TTestExample tTestExample = new TTestExample();
tTestExample.createCriteria().andAddrEqualTo(addr).andTeleEqualTo(tele);
tTestMapper.deleteByExample(tTestExample);
return true;
}
@Override
public boolean deleteByPK(String id){
tTestMapper.deleteByPrimaryKey(id);
return true;
}
@Override
public boolean updatadb(TTest tTest) {
tTestMapper.updateByPrimaryKey(tTest);
return true;
}
}
这里重点别忘记@Service
接下来就是Controller中的TestController
//老样子,不多说了
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController
@RequestMapping("/testController")
public class TestController {
private Logger logger = LoggerFactory.getLogger(this.getClass());
@Autowired
private TestService testService;
@ResponseBody
@PostMapping("/queryPK")
public TTest queryByPK(@RequestBody TestQueryRequestDto testQueryRequestDto){
return testService.queryByPK(testQueryRequestDto.getId());
}
@ResponseBody
@PostMapping("/query")
public TTest query (@RequestBody TestQueryRequestDto testQueryRequestDto){
return testService.query(testQueryRequestDto.getValue1(),testQueryRequestDto.getValue2());
}
@ResponseBody
@PostMapping("/querylist")
public List<TTest> queryList(@RequestBody TestQueryRequestDto testQueryRequestDto){
return testService.querylist(testQueryRequestDto.getValue1(),testQueryRequestDto.getValue3());
}
@ResponseBody
@PostMapping("/insertlist")
public boolean insert(@RequestBody List<TTest> list) {
return testService.insert(list);
}
@ResponseBody
@PostMapping("/insert")
public boolean insert(@RequestBody TTest tTest) {
return testService.insert(tTest);
}
@ResponseBody
@PostMapping("/delete")
public boolean delete(@RequestBody TestQueryRequestDto testQueryRequestDto) {
return testService.delete(testQueryRequestDto.getValue1(),testQueryRequestDto.getValue2());
}
@ResponseBody
@PostMapping("/deleteByPK")
public boolean deleteByPK(@RequestBody TestQueryRequestDto testQueryRequestDto){
return testService.deleteByPK(testQueryRequestDto.getId());
}
@ResponseBody
@PostMapping("/updata")
public boolean updatadb(@RequestBody TTest tTest) {
return testService.updatadb(tTest);
}
}
这边重要部分为@RestController和@RequestMapping("/testController"),前者是表示Controller层,后者则是地址,都是必要的。方法上的 @ResponseBody和@PostMapping也是必要的,参数的@RequestBody也得要,也可以用@RequestParam
这边因为是Springboot 纯接口的项目,所以测试的时候我用到了postman。(没错!就是邮递员!!手动滑稽)附上安装包 链接:https://pan.baidu.com/s/19yuLWNfU7VI_cCVhEYay_A
提取码:H1N1
纯英文,至于怎么用,自己找教程,本人概不负责。
测试的时候,虽然可以用@RequestParam传多参,但是建议只传一个参,多个参数可以建立一个Dto类来作为中间参数,类似delete。
完结,撒花!
关于Mybatis生成bean,mapper,和xml文件的可以看下面
链接:简单的基于springBoot和Mybatis的增删改查(一) https://blog.csdn.net/weixin_43099980/article/details/115151824