从0到1学JAVA之第八天–Mybatis实现增删改查

By | 11月 22, 2017

如果对MyBatis不了解,可以查看一零的博文,从0到1学JAVA之第六天–Mybatis入门学习

想了解利用JAVA注解方式实现MyBatis操作数据,请查看从0到1学JAVA之第七天–Mybatis使用接口文件利用JAVA注解方式代替xml配置文件

今日完成的任务

利用mybatis实现了对数据库的增删改查。

1..JAVA文件目录结构

2.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.learnmybatis.po.Job"/>
	</typeAliases>
	<environments default="development">
		<environment id="development">
			<!-- 采用jdbc事务管理 -->
			<transactionManager type="JDBC"/>
			<!-- 配置数据库连接 -->
			<dataSource type="POOLED">
				<property name="driver" value="com.mysql.jdbc.Driver"/>
				<property name="url" value="jdbc:mysql://localhost:3306/ylxjava?useUnicode=true&amp;characterEncoding=utf8"/>
				<property name="username" value="root"/>
				<property name="password" value=""/>
			</dataSource>
		</environment>
	</environments>
	<!-- 定义映射器 -->
	<mappers>
		<mapper resource="pers/learnmybatis/mapper/jobInter.xml"/>
	</mappers>
</configuration>
	

3.JobInter.java

package pers.learnmybatis.mapper;
import java.util.List;
import org.apache.ibatis.annotations.Select;
import pers.learnmybatis.po.Job;

public interface JobInter {
	 public List<Job> getJobList();
	 public void insertJob(Job job);
	 public void updateJob(Job job);
	 public void deleteJob(String jname);
     public Job getJob(String jname);
}

4.JobInter.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">

<mapper namespace="pers.learnmybatis.mapper.JobInter">
	<select id="getJob" resultType="pers.learnmybatis.po.Job">
		select * from yl_job where jname = #{jname}
	</select>
	<insert id="insertJob" parameterType="Job">
	    insert into yl_job (jname,number,create_at,update_at)
	    values(#{jname},#{number},#{create_at},#{update_at})
	</insert>
	<update id="updateJob" parameterType="Job">
		update yl_job set number=#{number},update_at=#{update_at} 
		where jid = #{jid}
	</update>
	<delete id="deleteJob" parameterType="long">
		delete from yl_job where jname = #{jname}
	</delete>
	<select id="getJobList" resultType="pers.learnmybatis.po.Job">
	 	select * from yl_job
	</select>
</mapper>

5.Job.java

package pers.learnmybatis.po;

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.main.java

package pers.learnmybatis.main;
import java.io.Reader;
import java.text.MessageFormat;
import java.util.List;
import java.util.Date;
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.learnmybatis.mapper.*;
import pers.learnmybatis.po.Job;

public class main {
	public static SqlSessionFactory sqlSessionFactory;
	public static Reader reader;
	
	static{
		try{
			reader = Resources.getResourceAsReader("config/Config.xml");    /*引入配置文件*/
		    sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
		}catch(Exception e){
			e.printStackTrace();
		}
	}
	
	public static SqlSessionFactory getSession(){
		return sqlSessionFactory;
	}
	
	public static void main(String[] args){
		SqlSession session = sqlSessionFactory.openSession();
		try{
			GetJobList();
			InsertJobTest();
			UpdateJobTest();
			DeleteJobTest();
			GetJobTest();
		}finally{
			session.close();
		}
	}
	//获取job表信息
	public static void GetJobList(){
		try{
			SqlSession session = sqlSessionFactory.openSession();
			JobInter jobinter = session.getMapper(JobInter.class);
			//输出Job信息
			System.out.println("查询开始……");
			printJobs(jobinter.getJobList());
			System.out.println("查询结束……");
		}catch(Exception e){
			e.printStackTrace();
		}
	}
	//插入数据
	public static void InsertJobTest(){
		long time = new Date().getTime();
		try{
			SqlSession session = sqlSessionFactory.openSession();
			JobInter jobinter = session.getMapper(JobInter.class);
			System.out.println("插入数据开始……");
			//执行插入
			Job job = new Job();
			job.setJname("运维工程师");
			job.setNumber(5);
			job.setCreate_at(time);
			job.setUpdate_at(time);
			jobinter.insertJob(job);
			//提交事务
			session.commit();
			System.out.println("插入完成!");
			GetJobTest();
			
		}catch(Exception e){
			e.printStackTrace();
		}
		
	}
	//更新数据
	public static void UpdateJobTest(){
		long time = new Date().getTime();
		try{
			SqlSession session = sqlSessionFactory.openSession();
			JobInter jobinter = session.getMapper(JobInter.class);
			System.out.println("开始更新数据……");
			//执行更新
			Job job = jobinter.getJob("运维开发工程师");
			job.setNumber(13);
			job.setUpdate_at(time);
			jobinter.updateJob(job);
			//提交事务
			session.commit();
			System.out.println("更新完成……");
			printJobs(jobinter.getJobList());
		}catch(Exception e){
			e.printStackTrace();
		}
	}
    //删除数据
	public static void DeleteJobTest(){
		try{
			SqlSession session = sqlSessionFactory.openSession();
			JobInter jobinter = session.getMapper(JobInter.class);
			System.out.println("正在删除……");
			//执行删除
			jobinter.deleteJob("JAVA开发工程师");
			session.commit();
			System.out.println("删除完成……");
			printJobs(jobinter.getJobList());
			
		}catch(Exception e){
			e.printStackTrace();
		}
	}
	//获取指定职位的相关信息
	public static void GetJobTest(){
		SqlSession session = sqlSessionFactory.openSession();
		JobInter jobinter = session.getMapper(JobInter.class);
		try{
			System.out.println("查询开始……");
			printJob(jobinter.getJob("运维开发工程师"));
			System.out.println("查询结束……");
		}catch(Exception e){
			e.printStackTrace();
		}
	}
	//输出信息到控制台
	public static void printJobs(final List<Job> jobs){
		int count = 0;
		for(Job job : jobs){
			System.out.println(MessageFormat.format("--------------Job[{0}]------------------",++count));
				System.out.println("Job编号:"+job.getJid());
				System.out.println("Job名称:"+job.getJname());
				System.out.println("Job数目:"+job.getNumber());
				System.out.println("发布时间:"+job.getCreate_at());
				System.out.println("更新时间:"+job.getUpdate_at());
			
		}
	}
	public static void printJob(Job job){
		    System.out.println("----------------------------------");
			System.out.println("Job编号:"+job.getJid());
			System.out.println("Job名称:"+job.getJname());
			System.out.println("Job数目:"+job.getNumber());
			System.out.println("发布时间:"+job.getCreate_at());
			System.out.println("更新时间:"+job.getUpdate_at());
	}
}

明日计划的任务

1.学习junit

遇到的问题

1.插入数据库的中文字符出现???

解决办法,利用JDBC连接数据库时在最后加入以下代码(注意与传统的JDBC连接代码不同的是&改为&amp;):

ylxjava?useUnicode=true&amp;characterEncoding=utf8

 

收获

1.学习了如何通过mybatis实现对数据库的增删改查。

2.巩固了mybatis各个配置文件的格式。

发表评论

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