查不到数据,值为null,怀疑是数据库没连接上,用的是mysql8.0.17的

查不到数据,值为null,怀疑是数据库没连接上,用的是mysql8.0.17的

driver=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://localhost:3306/mydb?useSSL=false&serverTimezone=UTC
username=root
password=root








package com.imooc.entity;

import java.util.Date;
import java.util.List;

/**
 * Created by mouwe on 2017/5/17.
 * resource:mybatis-config.xml
 * InputStream
 * SqlSessionFactory
 * SqlSession
 * 执行我们的配置好的SQL语句
 */
public class Users {

	private Integer id;                 // 用户编号
	// private String username;            // 登录账号
	private String name;                // 登录账号
	private String userpass;            // 登录密码
	private String nickname;            // 用户昵称
	private Integer age;                // 用户年龄
	private String gender;              // 用户性别
	private String email;               // 用户邮箱
	private String phone;               // 联系方式
	private Date createTime;            // 创建时间
	private Date updateTime;            // 账号最后修改时间
	private Date lastLogin;             // 用户最后登录时间
	private Integer userStatus;         // 用户账号状态 0 正常 1 锁定 2 删除
	private String remark;              // 用户备注信息
	private List<Address> addresses;    // 用户地址信息【地址列表,有一个是默认地址】

	public Users() {
	}

	public Users(Integer id) {
		this.id = id;
	}

	public Users(String name, String userpass, String nickname, Integer age, String gender, String email, String phone) {
		this.name = name;
		this.userpass = userpass;
		this.nickname = nickname;
		this.age = age;
		this.gender = gender;
		this.email = email;
		this.phone = phone;

	}

	public Users(Integer id, String nickname, Integer age, String gender, String email, String phone, Date updateTime, String remark) {
		this.id = id;
		this.nickname = nickname;
		this.age = age;
		this.gender = gender;
		this.email = email;
		this.phone = phone;
		this.updateTime = updateTime;
		this.remark = remark;
	}

	public Users(String name, String userpass, String nickname, Integer age, String gender, String email, String phone, Date createTime, Date updateTime, Date lastLogin, Integer userStatus) {
		this.name = name;
		this.userpass = userpass;
		this.nickname = nickname;
		this.age = age;
		this.gender = gender;
		this.email = email;
		this.phone = phone;
		this.createTime = createTime;
		this.updateTime = updateTime;
		this.lastLogin = lastLogin;
		this.userStatus = userStatus;
	}

	public Users(Integer id, String nickname, Integer age, String gender, String email, String phone, String remark) {
		this.id = id;
		this.nickname = nickname;
		this.age = age;
		this.gender = gender;
		this.email = email;
		this.phone = phone;
		this.remark = remark;
	}

	public Integer getId() {
		return id;
	}

	public void setId(Integer id) {
		this.id = id;
	}

    /*public String getUsername() {
		return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }*/

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getUserpass() {
		return userpass;
	}

	public void setUserpass(String userpass) {
		this.userpass = userpass;
	}

	public String getNickname() {
		return nickname;
	}

	public void setNickname(String nickname) {
		this.nickname = nickname;
	}

	public Integer getAge() {
		return age;
	}

	public void setAge(Integer age) {
		this.age = age;
	}

	public String getGender() {
		return gender;
	}

	public void setGender(String gender) {
		this.gender = gender;
	}

	public String getPhone() {
		return phone;
	}

	public void setPhone(String phone) {
		this.phone = phone;
	}

	public String getEmail() {
		return email;
	}

	public void setEmail(String email) {
		this.email = email;
	}

	public Date getCreateTime() {
		return createTime;
	}

	public void setCreateTime(Date createTime) {
		this.createTime = createTime;
	}

	public Date getUpdateTime() {
		return updateTime;
	}

	public void setUpdateTime(Date updateTime) {
		this.updateTime = updateTime;
	}

	public Date getLastLogin() {
		return lastLogin;
	}

	public void setLastLogin(Date lastLogin) {
		this.lastLogin = lastLogin;
	}

	public Integer getUserStatus() {
		return userStatus;
	}

	public void setUserStatus(Integer userStatus) {
		this.userStatus = userStatus;
	}

	public String getRemark() {
		return remark;
	}

	public void setRemark(String remark) {
		this.remark = remark;
	}

	public List<Address> getAddresses() {
		return addresses;
	}

	public void setAddresses(List<Address> addresses) {
		this.addresses = addresses;
	}


	@Override
	public String toString() {
		return "Users{" +
					   "id=" + id +
					   ", name='" + name + '\'' +
					   ", userpass='" + userpass + '\'' +
					   ", nickname='" + nickname + '\'' +
					   ", age=" + age +
					   ", gender='" + gender + '\'' +
					   ", phone='" + phone + '\'' +
					   ", email='" + email + '\'' +
					   ", createTime=" + createTime +
					   ", updateTime=" + updateTime +
					   ", lastLogin=" + lastLogin +
					   ", userStatus=" + userStatus +
					   ", remark='" + remark + '\'' +
					   ", addresses=" + addresses +
					   '}';
	}
}
/*

Users{id=1, name='damu', userpass='damu', nickname='大慕', age=21,
 gender='男', phone='189@163.com', email='18989898989',
 createTime=Tue May 16 00:00:00 CST 2017, updateTime=Thu Jun 01 20:05:39 CST 2017, lastLogin=null,
 userStatus=1, remark='慕课大牧',
 addresses=[Address{id=1, user=null, isDefault=true, province='河南', city='郑州', country='金水区', street='二环路',
 remark='瑞隆城7号楼601'},
 Address{id=2, user=null, isDefault=false, province='陕西', city='西安', country='北城区', street='开元路', remark='文景小区1号楼202'},
  Address{id=3, user=null, isDefault=false, province='云南', city='昆明', country='盘龙区', street='小康大道', remark='银河星辰3号楼402'}]}
 */
 
 <mapper namespace="com.imooc.entity.Users">
    <select id="findAll" resultType="com.imooc.entity.Users">
    	select * from users
    </select>
</mapper>

<?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>
<!-- properties配置,用于加载外部properties配置文件 -->
	<properties resource="db.properties"></properties>
    <!--
    environments 主要用于进行数据源的配置
    可以配置多个数据源~ 通过default属性来指定当前项目运行过程中使用的是哪个数据源
    -->
    <environments default="development">
        <!--
        environment 用于配置一个具体的独立的数据源
        id属性用于给当前数据源定义一个名称,方便我们的项目指定
        -->
        <environment id="development">
            <!--
            transactionManager用于配置事务管理,默认情况下使用的是JDBC事务管理
            -->
            <transactionManager type="JDBC"/>
            <!--使用数据库连接池,
             dataSource具体数据源的链接信息;type属性用于指定是否使用连接池-->
            <dataSource type="POOLED">
                <property name="driver" value="${dirver}"/>
                <property name="url" value="${url}"/>
                <property name="username" value="${username}"/>
                <property name="password" value="${password}"/>
            </dataSource>
        </environment>
    </environments>
    <!-- 映射配置文件的路径-->
    <!-- mappers主要用于配置我们外部的映射配置文件
        在主配置文件中需要引入加载映射配置文件
     -->
    <mappers>
        <!-- mapper主要配置引入某一个具体的映射文件,resource进行路径方式的引入 -->
        <!--<mapper resource="mapper/usersMapper.xml"/>-->
    	<mapper resource="mapper/usersMapper.xml"/>
    </mappers>
</configuration>



package com.imooc.listener;

import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.annotation.WebListener;

import com.imooc.util.SqlSessionFactoryUtils;
//之后需要添加监听器配置,才能监听到容器的启动和销毁
@WebListener
//这样监听器就被注册到容器中了
public class InitSqlSessionListener implements ServletContextListener{
	//必须让当前的监听器实现servletContextListener
	//才能监听到容器的启动和销毁
	public void contextInitialized(ServletContextEvent sce) {
		System.out.println("容器加载中...");
		//初始化我们的SqlSessionFactory对象
		SqlSessionFactoryUtils.initSqlSessionFactry();
		
	}
	
	private void contextDestoryed(ServletContextEvent sce) {
		System.out.println("容器销毁中...");
		// 关闭SqlSession对象
		SqlSessionFactoryUtils.close();

	}
	//之后需要添加监听器配置,才能监听到容器的启动和销毁
	
}


package com.imooc.servlet;




import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.imooc.dao.UsersDao;
import com.imooc.entity.Users;

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

/**
 * Created by mouwe on 2017/5/23.
 */
//为了方便和前台进行交互,添加servlet层,
//用于调用DAO中的一些数据
@WebServlet("/index")
public class UsersFindServlet extends HttpServlet {
	
   //直接调用DAO中的操作
	private UsersDao usersDao=new UsersDao();
	

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        this.doPost(req, resp);
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
       List<Users>list=usersDao.findAll();
       System.out.println(list);
       req.setAttribute("usersList", list);
        req.getRequestDispatcher("index.jsp").forward(req, resp);
    }
}



package com.imooc.util;

import java.io.IOException;
import java.io.InputStream;

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

public class SqlSessionFactoryUtils {

    private static String RESOURCE = "mybatis.xml";

    private static SqlSessionFactory sqlSessionFactory;
    
      //将获取到的sqlSession对象存放在ThreadLocal里进行管理
    private static ThreadLocal<SqlSession> threadLocal = new ThreadLocal<SqlSession>();

    /**
     * 创建一个初始化SqlSessionFactory的方法
     */
    public static void initSqlSessionFactry() {
        try {
            InputStream is = Resources.getResourceAsStream(RESOURCE);

            sqlSessionFactory = new SqlSessionFactoryBuilder().build(is);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    /**
     * 获取工厂对象的方法
     * @return
     */
    public static SqlSessionFactory getSqlSessionFactory() {
        return sqlSessionFactory;
    }

    /**
     * 关闭SqlSession的方法
     */
    public static void close(){
        SqlSession session = threadLocal.get();
        if(session != null) {
            session.close();
            threadLocal.set(null);
        }
    }
}

http://img1.sycdn.imooc.com//climg/5d9b12e00978a35103720856.jpg


正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
提问者 慕用1236393 2019-10-07 18:39:26

            <dataSource type="POOLED">

                <property name="driver" value="com.mysql.cj.jdbc.Driver"/>

                <property name="url" value="jdbc:mysql://localhost:3306/mydb?useSSL=false&amp;serverTimezone=UTC"/>

                <property name="username" value="root"/>

                <property name="password" value="root"/>

            </dataSource>

问题算是解决了吧,数据可以显示,就是把properties标签去掉,换成上面的,本来以为是driver单词写错了,可是写对了还是不可以,就得把properties标签去掉,不知道怎么回事


  • 你好!问题虽然解决了,但是没有用到db.properties,可以db.properties的driver改成jdbc.driver,其他属性前也加上jdbc.试试。另外,同学可以看看有没有控制台报错,有的话将控制台报错贴完整,读报错可以发现很多问题的。祝学习愉快!
    2019-10-08 10:05:54
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
SSM主流框架入门与综合项目实战2018版
  • 参与学习           人
  • 提交作业       205    份
  • 解答问题       4317    个

Java中非常实用的SSM整合开发内容,从Spring开始,到MyBaits的进阶内容,再到SpringMVC的应用,最后是SSM整合开发案例,逐步深入,助你成长为一名Java工程师!

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师