MyBatis 是一个可以自定义SQL、存储过程和高级映射的持久层框架。MyBatis 摒除了大部分的JDBC代码、手工设置参数和结果集重获。MyBatis 只使用简单的XML 和注解来配置和映射基本数据类型、Map 接口和POJO 到数据库记录。相对Hibernate和Apache OJB等“一站式”ORM解决方案而言,Mybatis 是一种“半自动化”的ORM实现。
MyBatis的前身是ibatis,但是在配置sql的语法上有明显的区别,并且spring目前的版本封装mybatis,至于mybatis-spring.jar文件也是mybatis团队复杂开发的jar包,用于和spring整合。之前ibatis的源码托管方是apache,而mybatis是google。
mybatis的结构主要分三层1)API接口层:提供给外部使用的接口API,开发人员通过这些本地API来操纵数据库。接口层一接收到调用请求就会调用数据处理层来完成具体的数据处理。
null(2)数据处理层[1]:负责具体的SQL查找、SQL解析、SQL执行和执行结果映射处理等。
它主要的目的是根据调用的请求完成一次数据库操作。
(3)基础支撑层:负责最基础的功能支撑,包括连接管理、事务管理、配置加载和缓存处理,这些都是共用的东西
将他们抽取出来作为最基础的组件。为上层的数据处理层提供最基础的支撑。
首先明白Mybatis的构建,它和JDBC最大的差别就是能够实现半自动化,它的sql语句由很大的灵活性,能实现数据库的数据交互。对于刚入门的新手比较好学习。
1.首先先导入mybatis-3.3.1.jar和mysql-connector-java-5.1.18-bin.jar两个jar包。通过SqlSession语句来获取数据库信息,通过配置文件来构建SqlSessionFactory,之后再通过SqlSessionFactory打开一个数据库会话。
'public SqlSession getSqlSession() throws IOException'
{
//通过配置文件来获取数据库信息
Reader reader=Resources.getResourceAsReader("Mybatis/config/Configuration.xml");
//通过配置文件来构建一个SqlSessionFactory
SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(reader);
//通过SqlSessionFactory打开一个数据库会话
SqlSession sqlSession=sqlSessionFactory.openSession();
return sqlSession;
}
2.配置好xml文件,Configuration.xml文件是实现MyEclipse和mysql数据库的数据交互
里面填写你的数据库类型,还有连接的数据库名字,连接好你的数据库驱动,然后还有你的用户名和密码
3.MyEclipse建立与数据库表与之相对应的Bean
4.然后就是配置与数据库表相对应的xml文件,我们与MyEclipse工具之间,实现数据交互也是通过里面的sql语句。(查看mysql数据库的程序是Navicat for MySQL)
你要对哪个数据库里面的多少张表进行操作,就建立与之相对应的多少个xml文件.
接下来是关于配置xml文件的一些标签作用
<mapper namespace="mybatis.servce.IStudent">
<resultMap type="mybatis.bean.Student" id="Student">
<!-- 拥有主键的话就用ID标签 -->
<id column="ID" jdbcType="INTEGER" property="id"/>
<result column="NAME" jdbcType="VARCHAR" property="name"/>
</resultMap>
</mapper>
namespace:xml文件的唯一的名字
type:你数据库表对应的bean的位置
column:数据库列的名字,也就是上面的ID(可能会改变)
jdbcType:列的属性,数据库里是int,这里用Integer
property:对应你bean层的属性名字
接下来是xml里面对应的sql语句
<select id="queryStudentList" parameterType="mybatis.bean.Student" resultMap="Student">
select s.ID S_ID,s.NAME,t.ID,t.TEACHER,t.STUDENT_ID,g.ID,g.MATH,g.ENGLISH,g.CHCHINESE from Student s left join (Teacher t,Grade g)
on s.ID=t.STUDENT_ID and s.ID=g.STUDENT_ID where
<if test="name !=null and !"".equals(name.trim())"> s.NAME=#{name}</if>
</select>
先说明一下在配置xml中有几种标签与sql语句很相似
- select
- delete
- update
- insert
它们在这里是标签,你使用哪种sql语句,就使用哪一个标签,否则会出现错误
id:按我的话说就是方法名字,在这个XML文件中要唯一
parameterType:从外面传回来的数据类型(只能有一个数据类型)
resultMap:返回的数据类型
中间则是sql语句
搜狗截图17年07月17日2245_2.pngcollection标签:
一对多的意思就是,一条信息对于其他多条信息,比如一个学生被多个老师教过
association标签:
一对一:一条信息对一条信息,比如人和身份证
多对一:多条信息对一条信息,各科学习成绩和学生
!!!注意:千万要把这两个标签区分看来,你的bean层也需要把各个信息都分开来
如果你出现一些空指针的错误,不妨在那里找找原因
比较详细的视频资源
网友评论