• MyBatis


    一.什么是MyBatis

    • MyBatis是支持普通SQL查询,动态sql和高级结果映射的优秀持久层框架。
    • MyBatis几乎封装了所有必须但是又重复,繁琐的JDBC代码
    • MyBatis使用简单的XML方式进行主要的配置和SQL映射配置,从而将接口的方法映射到sql,将Java的POJO(Plan Old Java Objects,普通的Java对象)映射成数据库中的记录。

    二.MyBatis入门实例

      1.基本开发步骤:

      • 第一步:创建web工程,并导入两个主要的jar包(mybatis-3.0.5.jar和ORACLE数据库驱动程序ojdbc6.jar),还有其它一些jar包。
      • 第二步:构建SqlSessionFactory:
        • 在src下创建MyBatis主配置文件mybatis.xml
        • 编写实用工具类,根据mybatis.xml创建SqlSessionFactory,通过SqlSessionFactory打开SqlSession 
        • mybatis.xml:
           1 <?xml version="1.0" encoding="UTF-8" ?> 
           2 <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" 
           3 "http://mybatis.org/dtd/mybatis-3-config.dtd">
           4 <configuration>
           5   <environments default="development">
           6     <environment id="development">
           7       <transactionManager type="JDBC" />
           8       <dataSource type="POOLED">
           9 <property name="driver"  
          10   value="oracle.jdbc.OracleDriver" />
          11 <property name="url" 
          12  value="jdbc:oracle:thin:@localhost:1521:orcl" />
          13 <property name="username" value="scott" />
          14 <property name="password" value="tiger" />
          15       </dataSource>
          16     </environment>
          17   </environments>
          18 </configuration>
        • 编写SqlSessionFactoryUtil类,创建SqlSessionFactory,通过SqlSessionFactory打开SqlSession:

           1 public class SqlSessionFactoryUtil {
           2     private static SqlSessionFactory factory;
           3     private SqlSessionFactoryUtil(){}
           4     static{
           5     Reader reader = null;
           6     try{
           7          reader = 
           8         Resources.getResourceAsReader("mybatis.xml");    
           9          factory = 
          10         new SqlSessionFactoryBuilder().build(reader);
          11     } catch (Exception e) {
          12         e.printStackTrace();
          13     }finally{ if(reader!=null)reader.close(); }
          14     }
          15 
          16     public static SqlSession getSqlSession(){
          17      return factory. openSession();    }
          18 }
      • ----------------------------------------------
      • 第三步:创建domain包针对每个数据库表创建对应的实体类
        •  1 public class Dept{
           2     private int deptNo;
           3     private String deptName;
           4     private String loc;
           5     ……省略getter和setter方法
           6 } 
           7 
           8 
           9 public class Emp {
          10     private int empNo;
          11     private String empName;
          12     private String job;
          13     private float salary;
          14     private java.util.Date hiredate;
          15     private Dept dept;
          16     ……省略getter和setter方法
          17 } 
      •  第四步:创建dao包,在其中编写EmpDao接口
        • 1 package dao;
          2 public interface EmpDao{
          3     public List<Emp> searchAll();
          4 } 
      •  第五步:针对EmpDao接口,在dao包下创建映射文件:
        • EmpDaoMapper.xml(名称可以自定义),并在其中为search方法配置映射sql语句
        •  1 <?xml version="1.0" encoding="UTF-8" ?>
           2 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
           3 "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
           4 
           5 <mapper namespace="dao.EmpDao">  
           6   <select id="searchAll" resultType="domain.Emp">  注意:resultType属性指定查询结果每行记录封装成什么对象
           7      select empno as empNo,ename as empName,
           8      sal as salary,hiredate from emp
           9   </select>
          10 </mapper>
      •  第六步:在src下的mybatis.xml中配置EmpDaoMapper.xml文件的位置信息
        •   将以下代码添加到environments元素之后:
        • 1 <mappers>
          2    <mapper resource="dao/EmpDaoMapper.xml"></mapper>
          3 </mappers>
      •  最后写个测试程序:
        •   
           1 SqlSession se = null;
           2 try {
           3 
           4 se = SqlSessionFactoryUtil.getSqlSession();
           5 EmpDao dao = se.getMapper(EmpDao.class);
           6 List<Emp> list = dao.searchAll();
           7 for (Emp e : list) {
           8 System.out.println(e.getEmpName() + "	" + e.getSalary() + "	“ + e.getHiredate());
           9 }
          10 
          11 } catch (Exception e) {
          12 e.printStackTrace();
          13 }finally{
          14 if(se!=null) se.close();
          15 }
  • 相关阅读:
    Java实现 洛谷 P1049 装箱问题
    (Java实现) 洛谷 P1781 宇宙总统
    (Java实现) 洛谷 P1319 压缩技术
    (Java实现) 蓝桥杯 国赛 重复模式
    qt编写一个只能运行单个实例的程序,不用Windows API
    Chaos Software Google Sync v10.1.1.0 和Syncovery Pro
    C++中new和delete的背后( call edx 调用虚表内的第二个函数(析构函数))
    C++中实现回调机制的几种方式(一共三种方法,另加三种)
    如何将Icon转成Bitmap(对ICON的内部格式讲的比较清楚)
    深入解析控制器运行原理
  • 原文地址:https://www.cnblogs.com/sxl920624/p/6733568.html
Copyright © 2020-2023  润新知