如果对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&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连接代码不同的是&改为&):
ylxjava?useUnicode=true&characterEncoding=utf8
收获
1.学习了如何通过mybatis实现对数据库的增删改查。
2.巩固了mybatis各个配置文件的格式。