MyBatis 原名为 IBatis,是一款开源轻量级的基于 Java 的数据库框架。因其使用灵活,性能优越,被很多企业用于开发。本文按照 MyBatis 的实践为主,理论可以慢慢理解,但是实践一学就会。所以不对 MyBatis 原理和机制作讨论。
MyBatis 安装准备
MyBatis 由于是基于 Java 的框架,因此需要 Java 的开发环境。个人比较喜欢 eclipse ,因为免费且清爽。
基本上需要的软件为:
eclipse
运行环境:
JDK
MySQL
同时需要准备的 jar 包为:
mybatis-3.3.0.jar
mysql-connector-java-5.1.25-bin.jar
下载地址:https://github.com/mybatis/mybatis-3/releases
搭建流程
1.引入 MyBatis 和数据库驱动的JAR;
2.创建并引入 SqlConfigMap.xml;
3.获取 SqlSession.
详细流程
首先创建一个 Java 项目,WEB类型也可。
1.引入 MyBatis 和数据库驱动的JAR
引入 JAR 包引入的是两个文件,分别是 mybatis-3.3.0.jar 驱动包和 mysql-connector-java-5.1.25-bin.jar MySQL数据库连接包。将两个 jar 包复制进入 WebContent->WEB-INF->lib 文件夹中,然后选中两个文件,右键,点选“Build Path”引用这两个库文件,引用后文件左下角出现小标记,如图所示。
2.创建并引入 SqlConfigMap.xml
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>
- <environments default="development">
- <environment id="development">
- <transactionManager type="JDBC" />
- <dataSource type="POOLED">
- <property name="driver" value="com.mysql.jdbc.Driver" />
- <property name="url" value="jdbc:mysql://localhost/mybatis" />
- <property name="username" value="root" />
- <property name="password" value="root" />
- </dataSource>
- </environment>
- </environments>
- <mappers>
- <mapper resource="com/hundsun/dao/UserDao.xml" />
- </mappers>
- </configuration>
注解:
1.DTD头文件,格式规定不可更改
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
2.文件以 configuration 为根标签,environments/environments 部分为数据库信息配置部分,可以根据自己的需要修改。
数据库配置可以使用 .propertities 文件的方式设置
- <properties resource="dbConfig.properties"></properties>
如果两种方式并存,则会优先采取 xml 配置文件,即第一种。
3.mappers 部分,及内部的 mapper 标签,这部分是用来引入其他 xml 文件的,而被引入的 xml 文件中存放的是数据库查询的映射文件。
3.获取 SqlSession
获取 SqlSession 可以理解为进行数据库的查询操作。首先明确的是,在 Mybatis 中的查询语句是放在 xml 文件中的。
创建链接数据库的 java 文件
因为每次查询都需要链接数据库操作,所以把链接数据库的操作单独做成 tool 包或者 util 包中作为工具反复使用。
- package com.hundsun.util;
- import java.io.InputStream;
- import org.apache.ibatis.session.SqlSession;
- import org.apache.ibatis.session.SqlSessionFactory;
- import org.apache.ibatis.session.SqlSessionFactoryBuilder;
- public class MyBatisConnection {
- public static SqlSession getConnection(){
- SqlSessionFactoryBuilder sfb = new SqlSessionFactoryBuilder();
- InputStream config = MyBatisConnection.class.getClassLoader().getResourceAsStream("SqlMapConfig.xml");
- SqlSessionFactory ssf = sfb.build(config);
- SqlSession ss = ssf.openSession();
- return ss;
- }
- }
过程是,创建 SqlSessionFactoryBuilder 对象,并引入 InputStream 流读取上述第二步做好的全局配置文件。最后创建打开 SqlSession。
在需要链接数据库的其他文件中,只需要使用代码
- SqlSession session = MyBatisConnection.getConnection();
获取到 SqlSession 对象。
编写和配置查询 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="com.hundsun.dao.UserMapperDao">
- <insert id="Myinsert" parameterType="com.hundsun.entity.User">
- insert into t_user (username,sex,age,salary) values (#{username},#{sex},#{age},#{salary})
- </insert>
- <select id="selectAll" resultType="com.hundsun.entity.User">
- select * from t_user
- </select>
- </mapper>
文件解析
1.另外的DTD头,跟 SqlConfigMap.xml 文件头不同。
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
2.mapper 标签中的 namespace 属性内的值是一个接口文件,接口文件中要声明所有在这个标签下出现的查询,如案例中有两个查询,则需要在接口文件中声明两个方法。
3.mapper 内中的标签根据不同的查询被写成了 insert、select 等,其中的 id 属性是标识符,需要引用其语句是需要通过 id 来访问;parameterType 属性指向了要数据操作的对象类型;resultType 属性是指查询返回的对象类型。
要注意的是,查询即使是返回了很多条数据,resultType 依然要写单个记录的对象类型,而不能写 List 等集合类。
4.SQL查询语句中,出现 #{} 中的内容是对应对象中的属性,但是前提是要在自己创建的对象中编写好 get 和 set 方法。
查询业务
查询业务建议承接在 namespace 中声明的接口。
需要注意的是,除了查询语句,其他数据库的查询完成后,需要对 SqlSession 对象执行提交处理 ,即 commit(),处理完成后,需要关闭操作,即 close();
- public static void findAll(){
- SqlSession ss = MyBatisConnection.getConnection();
- User u = ss.selectOne("selectAll");
- System.out.println(u.getUsername()+" "+u.getAge());
- ss.close();
- }
- public static void UserInsert(User user){
- SqlSession ss = MyBatisConnection.getConnection();
- ss.insert("Myinsert",user);
- ss.commit();
- ss.close();
- }
工作原理
1.提供数据库连接的参数(SqlConfigMap.xml)
2.提供SQL语句(XML文件)
3.利用 MyBatis 提供的 API 执行 (SqlSession)
虽然从表面上看起来,Mybatis 查询需要顾及的文件比较多,但这种从 MVC 出发的设计方式,更加适合于协同编写,提高工作效率。
感谢你的赏识与认可
支付宝
微信支付
使用手机访问这篇文章
本文许可协议 © CC BY-NC-SA 4.0 转载请注明来源
- 上一篇: 杭州,你好!
- 下一篇: Spring框架基础简介及实战开发
暂无评论