значение java.sql.Timestamp;Вложенное исключение - java.sql.SQLDataException в проекте Spring-boot. - PullRequest
1 голос
/ 03 июля 2019

Я строю проект с пружинными ботинками, проверяю состояние Интернета через управление, и я нахожусь в процессе соединения с БД.

Я пытаюсь сделать ' MyBatis ', но есть ошибка.

Это список моих каталогов: directories

MinitoringdataApplication.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

Мне нужно ваше решение. Заранее спасибо.

МОЙ СТОЛ

enter image description here

1 Ответ

1 голос
/ 03 июля 2019

Как упоминалось в нашем обсуждении в комментариях, MyBatis пытается сопоставить ваш столбец NAME в наборе результатов с аргументом registerDate в конструкторе Member.

Поскольку вы не указали paramName для каждого поля, порядок элементов arg в конструкторе подвержен ошибкам.

Попробуйте сопоставить ваш набор результатов с вашим конструктором с правильными упорядоченными аргументами:

Member(String email, String password, String name, Date registerDate) должно совпадать SELECT EMAIL, PASSWORD, NAME, REGDATE FROM MEMBER

или

Member(Long id, String email, String password, String name, Date registerDate) должно совпадать SELECT * FROM MEMBER

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...