1. MyBatis简介
一款优秀的ORM框架,支持自定义SQL,存储过程以及高级映射。避免了几乎所有的JDBC代码和手动设置参数以及获取结果集,它使用XML文件或注解进行配置和映射,将接口和java代码的POJO映射成数据库中的记录。
核心思想是剥离出大量的sql语句,并将这些sql语句配置到映射文件中去。实现程序和sql语句分离,在不修改程序代码的情况下变更sql语句的功能,提升了程序的扩展性。
2. MyBatis的功能架构
MyBatis的功能架构由三层组成,包括API接口层,数据处理层,基础支撑层。
(此图来源于千锋教育)
3. MyBatis的下载和使用
3.1由第三方组织提供,使用前需下载jar包
MyBatis jar包下载
解压下载完后的zip,将目录下的jar包和lib里面的jar复制到你web项目的lib中去。
3.2项目中的映射文件和配置文件
在src下新建一个mapper包,包里面建一个StudentMapper.xml映射文件内容如下
这里就是一个简单的查询,可以自己添加<update></update>,<insert></insert>,<delete></delete>
等命令
<?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="student">
<select id="findStudentBySno" parameterType="String"
resultType="com.mystu.pojo.Student">
select * from stu where sno = #{sno}
</select>
</mapper>
在src下新建mybatis-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>
<environments default="SqlServer">
<environment id="SqlServer">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="com.microsoft.sqlserver.jdbc.SQLServerDriver"/>
<property name="url" value="jdbc:sqlserver://localhost:1433;DatabaseName=test"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
</dataSource>
</environment>
</environments>
<mappers> //这里的resource为映射文件的位置
<mapper resource="mapper/StudentMapper.xml"/>
</mappers>
</configuration>
3.2项目中的其他文件
src下创建Student实体类和测试文件
实体类就不多说了,就是一些变量,get(), set(), toString()方法等;
其中测试文件里的主要部分如下:
String resource = "mybatis-config.xml";
try {
InputStream in = Resources.getResourceAsStream(resource);
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(in);
SqlSession sqlSession = factory.openSession();
Student student = sqlSession.selectOne("student.findStudentBySno", sno);
//sqlSession.conmit(); //执行update,delete,insert时需添上,提交事务
System.out.println(student);
sqlSession.close();
} catch (IOException e) {
e.printStackTrace();
}catch (Exception e) {
e.printStackTrace();
}
至此,一个简单的MyBatis medo就做成了,实现了通过学号查询学生,在控制台显示的功能,