如果对MyBatis不了解,可以查看一零上一篇博文,从0到1学JAVA之第六天–Mybatis入门学习
今日完成的任务
1.使用合理描述参数和SQL语句返回值的接口代替原有的xml文件实现对数据库的操作。
优点?
更加简单,提高安全性,减少错误的出现。
2.JAVA文件目录结构
- 其中config/config.xml是主配置文件,利用JDBC实现数据库的连接。
- pers.mybatis.inter.dao/JobInter.java,配置操作job数据表的接口。
- pers.mybatis.inter.model/Job.java,配置get和set等具体的数据操作。
- pers.mybatis.inter.main/main.java,测试实现对数据库进行操作
3.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>
<typeAliases>
<typeAlias alias="job" type="pers.mybatis.inter.model.Job"/>
</typeAliases>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC" />
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/ylxjava"/>
<property name="username" value="root" />
<property name="password" value="" />
</dataSource>
</environment>
</environments>
</configuration>
4.pers.mybatis.inter.dao/JobInter.java
package pers.mybatis.inter.dao;
import org.apache.ibatis.annotations.Select;
import pers.mybatis.inter.model.*;
public interface JobInter {
@Select("select * from yl_job where jid = #{jid}")
public Job getJobByid(long jid);
}
5.pers.mybatis.inter.model/Job.java
package pers.mybatis.inter.model;
public class Job {
private long jid;
private String jname;
private int number;
private long create_at;
private long update_at;
public long getJid(){
return jid;
}
public void setJid(long jid){
this.jid = jid;
}
public String getJname(){
return jname;
}
public void setJname(String jname){
this.jname = jname;
}
public int getNumber(){
return number;
}
public void setNumber(int number){
this.number = number;
}
public long getCreate_at(){
return create_at;
}
public void setCreate_at(long create_at){
this.create_at = create_at;
}
public long getUpdate_at(){
return update_at;
}
public void setUpdate_at(long update_at){
this.update_at = update_at;
}
}
6.pers.mybatis.inter.main/main.java
package pers.mybatis.inter.main;
import java.io.*;
import java.util.Date;
import java.text.SimpleDateFormat;
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 pers.mybatis.inter.model.*;
import pers.mybatis.inter.dao.*;
public class main {
public static SqlSessionFactory sqlSessionFactory;
public static Reader reader;
static{
try{
reader = Resources.getResourceAsReader("config/config.xml");
sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
sqlSessionFactory.getConfiguration().addMapper(JobInter.class);
}catch(Exception e){
e.printStackTrace();
}
}
public static SqlSessionFactory getSession(){
return sqlSessionFactory;
}
public static String TimeToDate(long time){
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("YYYY-MM-DD hh:mm:ss");
Date date = new Date(time);
String res = simpleDateFormat.format(date);
return res;
}
public static void main(String[] args){
SqlSession session = sqlSessionFactory.openSession();
try{
JobInter jobInter = session.getMapper(JobInter.class);
Job job = jobInter.getJobByid(11);
System.out.println("ID: "+job.getJid());
System.out.println("职位名称:"+job.getJname());
System.out.println("数目: "+job.getNumber() );
System.out.println("发布日期:"+TimeToDate(job.getCreate_at()));
}catch(Exception e){
e.printStackTrace();
}finally{
session.close();
}
}
}
7.输出结果 #注意发布日期处采用了时间戳转为时间,具体实现方法参照具体代码中的TimeToDate方法
明日计划的任务
1.利用mybatis实现对数据库的增删改查
2.学习junit
遇到的问题
1.org.apache.ibatis.binding.BindingException: Invalid bound statement (not found):
原因是接口文件中对数据库操作的SQL语句出现问题,修改SQL语句,并注意引入相应的包,注意下图红色箭头指向的两处。
收获
1.学习了不利用xml文件如何通过mybatis实现对数据库的操作。