SSM框架学习总结之路(一)

本文围绕MyBatis框架展开,介绍了框架概念,它是软件半成品,需特定配置文件和相关技术。阐述了MyBatis的开源背景、作为数据访问层框架的作用及优点。详细说明了环境搭建步骤、数据库连接池的使用及实现步骤,还介绍了MyBatis的三种查询方式。

一、框架是什么?

  1. 框架 ,软件的半成品,为解决问题制定的一套约束,在提供功能的基础上进行补充;
  2. 框架中一些不能被封装的代码,需要使用框架者自己新建一个xml文件,在文件中添加变量内容;
    注意:
    2.1需要建立特定位置和特定名称的配置文件。
    2.2需要使用xml解析技术和反射技术。

二、mybatis简介

  1. mybatis开源免费框架,原名iBatis,2010在google code,2013年迁到GitHub;
    2.作用:数据访问层框架,底层对JDBC的封装 ;
  2. 优点:使用mybatis不需要编写实现类,只需要写执行的SQL命令;

三、环境初步搭建

  1. 导入jar包;
    在这里插入图片描述
  2. 在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>

  1. 新建以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>

  1. 测试结果(只有在单独使用 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.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 命名目录接口技术;

三、数据库连接池

  1. 在内存中开辟一块空间,存放多个数据库连接对象.

  2. JDBC Tmocat Pool,直接由Tomcat产生数据库连接池

  3. 数据库连接的状态有如下两种
    3.1active 状态:当前连接对象被应用程序使用中
    3.2Idle 空闲状态:等待应用程序使用

  4. 使用数据库连接池的目的
    4.1 在高频率访问数据库时,使用数据库连接池可以降低服务器系统压力,提升程序运行效率;
    4.2 小型项目不适用数据库连接池

  5. 实现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>
  1. 可以在 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三种查询方式

  1. selectList() 返回值为 List<resultType 属性控制>
    1.1 适用于查询结果都需要遍历的需求
List<Flower> list = session.selectList("a.b.selAll"); 
for (Flower flower : list)
 { 
 System.out.println(flower.toString()); 
 }
  1. selectOne() 返回值 Object,
    2.1 适用于返回结果只是变量或一行数据时
int count = session.selectOne("a.b.selById"); 
System.out.println(count);
  1. selectMap() 返回值 Map
    3.1适用于需要在查询结果中通过某列的值取到这行数据的需求.
    3.22Map<key,resultType 控制>
Map<Object, Object> map = session.selectMap("a.b.c", "name123"); 
System.out.println(map);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值