Mybatis是简化和实现了 Java 数据持久化层(persistence layer)的开源框架,它抽象了大量的JDBC冗余代码,并提供了一个简单易用的API和数据库交互。要使用这个框架首先就要导入mybatis的架包,而mybatis底层是封装JDBC的方法,所以还需要导入Jdbc的架包,当导入了架包,就可以开始mybaits的配置了。
首先是一个mybatis的配置文件,类型为下
注意:名字必须为mybatis-config.xml,位置默认在src下
<?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="Student" type="pojo.Student" />
</typeAliases> -->
<typeAliases>
<!-- 这个元素表示你要使用的类的别名,有两种方法表示,一种就是上面alias=****,type= 前者表示别名,后者表示类在工程中的位置。第二种就是直接pack name =包名,直接为包内所有类起好别名,默认是去掉路径的类名 -->
<!-- <package name="pojo"/>-->
<package name="many2many"/>
</typeAliases>
<environments default="development">
<environment id="development">
<transaction Manager type="JDBC" /> 指定使用的底层实现转化工具,这里使用的是JDBC
<dataSource type="POOLED">
<property name="driver" value="oracle.jdbc.driver.OracleDriver" />
<property name="url" value="jdbc:oracle:thin:@127.0.0.1:1521:XE" />
<property name="username" value="test" />
<property name="password" value="test" />
</dataSource>
</environment>
</environments>
<mappers>
<!-- 这个表示映射的配置文件位置 -->
<mapper resource="com/briup/pojo/StudentMapper.xml" />
</mappers>
</configuration>
然后就是建立一个pojo类,我这里是建立一个Student类,添加属性和get,set方法。然后建立一个接口,接口是来映射pojo类,并通过配置映射接口的xml来表示两者的关系,mybatis会自动帮我们封装。
public interface StudentMapper {
/*
* 描述對象的映射关系
* 增加學生
*/
public void addStudent(Student s);
public List<Student> selectStudentAll();
public Student selectIDStudent(Integer i);
public void deleteStudent(Integer i);
public void updataStudent(Student s);
}
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="mapper.StudentMapper">
<!-- id值为接口中表示增加学生的方法名 -->
<insert id="addStudent" parameterType="Student">
<!-- 写一个类似sql的语句,实际是表达映射关系-->
INSERT INTO JD1709_STUDENT
VALUES(#{id},#{name},#{birthday},#{phone})
</insert>
<resultMap type="Student" id="StudentResult">
<id property="id" column="id" />
<result property="name" column="name" />
<result property="birthday" column="birthday" />
</resultMap>
<select id="selectStudentAll" resultMap="StudentResult">
SELECT * FROM JD1709_STUDENT
</select>
<select id="selectIDStudent" parameterType="Integer" resultType="Student">
SELECT ID,NAME,BIRTHDAY,PHONE FROM JD1709_STUDENT
WHERE ID=#{id}
</select>
<delete id="deleteStudent" parameterType="Integer">
DELETE FROM JD1709_STUDENT
WHERE ID=#{id}
</delete>
<update id="updataStudent" parameterType="Student">
UPDATE JD1709_STUDENT
SET NAME=#{name},BIRTHDAY=#{birthday}
WHERE ID=#{id}
</update>
</mapper>
注意,如果对象的属性与数据库中表的名字相同,mybatis会自动完成映射,如果不同,需要使用resultMap元素手动映射
完成配置文件和pojo类和映射接口的建立,就可以使用这些东西完成我们想要的插入和删除等任务,流程如下:
/1.读取配置文件的输入流
InputStream in = Resources.getResourceAsStream("mybatis-config.xml");
//2.拿到工厂,通过建造者模式拿到
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(in);
//3.拿到SqlSession
session = factory.openSession();
//4.通过接口拿到子类对象
mapper= session.getMapper(StudentMapper.class);
然后就可以使用mapper来直接完成我们的插入指令
Student s = new Student(1,"Tom",new Timestamp(System.currentTimeMillis()),new PhoneNum("153-83467865"));
mapper.addStudent(s);
这样就简单的完成了mybatis的使用,记得在使用的最后完成资源的释放,commot和close操作。