为什么配置好的Mybatis查询不到数据?????

请各位大神帮忙看看,改了很还是这样:

下面时源码:

1.项目结构

2.主配置文件;

3.映射文件

4.测试类;

 

你的dao怎么没有啊,你居然把mapper当成dao来用了,真正的实例代码如下

mybatis-config.xml

<?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>
	<!-- 数据库链接配置信息池
	default:当前使用的链接配置
	 -->
	<environments default="e1">
	<!-- 数据库链接配置信息
	id:给当前配置起名字
	 -->
	 <environment id="e1">
	 <!-- 设置事务控制机制 
	 type:JDBC 使用原始的自动控制事务机制
	 Managered 使用第三方插件控制事务
	 -->
	 <transactionManager type="JDBC"> </transactionManager>
	 <!-- 数据库连接池配置
	 type:POOLED  使用数据库连接池  占内存,crud效率提高
	 	  
	 	   UNPOOLED  不是用数据库连接池 不占内存,效率低
	 	    -->
	 	    <dataSource type="POOLED">
	 	    <property name="driver" value=""/> 
	 	     <property name="url" value=""/> 
	 	      <property name="username" value=""/> 
	 	       <property name="password" value=""/> 
	 	    
	 	    </dataSource>
	 
	 </environment>
	
	</environments>
	<!-- 注冊dao接口对应的配置文件 -->
	<mappers>
	<mapper resource="dao/UserDaoMapper.xml"/>
	
	</mappers>
</configuration>

user类

package entity;

public class User {
	private int u_id;
	private String u_name;
	private int age;
	private String phone;
	private String address;
	public int getU_id() {
		return u_id;
	}
	public void setU_id(int u_id) {
		this.u_id = u_id;
	}
	public String getU_name() {
		return u_name;
	}
	public void setU_name(String u_name) {
		this.u_name = u_name;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	public String getPhone() {
		return phone;
	}
	public void setPhone(String phone) {
		this.phone = phone;
	}
	public String getAddress() {
		return address;
	}
	public void setAddress(String address) {
		this.address = address;
	}
	public User() {
		super();
		// TODO Auto-generated constructor stub
	}
	public User(int u_id, String u_name, int age, String phone, String address) {
		super();
		this.u_id = u_id;
		this.u_name = u_name;
		this.age = age;
		this.phone = phone;
		this.address = address;
	}
	@Override
	public String toString() {
		return "User [u_id=" + u_id + ", u_name=" + u_name + ", age=" + age + ", phone=" + phone + ", address="
				+ address + "]";
	}
	

}

UserDao.java

package dao;

import java.util.List;

import entity.User;

public interface UserDao {
	public User selectById(int id);
	public List<User> selectAll();
	public void delete(int id);
	public void update(User u);
	public void insert(User u);

}

UserMapper.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" >
<!-- namespace:此maper的对应的dao接口全类名 -->
<mapper namespace="dao.UserDao">
<!-- 实现selectById 
		id :该标签对应的方法名
		resultaType:声明返回值类型
-->
		<select id="selectById" resultType="entity.User">
		select * from t_user where u_id = #{id}
		</select>
		<select id="selectAll" resultType="entity.User">
		select * from t_user
		</select>
		<delete id="delete" >
		delete t_user where u_id=#{id}
		</delete>
		<update id="update" >
		update t_user set u_name=#{u_name},age=#{age},phone=#{phone},address=#{address} where u_id=#{u_id}
		
		</update>
		<insert id="insert">
		insert into t_user values(seq_u.nextval,#{u_name},#{age},#{phone},#{address})
		</insert>
</mapper>

test

package test;

import java.io.IOException;
import java.io.InputStream;
import java.util.List;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

import dao.UserDao;
import entity.User;

public class FristMybatis {
	public static void main(String[] args) throws IOException {
		//1.加载主配置文件
		InputStream stream=Resources.getResourceAsStream("mybatis-config.xml");
		//2.创建sqlsession的工厂对象
		SqlSessionFactory ssf=new SqlSessionFactoryBuilder().build(stream);
		//3.获取sqlsession
		SqlSession session=ssf.openSession();
		//4.获取dao的代理对象
		
		UserDao dao=session.getMapper(UserDao.class);
		
//	//	5.调用dao方法
//		User user=dao.selectById(1);
//		System.out.println("此时查询的user对象是:"+user);
		
//		List<User>list=dao.selectAll();
//		for (User user : list) {
//			System.out.println(user);
//		}
		
//		dao.delete(26);
//		session.commit();
//		
		
//		dao.update(new User(61,"长吗",18,"54188541881","合肥"));
//		session.commit();
		
	  dao.insert(new User(12,"张贺",19,"13598564754","天上人间"));
	  session.commit();
		//6,关流
		session.close();
		
		
		
		
	}

}

你的命名也不规范,以user为例,实体类(映射数据库表的类,包括属性,构造方法,toString.....)你要放在entity文件夹里面,命名User,dao就放在dao文件夹里面,命名为UserDao

 

运行出来的结果为null

如果没有报错,要考虑数据库的表中是否有符合条件的数据,你有ID为1的这条数据吗

您的问题已经有小伙伴解答了,请点击【采纳】按钮,采纳帮您提供解决思路的答案,给回答的人一些鼓励哦~~

ps:开通问答VIP,享受5次/月 有问必答服务,了解详情↓↓↓

【电脑端】戳>>>  https://vip.csdn.net/askvip?utm_source=1146287632
【APP 】  戳>>>  https://mall.csdn.net/item/52471?utm_source=1146287632