1.使用springboot整合postgresql时报错:org.postgresql.util.PSQLException

1.1依赖

使用spring boot和postgresql搭建简单demo

org.springframework.boot

spring-boot-starter-web

org.postgresql

postgresql

org.projectlombok

lombok

com.baomidou

mybatis-plus-boot-starter

3.2.0

1.2 配置postgresql数据库

server:

port: 8005

spring:

application:

name: postgres

datasource:

driver-class-name: org.postgresql.Driver

url: jdbc:postgresql://localhost:5432/test

username: postgres

password: root

1.3 启动类

@SpringBootApplication

@MapperScan("com.test.postgre.mapper")

public class Application {

public static void main(String[] args) {

SpringApplication.run(Application.class,args);

}

}

1.4 实体

@Data

@Table(name = "user")

public class User {

@TableId(type = IdType.AUTO)

private Integer id;

private String name;

private Integer age;

}

1.5 controller

@RestController

@Controller

@RequestMapping("user")

public class UserController {

@Autowired

private UserService userService;

@GetMapping("findAll")

public ResponseEntity findAll(){

return userService.findAll();

}

}

1.6 mapper

@Repository

public interface UserMapper extends BaseMapper {

@Select("SELECT * FROM public.\"user\"")

List selectAll();

}

1.7实现类

@Service

@Slf4j

public class UserServiceImpl implements UserService {

@Autowired

private UserMapper userMapper;

@Override

public ResponseEntity findAll() {

List list = userMapper.selectList(null);

//List list = userMapper.selectAll();

log.info("list:{}",list);

return ResponseEntity.ok(list);

}

}

这看着没什么问题,但是启动后,调用接口http://localhost:8005/user/findAll,报500,控制台报错如下 使用mubatisplus的封装SQL提示id不存在, 然后改用自己写sql:

@Repository

public interface UserMapper extends BaseMapper {

@Select("SELECT * FROM public.\"user\"")

List selectAll();

}

sql是按照postgresql的可视化工具-pgAdmin4中查询sql复制过来的, 重启服务,发现接口返回成功

2.疑问

1.为啥使用mybatisplus的封装语句不行?少了什么吗,如果是mysql,这样的流程是没问题的,有大佬指点一下吗?

3 补充增删改接口代码

3.1 controller

@PostMapping("add")

public ResponseEntity add(@RequestBody User user){

return userService.add(user);

}

@PostMapping("update")

public ResponseEntity update(@RequestBody User user){

return userService.update(user);

}

@DeleteMapping("delete")

public ResponseEntity delete(Integer id){

return userService.delete(id);

}

3.2 service

public interface UserService {

ResponseEntity findAll();

ResponseEntity add(User user);

ResponseEntity update(User user);

ResponseEntity delete(Integer id);

}

3.3实现类

@Override

public ResponseEntity add(User user) {

userMapper.insertUser(user.getName(),user.getAge());

return ResponseEntity.ok("插入成功");

}

@Override

public ResponseEntity update(User user) {

userMapper.updateUser(user.getId(),user.getName(),user.getAge());

return ResponseEntity.ok("修改成功");

}

@Override

public ResponseEntity delete(Integer id) {

int i = userMapper.deleteUserById(id);

log.info("delete {}",i);

return ResponseEntity.ok("删除成功");

}

3.4 mapper

@Insert("INSERT INTO public.\"user\"(name, age) VALUES ( #{name}, #{age});")

void insertUser(String name,Integer age);

@Update("UPDATE public.\"user\" SET name=#{name}, age=#{age} WHERE id=#{id}")

void updateUser(Integer id, String name, Integer age);

@Delete("DELETE FROM public.\"user\" WHERE id=#{id}")

int deleteUserById(Integer id);

3.5 疑问

测试删除时,在可视化页面pgAdmin4中同样的sql,删除成功,但是在代码中执行时,删除记录为0条,求助大佬解答!!!

推荐文章

评论可见,请评论后查看内容,谢谢!!!评论后请刷新页面。