从0到1学JAVA之第七天–Mybatis使用接口文件利用JAVA注解方式代替xml配置文件

By | 11月 22, 2017

如果对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实现对数据库的操作。

本文源码详看github仓库

发表评论

您的电子邮箱地址不会被公开。