7.JAVA测试代码
package com.shsxt.test;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;
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.shsxt.pojo.Dept;
//测试类
public class TestDept {
public static void main(String[] args) throws IOException {
//1.加载mybatis全局核心配置文件
InputStream is = Resources.getResourceAsStream("mybatis.xml");
//2.构建SqlSessionFactory对象
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(is);
//3.通过工厂获取会话SqlSession
SqlSession session = factory.openSession();
//4.通过session调用方法执行查询
//selectList() 查到的数据返回一个list集合,没查到返回空的list
//selectList 的第一个参数为statement: 命名空间+id
List<Dept> list = session.selectList("com.shsxt.mappers.DeptMapper.queryAll");
System.out.println(list);
//5.关闭会话资源
session.close();
}
}
6. Mybatis配置文件详解
a. Mybatis核心配置文件
configuration
这是核心配置文件的根元素,所有的其他元素都要定义在这个标签下使用
environments
用于管理所有的环境,并可以指定默认使用哪一个环境,通过default属性来定义
environment
用于配置环境,id属性用于唯一标识当前环境
transactionManager
用于配置事务管理器
(1). type属性
用于指定mybatis采用何种事务管理机制
(ii)JDBC: 表示采用与原生JDBC一致的方式管理事务
(iii)MANAGED: 表示将事务管理交给其他容器进行,例如Spring
dataSource
用于配置数据源,设置mybatis是否采用连接池技术,并配置连接数据库的参数
(i)type属性
用于设置是否采用连接池技术
(2)POOLED: 表示采用连接池技术
(3)UNPOOLED: 表示每次都会开启或者关闭连接,不使用连接池技术
(4)JNDI: 使用其他容器(例如Spring)提供数据源
property
用于配置数据库连接参数(driver,url,username,password)
<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"/>
b.SQL映射文件
mapper
根元素
(1)namespace属性
用于指定命名空间,mybatis通过namespace+id的方式来定位sql语句,所有必须执行namespace,通过namespce被
配置为权限定路径,xml文件名不加后缀
select
用与定义查询语句
(2)id属性
用于唯一表示sql语句,类似方式名,在当前命名空间下不能冲突
(2)resultType属性
用于定义查询返回结果的类型,要写类型的权限定路径,如果返回的是集合类型,定义集合的泛型类型
7. Mybatis三个查询方法
selectList(“命名空间.id”) 用户查询多条数据情况,返回一个List集合, 没有查到数据返回空集合,不是null
selectOne(“命名空间.id”) 用于查询单条数据,返回一个数据, 如果没有查到返回null
selectMap(“命名空间.id”,key的字段名) 用于查询多条记录情况, 返回Map集合, 需要指定那个属性作为key, sql
查询结果作为value,指定的字段值作为key, 如果查不到, 返回一个空map集合,不是null
package com.shsxt.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.shsxt.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.shsxt.mappers.UserMapper.queryAll");
// System.out.println(list);
//2)selectOne("namespace.id")
// User user = session.selectOne("com.shsxt.mappers.UserMapper.queryById");
// System.out.println(user);
//3)selectMap("namespace.id","执行作为key的属性")
Map<Integer,User> map = session.selectMap("com.shsxt.mappers.UserMapper.queryAll", "id");
System.out.println(map);
//5.关闭session
session.close(); } }