1、使用mybatis框架的步骤:
1.下载jar包
2.jar包资源拿到项目中,add as lib...
mybatis核心jar包
mybatis依赖jar包
数据库的驱动jar
3.定义mybatis核心配置文件--> 参考文档+官网
4.定义sql映射文件
定义要执行的sql语句
5.jar类中进行测试
加载核心配置文件
构建工厂
获取回话
执行sql
处理结果
关闭回话
三个常用的查询方法 :
selectOne() 执行指定sql,得到一个结果
selectList() 执行指定sql,得到一个list集合,如果没查到,返回List中没有数据,但是不是null
selectMap() 执行指定sql,得到一个Map集合,如果没查到,返回空map
public class Class001_Dept {
public static void main(String[] args) throws IOException {
//1.加载mybatis的核心配置文件
InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
//2.构建SqlSessionFactory
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(is);
//3.根据工厂构建回话
SqlSession session = factory.openSession();
//4.执行sql,得到结果
//selectList("命名空间.id")
//selectList("命名空间.id",sql语句的实参)
List<Dept> list = session.selectList("com.yjxxt.mappers.DeptMapper.queryAll");
//session.selectOne("命名空间.id");
//session.selectOne("命名空间.id",sql语句的实参);
Dept dept = session.selectOne("com.yjxxt.mappers.DeptMapper.queryDeptByNo",20);
//session.selectMap("命名空间.id","作为key的字段名")
//session.selectMap("命名空间.id",sql语句的实参,"作为key的字段名")
Map<String,Dept> map = session.selectMap("com.yjxxt.mappers.DeptMapper.queryAll","dname");
//5.处理结果
list.forEach(System.out::println);
System.out.println(dept);
System.out.println(map);
//5.关闭回话
session.close();
}
}
2.mybatis.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">
<!-- mybatis的全局配置文件 -->
<configuration>
<!--
用于指明使用哪一个开发环境
default : 用于指定使用的环境的id属性值
-->
<environments default="ev">
<!-- 用户配置开发环境 id: 环境的唯一标识 -->
<environment id="ev">
<!--
事务管理器
JBDC : 表示采用JDBC一样的事务管理方式
-->
<transactionManager type="JDBC"/>
<!--
用于配置数据库连接吃和数据库连接参数
POOLED : 表示mybatis采用连接池技术
-->
<dataSource type="POOLED">
<property name="driver"
value="oracle.jdbc.driver.OracleDriver"/>
<property name="url"
value="jdbc:oracle:thin:@localhost:1521:XE"/>
<property name="username" value="SCOTT"/>
<property name="password" value="TIGER"/>
</dataSource>
</environment>
</environments>
<!-- SQL映射文件配置 -->
<mappers>
<!-- 指明SQL映射文件路径 resource : 包路径 com/.../xxxMapper.xml-->
<mapper resource="com/xxxx/mappers/UserMapper.xml"/>
</mappers>
</configuration>
3、Mybatis SQL映射文件
在Mybatis中,推荐使用mappers作为包名,我们只需要写一个映射配置文件就可以,UserMapper.xml,用于 定义要执行的sql语句,同时可以设置参数|返回值结果类型
<?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.xxxx.mappers.UserMapper">
<select id="queryAll" resultType="com.xxxx.pojo.User">
select * from t_user
</select>
</mapper>
跟标签mapper
namespace: 命名空间
注意:不要忘记mybatis核心xml文件中的mapper配置
4.4. 测试
5. Mybatis配置文件详解
5.1. 核心配置文件
1.configuration
配置文件的根元素,所有其他的元素都要在这个标签下使用(dtd文件规定)
2.environments default="environment"
用于管理所有环境, 并可以指定默认使用那个环境,通过defualt属性来指定
3.environment
用来配置环境,id属性用于唯一标识当前环境
4.transactionManager type="JDBC"
用户配置事务管理器
查询标签: select 用于编写查询语句
id : 当前文件中保证唯一
resultType : 结果的类型
parameterType : 入参类型
注意:不要忘记mybatis核心xml文件中的mapper配置
4、三个查询方法
selectList("命名空间.id") 用户查询多条数据情况,返回一个List集合, 没有查到数据返回空集合,不是 null selectOne("命名空间.id") 用于查询单条数据,返回一个数据, 如果没有查到返回null selectMap("命名空间.id",key的字段名) 用于查询多条记录情况, 返回Map集合, 需要指定那个属性 作为key, sql查询结果作为value,指定的字段值作为key, 如果查不到, 返回一个空map集合,不是null
package com.xxxx.test;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;
import java.util.Map;
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 com.xxxx.pojo.User;
public class UserTest {
public static void main(String[] args) throws IOException {
//1.加载核心配置文件
InputStream is = Resources.getResourceAsStream("mybatis.xml");
//2.获取SqlSessionFactory对象
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(is);
//3.获取会话
SqlSession session = factory.openSession();
//4.操作
//1)selectList("namespace.id") 用于查询多条数据,返回一个list集合,如果没有查询到
任数据,返回空集合,不是null
List<User> list =
session.selectList("com.xxxx.mappers.UserMapper.queryAll");
System.out.println(list);
//2)selectOne("namespace.id")
User user = session.selectOne("com.xxxx.mappers.UserMapper.queryById");
System.out.println(user);
//3)selectMap("namespace.id","执行作为key的属性")
Map<Integer,User> map =
session.selectMap("com.xxxx.mappers.UserMapper.queryAll", "id");
System.out.println(map);
//5.关闭session
session.close();
}
}
5、通过properties标签实现软编码
5.1src下定义配置文件db.properties
driver=oracle.jdbc.driver.OracleDriver
url=jdbc:oracle:thin:@localhost:1521:XE
username=SCOTT
password=TIGER
5.2 properties标签
mybatis核心配置文件中添加properties标签,指定加载外部的properties文件,注意定义位置
<!-- 加载外部的properties文件 -->
<properties resource="db.properties" />
使用方式
<environments default="even">
<environment id="even">
<transactionManager type="JDBC"></transactionManager>
<dataSource type="POOLED">
<property name="driver" value="${driver}"/>
<property name="url" value="${url}"/>
<property name="username" value="${username}"/>
<property name="password" value="${password}"/>
</dataSource>
</environment>
</environments