Mybatis_第二天笔记

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
用于配置事务管理器
(i). type属性
用于指定mybatis采用何种事务管理机制
(ii)JDBC: 表示采用与原生JDBC一致的方式管理事务
(iii)MANAGED: 表示将事务管理交给其他容器进行,例如Spring
dataSource
用于配置数据源,设置mybatis是否采用连接池技术,并配置连接数据库的参数
(i)type属性
用于设置是否采用连接池技术
(ii)POOLED: 表示采用连接池技术
(iii)UNPOOLED: 表示每次都会开启或者关闭连接,不使用连接池技术
(iv)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
根元素
(i)namespace属性
用于指定命名空间,mybatis通过namespace+id的方式来定位sql语句,所有必须执行namespace,通过namespce被
配置为权限定路径,xml文件名不加后缀

<mapper namespace="com.shsxt.mappers.UserMapper">

select
用与定义查询语句
(i)id属性
用于唯一表示sql语句,类似方式名,在当前命名空间下不能冲突
(ii)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(); } }
发布了22 篇原创文章 · 获赞 6 · 访问量 440

猜你喜欢

转载自blog.csdn.net/ffgyfgj/article/details/105643045