动不了一点 2024-07-12 17:01 采纳率: 17.2%
浏览 2

关于#数据库#的问题:我的数据库确实有值,但是输出的是[null](语言-java)


<?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="servlet.mapper.Account">


    <select id="getlogin" resultType="Account_and_Password_class">
        select * from
        account
        where useraccount = #{uname}
        and  password = #{pwd}

    </select>


</mapper>

package servlet.mapper;

import org.apache.ibatis.annotations.Param;
import servlet.pojo.Account_and_Password_class;
import servlet.pojo.Email_and_Password_class;
import servlet.pojo.testdemo1;

import java.util.List;

public interface Account {
    //用户注册
     List<Account_and_Password_class> getlogin(@Param("uname")String uname,@Param("pwd")String pwd);


}


<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
    <typeAliases>
        <package name="servlet.pojo"/>
    </typeAliases>
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <!--数据库连接信息-->
                <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/java_web"/>
                <property name="username" value="root"/>
                <property name="password" value="123456"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <!--加载sql映射文件-->
        <!--<mapper resource="servlet/mapper/userMapper.xml"/>--><!--不用这样写直接用包扫描-->
        <package name="servlet.mapper"/>
    </mappers>
</configuration>

public class Login_rigister {
    public static void main(String[] args) throws IOException {
        //1.加载mybatis的核心配置文件,获取SqlSessionFactory
        String resource = "mybatis-config.xml";
        InputStream inputStream = Resources.getResourceAsStream(resource);
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

        //2.获取SqlSession对象,用它来执行sql(可以在这里设置自动提交事务)
        SqlSession sqlSession = sqlSessionFactory.openSession(true);
        //3.获取UserMapper接口的代理对象
        Account account = sqlSession.getMapper(Account.class);

        List qqqq = account.getlogin("qqqq", "1234");
        System.out.println(qqqq);


    }
}


我的数据库确实有值,但是输出的是[null]

img

  • 写回答

6条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-07-12 17:01
    关注

    引自免费微信小程序:皆我百晓生

    从您给出的代码和描述来看,有几个可能的原因导致您从数据库中查询数据后输出的是 [null]。以下是一些建议和检查点,希望能帮助您解决问题:

    1. 数据库连接信息检查:确认您的数据库连接信息是正确的。根据您给出的配置,确保数据库 URL、用户名和密码都是正确的。尤其是数据库名称(在这里是 java_web)和您的数据库实际名称相匹配。
    2. SQL 查询语句检查:确保 SQL 查询语句没有问题。检查字段名 useraccountpassword 是否与数据库中的实际字段名完全匹配(包括大小写)。此外,确认这两个字段存在于 account 表中。
    3. 结果映射检查:在 MyBatis 的映射文件中,resultType 属性应该与查询结果集相匹配。确认 Account_and_Password_class 类中的字段与数据库表中的字段一一对应。如果有多个字段或关联表的情况,请确保您正确处理了这些复杂性。
    4. 数据库中的数据检查:虽然您提到数据库中有值,但请确保查询的条件(在这里是 qqqq1234)确实能匹配到数据库中的记录。可以尝试直接在数据库管理工具中运行相同的查询来验证结果。
    5. MyBatis 配置检查:确认 MyBatis 的配置文件(包括映射文件)的路径和名称都是正确的,并且 MyBatis 能够正确加载它们。有时配置文件的微小错误可能导致 MyBatis 无法正确映射查询结果。
    6. 异常处理检查:在您的代码中增加异常处理,以捕获可能的数据库连接或查询错误。这有助于诊断问题所在。
    7. 使用工具查看返回结果:除了打印整个列表外,尝试打印列表中单个对象的详细信息,这样可以帮助您判断哪个对象出了问题。例如,您可以遍历列表并打印每个对象的属性值。
    8. 调试模式:如果仍然无法确定问题所在,您可以尝试在 MyBatis 的配置中启用调试模式,以获取更详细的查询和日志输出信息。

    基于您提供的描述和代码片段,很难确定具体的问题所在。建议您按照上述建议逐一排查问题。如果您有更多的上下文信息或详细的错误信息,那将更有助于准确诊断和解决问题。

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 7月12日

悬赏问题

  • ¥15 C# 用partial定义部分类无法快速预览代码
  • ¥15 fastreport 代码无法设置最后一页横线不显示
  • ¥15 stm32u535芯片usb hid custom类接收数据有问题
  • ¥20 quartus功能仿真
  • ¥15 传染病最优控制问题,控制为什么没起作用
  • ¥15 ue5.3 pico打包失败 求帮助
  • ¥15 请教,这是用chatgpt写的CAD LISPD脚本,需求是画一个由双直线组成的矩形
  • ¥50 微信小程序 成功包奶茶啊
  • ¥15 计算机博弈的六子棋代码
  • ¥15 在Fetch API中传送的参数为何不起作用?