MyBatis简介及基础配置【1】

MyBatis

1.框架技术

1.1 框架技术

  1. 是一个应用程序的半成品

  2. 提供可重用的公共结构

  3. 按一定规则组织的一组组件

1.2 分析优势

  1. 不用再考虑公共问题

  2. 专心在业务实现上

  3. 结构统一,易于学习、维护

  4. 新手也可写出好程序

1.3 主流架构

1.3.1 Struts2

  1. MVC设计模式的实现

  2. 拦截器

  3. 可变和可重用的标签

1.3.2 HIBERNATE

  1. ORM,简化数据库操作

  2. DAO层

1.3.3 Spring

  1. 依赖注入容器 / AOP实现

  2. 声明式事务

  3. 简化Java EE应用

  4. 黏合剂,将大家组装到一起

Spring MVC

  1. 结构最清晰的MVC Model2实现

  2. 高度可配置,支持多种视图技术

  3. 定制化开发

2. MyBatis

2.1 持久化与ORM2

2.1.1 持久化

持久化是程序数据在瞬时状态和持久状态间转换的过程

内存数据与硬盘数据

2.1.2 ORM(Object Relational Mapping)

编写程序的时候,以面向对象的方式处理数据 保存数据的时候,却以关系型数据库的方式存储

就是内存中对象和数据库里的数据之间的映射关系

ORM解决方案包含下面四个部分

  1. 持久化对象上执行基本的增、删、改、查操作

  2. 对持久化对象提供一种查询语言或者API

  3. 对象关系映射工具

  4. 提供与事务对象交互、执行检查、延迟加载以及其他优化功能

2.2 MyBatis简介

  1. MyBatis前身是iBatis,本是Apache的一个开源的项目

  2. 官方网站 mybatis

  3. ORM框架

  4. 实体类和SQL语句之间建立映射关系

  5. 特点

    1. 基于SQL语法,简单易学

    2. 能了解底层封装过程

    3. SQL语句封装在配置文件中,便于统一管理与维护,降低程序的耦合度

    4. 方便程序代码调试

2.3 MyBatis使用

整体步骤

2.3.1 导入依赖

1.导入 mysql-connector-java-5.1.18.jar 以及 mybatis-3.2.2.jar 。

2.编写MyBatis核心配置文件(configuration.xml)

参考文件mybatis-3.2.2.pdf配置configuration文件,更改数据库参数 :

 <?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>
     <environments default="development">
         <environment id="development">
             <transactionManager type="JDBC"/>
             <dataSource type="POOLED">
                 <property name="driver" value="com.mysql.jdbc.Driver"/>
                 <property name="url" value="jdbc:mysql://localhost:3306/smbms"/>
                 <property name="username" value="root"/>
                 <property name="password" value="123456"/>
             </dataSource>
         </environment>
     </environments>
     <mappers>
         <mapper resource="org/mybatis/example/BlogMapper.xml"/>
     </mappers>
 </configuration>

3.创建实体类pojo

使用lombok插件 可以快速构建 getter/setter/constructor .

4.创建DAO层-和SQL映射文件(mapper.xml)

实体类entity对应的mapper文件一般命名为: entityMapper.xml

映射文件部分:结合上图对照文件对应关系

5.使用:

添加configuration里的mapper映射

使用流程:

注意引用包资源。 

 package cn.bdqn.test;
 ​
 import cn.bdqn.smBatis.dao.UserDao;
 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 java.io.InputStream;
 ​
 public class testUser {
     public static void main(String[] args) throws Exception{
         //MyBatis
 ​
         //1.读取 mybatis 配置文件,获取mybatis-config。xml的输入流
         InputStream is = Resources.getResourceAsStream("configuration.xml");
         //2.将读取的配置内容构建  sqlSessionFactory
         SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(is);
         //3.获取 sqlSession : 相当于jdbc中 connection + preparedStatement的能力
         SqlSession sqlSession = sqlSessionFactory.openSession();
         //4.根据DAO层接口获取DAO层默认对象 daoImpl
         UserDao userMapper = sqlSession.getMapper(UserDao.class);
         //5.使用UserMapper对象的方法
         int counts = userMapper.queryCounts();
         //6.关闭流
         sqlSession.close();
 ​
         System.out.println("目前总人数:"+counts);
     }
 }

注意:记得要关闭流sqlSession.close();

不断获取不断构造:

InputStream is = Resources.getResourceAsStream("configuration.xml");

-> SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(is);

-> SqlSession sqlSession = sqlSessionFactory.openSession();

-> UserDao userMapper = sqlSession.getMapper(UserDao.class);

-> int counts = userMapper.queryCounts();

通过工具类实现整个流程更简便:

工具类内容:

 package cn.bdqn.util;
 ​
 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 java.io.IOException;
 import java.io.InputStream;
 ​
 public class MyBatisUtil {
 ​
     private static SqlSessionFactory factory;
 ​
     static{
 ​
         try {
             InputStream is = Resources.getResourceAsStream("configuration.xml");
             factory = new SqlSessionFactoryBuilder().build(is);
         } catch (IOException e) {
             throw new RuntimeException("初始化失败",e);
         }
 ​
     }
 ​
     public  static SqlSession openSession(){
         //true:自动事务提交  false:手动事务提交
         return factory.openSession(true);
     }
 }

调用实现类:

 
package cn.bdqn.test;
 ​
 import cn.bdqn.smBatis.dao.RoleDao;
 import cn.bdqn.smBatis.dao.UserDao;
 import cn.bdqn.util.MyBatisUtil;
 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 java.io.InputStream;
 ​
 public class testRole {
     public static void main(String[] args) throws Exception{
         //MyBatis
 ​
         //1.使用工具类
         SqlSession sqlSession = MyBatisUtil.openSession();
         //2.动态接口
         RoleDao roleMapper = sqlSession.getMapper(RoleDao.class);
 ​
         //3.使用UserMapper对象的方法
         int counts = roleMapper.getCounts();
         //4.关闭流
         sqlSession.close();
 ​
         System.out.println("目前总用户数:"+counts);
     }
 }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值