一、MyBatis简介
- MyBatis前身是iBatis,本是Apache的一个开源的项目
- 官方网站
- http://mybatis.org
- ORM框架
- 实体类和SQL语句之间建立映射关系
- 特点
- 基于SQL语法,简单易学
- 能了解底层封装过程
- SQL语句封装在配置文件中,便于统一管理和维护,降低程序的耦合度
- 方便程序代码调试
二、用户表查询记录、用户表查询、根据用户名对用户表查询
1、搭建MyBatis开发环境
使用MyBatis的开发步骤
(1)下载mybatis-3.2.2.jar包并导入工程
(2)编写MyBatis核心配置文件(configuration.xml)
(3)创建实体类 - POJO
(4)DAO层 - SQL映射文件(mapper.xml)
(5)创建测试类
- 读取核心配置文件mybatis-config.xml
- 创建SqlSessionFactory对象,读取配置文件
- 创建SqlSession对象
- 调用mapper文件进行数据操作
2、查询用户表记录
导入MyBatis的jar包
创建MyBatis配置文件mybatisConfig.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> <!--加载db.properties--> <properties resource="db.properties"></properties> <!--mybatis的环境--> <environments default="mybatis"> <environment id="mybatis"> <!--事务管理--> <transactionManager type="JDBC"></transactionManager> <!--数据源--> <dataSource type="POOLED"> <property name="driver" value="${driver}"/> <property name="username" value="${username}"/> <property name="password" value="${password}"/> <property name="url" value="${url}"/> </dataSource> </environment> </environments> <!--加载mapper--> <mappers> <mapper resource="net/togogo/dao/UserMapper.xml"></mapper> </mappers> </configuration>
db.properties文件
driver = com.mysql.jdbc.Driver username = root password = 123456 url = jdbc:mysql://127.0.0.1:3306/smbms?serverTimezone=GMT%2B8&characterEncoding=utf8
编写实体类User.java
编写SQL映射文件UserMapper.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"> <!--namespace 命名空间--> <mapper namespace="net.togogo.dao.UserMapper"> <!-- select 查询 id 唯一标识符 resultType 返回值的类型 --> <select id="selectUserCount" resultType="java.lang.Integer"> select count(1) from smbms_user </select> </mapper>
编写测试类Test,运行输出结果
package net.togogo; import net.togogo.bean.User; import net.togogo.dao.UserMapper; import net.togogo.util.MybatisUtil; import org.apache.ibatis.io.Resources; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder; import org.junit.Before; import java.io.IOException; import java.io.InputStream; import java.util.HashMap; import java.util.List; import java.util.Map; public class Test { @Before public void doInit(){ MybatisUtil.init(); } @org.junit.Test public void test1(){ SqlSession sqlSession = MybatisUtil.openSqlSessionDS(); //通过getMapper方法进行查询 UserMapper mapper = sqlSession.getMapper(UserMapper.class); int count = mapper.selectUserCount(); System.out.println(count); }}
运行结果:
3、实现用户表的查询操作
编写UserMapper.xml文件
编写MybatisUtil.java文件
package net.togogo.util; import org.apache.ibatis.io.Resources; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder; import java.io.IOException; import java.io.InputStream; public class MybatisUtil { private static SqlSessionFactory sqlSessionFactory ; private static SqlSession sqlSession; public static void init(){ //读取mybatis的核心配置文件 InputStream resourceAsStream = null; try { resourceAsStream = Resources.getResourceAsStream("mybatisConfig.xml"); //得到SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream); } catch (IOException e) { e.printStackTrace(); } } public static SqlSession openSqlSessionDS(){ sqlSession = sqlSessionFactory.openSession(); return sqlSession; } public static void closeDS(){ if(sqlSession != null) { sqlSession.close(); } } }
Test.java
运行结果:
4、根据用户名对用户表进行模糊查询
UserMapperxml
UserMaper.java
Test.java
运行结果:
三、MyBatis框架优缺点
优点:
- 与JDBC相比,减少了50%以上的代码量
- 最简单的持久化框架,小巧并简单易学
- SQL代码从程序代码中彻底分离,可重用
- 提供XML标签,支持编写动态SQL
- 提供映射标签,支持对象与数据库的ORM字段映射
缺点:
- SQL语句编写工作量大,对开发人员有一定的要求
- 数据库移植性差