Java项目配置通用mapper以及表映射出错问题

257 阅读1分钟

前提

今天准备自己前端测试一个小功能,但是得自己造一些数据,所以用Java写了几个接口,但是在项目搭建的过程中遇到如下几个问题。一.# Failed to bind properties under 'mapper.mappers',顾名思义就是绑定属性到mappers上面失败了,二. Table 'hh_my_test.user' doesn't exist,意思就是数据库中某张表不存在

产生问题的原因

问题一的原因就是自己在配置application.xml的时候忘记补全类名,只写到包名为止,一开始我是没有写这个.MyMapper。

image.png 但是也要注意一点,就是设置扫包的时候,不能把这个通用mapper的包也扫描到,所以设置 @MapperScan(basePackages = {"com.hhzj.mapper"}),所有的mapper都放在com.hhzj.mapper这个包里面,把通用mapper单独命名包空间

image.png

image.png 注意看mapper和myMapper的包是同级的,所以通用mapper没有被spring扫描到,如果被扫描到了,也会出现问题一

问题二的原因就是我的pojo中的类名和数据库中表的名字是不一样的,我pojo中的类名叫User,但是数据库的表名是user_login,这样在mapper中做映射的时候就会出问题,解决办法就是加上@Table(name = "user_login")

image.png

前端部分

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<form method="post" action="user/login">
    <input type="text" name="userEmail" placeholder="请输入用户邮箱">
    <input type="text" name="username" placeholder="请输入用户名">
    <input type="password" name="password" placeholder="请输入用户密码">
    <input class="sumbit" type="submit" value="提交">
</form>

<script>
    const submit = document.querySelector(".sumbit")
    const userEmail = document.querySelector("input[name='userEmail']")
    userEmail.setAttribute("value", "root@qq.com") // 一开始进入页面就设置默认值
    const username = document.querySelector("input[name='username']")
    username.setAttribute("value", "root")
    const password = document.querySelector("input[name='password']")
    // username.setAttribute("value", "root123") 用户密码不能设置默认值
    let userEmailValue = userEmail.value
    let usernameValue = username.value
    let passwordValue = password.value
    userEmail.addEventListener("input", function () {
        userEmailValue = this.value
    })

    username.addEventListener("input", function () {
        usernameValue = this.value
    })

    password.addEventListener("input", function () {
        passwordValue = this.value
    })
    submit.addEventListener("click", function (e) {
        const data = {
            userEmail: userEmailValue,
            username: usernameValue,
            password: passwordValue
        }

        let xhr = new XMLHttpRequest()
        xhr.open("post", `user/login`)
        xhr.setRequestHeader("Content-Type", "application/json")
        xhr.addEventListener("load", function (data) {
            console.log(data)
        })
        xhr.send(JSON.stringify(data))
        # form表单中写了metho和action,这个e.preventDefault()就是测试一下阻止表单默认的提交事件
        e.preventDefault()
    })
</script>
</body>
</html>