java.sql.时间戳值; Spring-boot项目中的嵌套异常是java.sql.SQLDataException

标签 java spring hibernate spring-boot spring-mvc

我正在用spring boots构建一个项目,通过控制检查互联网的状态,并且正在进行数据库连接。

我正在尝试执行“MyBatis”,但出现错误。

这是我的目录列表: directories

监控数据应用程序.java

package com.smartcore.mn.springboot;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
@MapperScan(basePackages = "com.smartcore.mn.springboot")
public class MinitoringdataApplication {

    public static void main(String[] args) {
        SpringApplication.run(MinitoringdataApplication.class, args);
    }

}

ServletInitializer.java

package com.smartcore.mn.springboot;

import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;

public class ServletInitializer extends SpringBootServletInitializer {

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        return application.sources(MinitoringdataApplication.class);
    }

}

ApiController.java

package com.smartcore.mn.springboot.controller;

import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

import com.smartcore.mn.springboot.model.Member;
import com.smartcore.mn.springboot.service.MemberService;

@RestController
public class ApiController {

    @Autowired
    MemberService memberService;


    @GetMapping(path = "/helloWorld")
    public String helloWorld() {
        return LocalDateTime.now().format(DateTimeFormatter.ISO_LOCAL_DATE_TIME);
    }

    @GetMapping(path = "/db")
    public List<Member> selectAllMember() {
         List<Member> members = memberService.getAllMember();
         return members;
    }

}

MemberMapper.interface

package com.smartcore.mn.springboot.mapper;

import java.util.List;

import org.apache.ibatis.annotations.Mapper;

import com.smartcore.mn.springboot.model.Member;

@Mapper
public interface MemberMapper {
    Member selectMemberById(Long id);
    List<Member> selectAllMember();
    void insertMember(Member member);

}

Member.java

package com.smartcore.mn.springboot.model;

import java.util.Date;

import org.apache.ibatis.type.Alias;

import com.smartcore.mn.springboot.Exception.IdPasswordNotMatchingException;

import lombok.Data;


@Data
@Alias("member")
public class Member {

    private Long id;
    private String email;
    private String password;
    private String name;
    private Date registerDate;

    public Member(String email, String password, String name, Date registerDate) {
        this.email = email;
        this.password = password;
        this.name = name;
        this.registerDate = registerDate;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public Long getId() {
        return id;
    }

    public String getEmail() {
        return email;
    }

    public String getPassword() {
        return password;
    }

    public String getName() {
        return name;
    }

    public Date getRegisterDate() {
        return registerDate;
    }

    public void changePassword(String oldPassword, String newPassword) {
        if (!password.equals(oldPassword))
            throw new IdPasswordNotMatchingException();
        this.password = newPassword;
    }

}

MemberService.java

package com.smartcore.mn.springboot.service;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import com.smartcore.mn.springboot.mapper.MemberMapper;
import com.smartcore.mn.springboot.model.Member;

@Service
@Transactional
public class MemberService {

    @Autowired
    MemberMapper memberMapper;

    public Member getMemberById(Long id) {
        return memberMapper.selectMemberById(id);
    }

    public List<Member> getAllMember() {
        return memberMapper.selectAllMember();
    }

    public void addMember(Member member) {
        memberMapper.insertMember(member);
    }

}

application.properties

spring.datasource.url=jdbc:mysql://localhost/mydb?serverTimezone=UTC&autoReconnection=true
spring.datasource.username=mydb
spring.datasource.password=mydb
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
mybatis.type-aliases-package=com.smartcore.mn.springboot.model
logging.level.com.smartcore.mn.springboot.mapper=TRACE

xmlfile

MemberMapper.xml

<?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.smartcore.mn.springboot.mapper.MemberMapper">

    <select id="selectMemberById" resultType="member">
         SELECT * 
         FROM MEMBER 
         WHERE ID = #{id}
    </select>

    <select id="selectAllMember" resultType="member">
          SELECT * 
          FROM MEMBER
    </select>

    <insert id="insertMember">
      INSERT INTO MEMBER (EMAIL, PASSWORD, NAME, REGDATE)
      VALUES (#{email}, #{password}, #{name}, #{registerDate})
    </insert>

</mapper>

<强> http://localhost:8080/helloworld 工作正常。

但是 http://localhost:8080/db 看到错误

db connect

我需要你的解决方案。预先感谢您。

我的 table

enter image description here

最佳答案

正如我们在评论中的讨论中提到的,MyBatis 正在尝试将结果集中的 NAME 列映射到 Member 中的 registerDate 参数> 构造函数。

由于您没有为每个字段指定paramName,构造函数中arg元素的顺序很容易出错。

尝试使用正确的有序参数将结果集映射到构造函数:

成员(member)(字符串电子邮件、字符串密码、字符串名称、日期注册日期) 应匹配 SELECT EMAIL, PASSWORD, NAME, REGDATE FROM MEMBER

成员(长 ID、字符串电子邮件、字符串密码、字符串名称、日期注册日期) 应匹配 SELECT * FROM MEMBER

关于java.sql.时间戳值; Spring-boot项目中的嵌套异常是java.sql.SQLDataException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56861985/

相关文章:

java - 如何在spring security taglib中不提及hasRole ('ROLE_ADMIN')

mysql - Spring Mysql 未在远程 IP 上正确使用 application.properties 文件数据

java - 在Hibernate中持久化后获取数据库生成的ID

java - 将单个 Join 实例传递给多个Specification 实例?

hibernate - 持久化设计的一般问题

java - BufferedWriter 仅保存文本文件中的最后输入

java - 如何验证未引发异常

java - Tomcat/Spring - 获取未解码的参数

java - 创建员工类和员工类演示?

java - 如何在 Observable RxJava 中处理处置