零零落落__together 2024-01-09 22:56 采纳率: 40%
浏览 15

这是一个关于mybatis的问题,数据库连接

@Repository
public class UserDaoImpl implements UsersDao {

@Override
public boolean login(String username,String password) throws IOException {
    InputStream resourceAsStream= Resources.getResourceAsStream("sqlMapConfig.xml");
    SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(resourceAsStream);
    SqlSession session = sqlSessionFactory.openSession();
    System.out.println(session);
    session.commit();
    Users users = session.selectOne("findByname",username);
    System.out.println(users);
    System.out.println("baibai");
    System.out.println("姓名\t年龄");
    System.out.println(users.getUsername() +"\t"+users.getPassword());
    session.close();
   if (username.equals("张三")&&password.equals("0219")){
       return true;
   }else if(username.equals("李四")&&password.equals("0218")){
       return true;
   }else if(username.equals("王五")&&password.equals("0220")){
       return true;
   }
   return false;
}

}
Users users = session.selectOne("findByname",username);这句话执行不了,只输出了session,这是什么原因

  • 写回答

2条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2024-01-10 08:44
    关注

    【以下回答由 GPT 生成】

    问题原因:在执行session.selectOne("findByname", username)时,没有正确使用MyBatis的映射语句来查询数据库。

    解决方案:请将以下步骤添加到代码中,以正确使用MyBatis的映射语句来查询数据库。

    1. 创建一个mapper.xml文件,用于存放数据库映射语句。在该文件中,定义一个findByname的查询语句,将其绑定到一个合适的SQL语句上。
    <!-- mapper.xml -->
    <mapper namespace="com.example.dao.UserDao">
        <select id="findByname" resultType="com.example.model.User">
            SELECT * FROM users WHERE name = #{username}
        </select>
    </mapper>
    
    1. 修改sqlMapConfig.xml文件,添加对mapper.xml文件的引用。
    <!-- sqlMapConfig.xml -->
    <configuration>
        <mappers>
            <mapper resource="mapper.xml"/>
        </mappers>
    </configuration>
    
    1. 修改UserDaoImpl类的代码,将session的查询方法修改为使用映射语句查询。
    @Repository
    public class UserDaoImpl implements UsersDao {
        @Override
        public boolean login(String username, String password) throws IOException {
            InputStream resourceAsStream = Resources.getResourceAsStream("sqlMapConfig.xml");
            SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);
            SqlSession session = sqlSessionFactory.openSession();
    
            // 使用映射语句查询数据库
            User user = session.selectOne("com.example.dao.UserDao.findByname", username);
            session.close();
    
            if (user != null && user.getPassword().equals(password)) {
                return true;
            } else {
                return false;
            }
        }
    }
    

    这样,就能够正确使用MyBatis的映射语句来查询数据库了。



    【相关推荐】



    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    评论

报告相同问题?

问题事件

  • 创建了问题 1月9日

悬赏问题

  • ¥30 基于信创PC发布的QT应用如何跨用户启动后输入中文
  • ¥20 非root手机,如何精准控制手机流量消耗的大小,如20M
  • ¥15 远程安装一下vasp
  • ¥15 自己做的代码上传图片时,报错
  • ¥15 Lingo线性规划模型怎么搭建
  • ¥15 关于#python#的问题,请各位专家解答!区间型正向化
  • ¥15 unity从3D升级到urp管线,打包ab包后,材质全部变紫色
  • ¥50 comsol温度场仿真无法模拟微米级激光光斑
  • ¥15 上传图片时提交的存储类型
  • ¥15 VB.NET如何绘制倾斜的椭圆