操作数据库添加映射之后报空指针异常

// 配置 jfinal 插件
	public void configPlugin(Plugins me) {
		// 非第一次使用use加载的配置,需要通过每次使用use来指定配置文件名再来取值
		// 非第一次使用 use加载的配置,也可以先得到一个Prop对象,再通过该对象来获取值
		Prop p = PropKit.use("propKit.txt");
		DruidPlugin dp =  new DruidPlugin(p.get("mysql_url"), p.get("mysql_root"), p.get("mysql_pwd"));
		me.add(dp);    
		ActiveRecordPlugin arp = new ActiveRecordPlugin(dp);
		me.add(arp);
		arp.setShowSql(true);
		arp.addMapping("employees", "employee_id", EmployeesBean.class);
		
		
		// 配置缓存插件
		me.add(new EhCachePlugin());
		
	}
import com.jfinal.plugin.activerecord.Model;

public class EmployeesBean extends Model<EmployeesBean>{
	
	public static final EmployeesBean EMPLOYEESDAO = new EmployeesBean();
}
public void modelTest() {
    	System.out.println(EmployeesBean.EMPLOYEESDAO);  // 输出为 {}
    	EmployeesBean emBean = EmployeesBean.EMPLOYEESDAO.findById(1);
    	String last_name = emBean.getStr("last_name");
    	setAttr("employees", emBean);
    	renderJson(last_name);
    }

第三段代码第二行输出为 {},可是我已经添加了映射,第二段代码看相关视频也是这么写的,不清楚哪里出了问题。请哪位大佬救救我。。。。

image.png

评论区

JFinal

2019-11-28 11:34

估计你这不是 web 项目,程序没有执行 configPlugin 这个方法

如果是非 web 项目,要这么来用:
https://www.jfinal.com/doc/5-15

也就是要自己手动调用一个 start()

zsdg

2019-11-28 11:52

@JFinal 您好,我按照链接的方法调用了,但是还是报空指针错误。对于第一个代码块的第六行的dp,我输出dp.getDataSource()。得到以下信息:
{
CreateTime:"2019-11-28 11:39:33",
ActiveCount:0,
PoolingCount:0,
CreateCount:0,
DestroyCount:0,
CloseCount:0,
ConnectCount:0,
Connections:[
]
}。
但是我查看了自己的配置,URL,用户、密码都是正确的。具体的情况因为这里不能发图,所以我另外开了一个帖子:https://www.jfinal.com/feedback/6824。如果有时间的话能麻烦解答一下吗?谢谢。

JFinal

2019-11-28 11:55

@zsdg 在你上面代码的 getDataSource() 以后,再来一个 getConnection() , 看看能不能获取到 Connection 对象

zsdg

2019-11-28 12:01

@JFinal 可以获取对象

zsdg

2019-11-28 12:17

使用 dp.getDataSource().getConnection().getClientInfo() 获取的是 { }

JFinal

2019-11-28 14:15

@zsdg 下载首页右侧的 jfinal_demo_for_maven.zip , 在本地跑一跑,先练习一下基本用法,再将之用于你的项目

zsdg

2019-11-28 14:32

@JFinal 好的,谢谢

热门反馈

扫码入社