框架学习第一天总结"mybatis"001
一、框架是什么?二、mybatis简介三、环境初步搭建三.1、环境搭建详解
三、数据库连接池四、mybatis三种查询方式
一、框架是什么?
框架 ,软件的半成品,为解决问题制定的一套约束,在提供功能的基础上进行补充;框架中一些不能被封装的代码,需要使用框架者自己新建一个xml文件,在文件中添加变量内容; 注意: 2.1需要建立特定位置和特定名称的配置文件。 2.2需要使用xml解析技术和反射技术。
二、mybatis简介
mybatis开源免费框架,原名iBatis,2010在google code,2013年迁到GitHub; 2.作用:数据访问层框架,底层对JDBC的封装 ;优点:使用mybatis不需要编写实现类,只需要写执行的SQL命令;
三、环境初步搭建
导入jar包; 在src下新建全局配置文件(编写jdbc四个变量); 2.1名称地址没有要求 2.2在全部配置文件中引入DTD 2.3全局配置文件内容
<?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>
<!-- default 引用 environment 的 id,当前所使用的环境 -->
<environments default="default">
<!-- 声明可以使用的环境 -->
<environment id="default">
<!-- 使用原生 JDBC 事务 -->
<transactionManager type="JDBC"></transactionManager>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/database"/>
<property name="username" value="root"/>
<property name="password" value="123456"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="com/mapper/FlowerMapper.xml"/>
</mappers>
</configuration>
新建以mapper结尾的包,在包下新建实体类名+Mapper.xml; 3.1文件作用:编写需要执行的SQL命令; 3.2 把xml文件当作实现类执行; 3.3xml文件内容
<?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">
<!-- namesapce:理解成实现类的全路径(包名+类名) -->
<mapper namespace="a.b" >
<!-- id:方法名 parameterType:定义参数类型 resultType:返回值类型.
如果方法返回值是 list,在 resultType 中写 List 的泛型, 因为 mybatis 对 jdbc 封装,一行一行读取数据 -->
<select
id="selAll" resultType="com.pojo.Flower">
select * from flower
</select>
</mapper>
测试结果(只有在单独使用 mybatis 时使用.) ;
InputStream is = Resources.getResourceAsStream("myabtis.xml");
//使用工厂设计模式
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(is);
//生产 SqlSession
SqlSession session=factory.openSession();
List<Flower> list = session.selectList("a.b.selAll");
for (Flower flower : list)
{
System.out.println(flower.toString());
}
session.close();
三.1、环境搭建详解
全局配置文件中的内容 1.1 <transactionManager/>type 属性可取值; 1.1.1JDBC,事务管理使用 JDBC 原生事务管理方式; 1.1.2 MANAGED 把事务管理转交给其他容器.原生 JDBC 事务setAutoMapping(false); 1.2<dataSouce/>type 属性; 1.2.1POOLED 使用数据库连接池; 1.2.2UNPOOLED 不实用数据库连接池,和直接使用 JDBC 一样; 1.2.3JNDI:java 命名目录接口技术;
三、数据库连接池
在内存中开辟一块空间,存放多个数据库连接对象.
JDBC Tmocat Pool,直接由Tomcat产生数据库连接池
数据库连接的状态有如下两种 3.1active 状态:当前连接对象被应用程序使用中 3.2Idle 空闲状态:等待应用程序使用
使用数据库连接池的目的 4.1 在高频率访问数据库时,使用数据库连接池可以降低服务器系统压力,提升程序运行效率; 4.2 小型项目不适用数据库连接池
实现JDBC Tomcat Pool的步骤 5.1 在 web 项目的 META-INF 中存放context.xml,在 context.xml 编写数据库连接池相关属性; 5.2把项目发布到Tomcat中,数据库连接池产生
<?xml version="1.0" encoding="UTF-8"?>
<Context>
<Resource
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/database"
username="root"
password="123456"
maxActive="50"
maxIdle="20"
name="test"
<!--auth="Container" 允许Tomcat自动启动jdbc连接池 -->
auth="Container"
maxWait="10000"
type="javax.sql.DataSource"/>
</Context>
可以在 java 中使用 jndi 获取数据库连接池中对象 6.1Context:上下文接口.context.xml 文件对象类型 6.2 代码 6.3 当关闭连接对象时,把连接对象归还给数据库连接池,把状态 改变成 Idle
Context cxt = new InitialContext();
<!-- cxt.lookup("java:comp/env/databaseName") 固定格式 java:complete environment-->
DataSource ds = (DataSource) cxt.lookup("java:comp/env/test");
Connection conn = ds.getConnection();
四、mybatis三种查询方式
selectList() 返回值为 List<resultType 属性控制> 1.1 适用于查询结果都需要遍历的需求
List<Flower> list = session.selectList("a.b.selAll");
for (Flower flower : list)
{
System.out.println(flower.toString());
}
selectOne() 返回值 Object, 2.1 适用于返回结果只是变量或一行数据时
int count = session.selectOne("a.b.selById");
System.out.println(count);
selectMap() 返回值 Map 3.1适用于需要在查询结果中通过某列的值取到这行数据的需求. 3.22Map<key,resultType 控制>
Map<Object, Object> map = session.selectMap("a.b.c", "name123");
System.out.println(map);