最近开始学习mybatis,感觉非常好用。
首先创建Mybatis_test项目,在src下创建lib文件夹,将mybatis的jar包和mysql连接的jar包添加到项目路径
所用到的jar包:http://download.csdn.net/detail/fengsigaoju/9850015
随后使用mysql在名为mybatis的database下创建student表,具体内容如下:
create table student(
-> id int auto_increment,
-> name varchar(100),
-> age int,
-> primary key(id));
package com.po;
public class Student {
private int id;
private String name;
private int age;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
在src下创建com.mapping包,用来存放映射的sql语句,创建接口
StudentMapper.java
package com.mapping;
import java.util.List;
import com.po.Student;
//这个接口很重要,当外部代码调用接口方法时,就会执行与其相绑定的sql语句,类名需要与与映射xml文件中名字空间相同,方法名需要与映射xml文件中的id相同
//充分体现了sql代码与业务逻辑解耦合的特性,我们可以在代码设计阶段就将这个接口完成,然后具体填充其中的内容
public interface StudentMapper {
Student SelectStudent(String name);//根据姓名查询某一个学生是否存在
ListSelectStudentList();//查询表中所有数据
void InsertStudent(String name,int age);//根据姓名和年龄,插入新信息
void DeleteStudent(int id);//根据传入id删除信息
void UpdateStudent(String name,int age);//根据名字更改年龄
}
在com.mapping包下创建StudentMapper.xml,用来与接口方法相关联,映射到sql语句上
StudentMapper.xml
insert into student(name,age) values(#{0},#{1})
delete from student where id=#{0}
update student set age=#{1} where name=#{0}
conf.xml
import java.io.InputStream;
import java.util.List;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import com.mapping.StudentMapper;
import com.po.Student;
public class test {
public static void main(String[] args) {
//mybatis的配置文件
String resource = "conf.xml";
//使用类加载器加载mybatis的配置文件(它也加载关联的映射文件)
InputStream is = test.class.getClassLoader().getResourceAsStream(resource);
//构建sqlSession的工厂
SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(is);
//使用MyBatis提供的Resources类加载mybatis的配置文件(它也加载关联的映射文件)
//Reader reader = Resources.getResourceAsReader(resource);
//构建sqlSession的工厂
//SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader);
//创建能执行映射文件中sql的sqlSession
SqlSession session = sessionFactory.openSession();
StudentMapper mapper=session.getMapper(StudentMapper.class);//获取对应的接口
//接下来就是调用接口的方法来调用映射的sql的语句
mapper.InsertStudent("宝贝",20);//插入一条信息
mapper.InsertStudent("小宝贝",21);//插入一条信息
mapper.InsertStudent("么么哒小宝贝",22);//插入一条信息
Listlist=mapper.SelectStudentList();
System.out.println("---------------添加信息后-------------");
for (Student s:list)
System.out.println(s.getId()+" "+s.getName()+" "+s.getAge());
Student student=mapper.SelectStudent("宝贝");
System.out.println("---------------查找宝贝信息------------");
System.out.println(student.getId()+" "+student.getName()+" "+student.getAge());
mapper.DeleteStudent(1);//将编号为1的删除
System.out.println("--------------删除信息后---------------");
list=mapper.SelectStudentList();
for (Student s:list)
System.out.println(s.getId()+" "+s.getName()+" "+s.getAge());
mapper.UpdateStudent("宝贝",21);//根据名字修改年龄
System.out.println("--------------更新信息后---------------");
list=mapper.SelectStudentList();
for (Student s:list)
System.out.println(s.getId()+" "+s.getName()+" "+s.getAge());
System.out.println("----------这时候数据库是没有更新的,需要提交事务------");
session.commit();
System.out.println("----------数据库信息已更新,快看看吧---------------");
session.close();
}
}
---------------添加信息后-------------
1 宝贝 20
2 小宝贝 21
3 么么哒小宝贝 22
---------------查找宝贝信息------------
1 宝贝 20
--------------删除信息后---------------
2 小宝贝 21
3 么么哒小宝贝 22
--------------更新信息后---------------
2 小宝贝 22
3 么么哒小宝贝 22
----------这时候数据库是没有更新的,需要提交事务------
----------数据库信息已更新,快看看吧---------------