墨宣子 2021-05-30 22:14 采纳率: 0%
浏览 24

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

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

下面时源码:

1.项目结构

2.主配置文件;

3.映射文件

4.测试类;

 

  • 写回答

4条回答 默认 最新

  • CSDN专家-微编程 2021-05-31 08:14
    关注

    你的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

     

    评论

报告相同问题?

悬赏问题

  • ¥100 复现论文:matlab仿真代码编写
  • ¥15 esp32驱动GC9A01循环播放视频
  • ¥15 惠普360g9的最新bios
  • ¥30 这个功能用什么软件发合适?
  • ¥60 微信小程序,取消订单,偶尔订单没有改变状态
  • ¥15 用pytorch实现PPO算法
  • ¥15 关于调制信号的星座图?
  • ¥30 前端传参时,后端接收不到参数
  • ¥15 这是有什么问题吗,我检查许可证了但是显示有呢
  • ¥15 机器学习预测遇到的目标函数问题