zoukankan      html  css  js  c++  java
  • MyBatis运行流程及入门第一个程序

    1. mybatis是什么?

    MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis,是一个基于Java的持久层框架。
           1️⃣mybatis托管到goolecode下,再后来托管到github(https://github.com/mybatis/mybatis-3/releases)

      2️⃣mybatis让程序将主要精力放在sql上,通过mybatis提供的映射方式,自由灵活生成(半自动化,大部分需要程序员编写sql)满足需要sql语句。

      3️⃣mybatis可以将向 preparedStatement中的输入参数自动进行输入映射,将查询结果集灵活映射成java对象。(输出映射)

    Mybatiis介绍思维导图:https://www.edrawsoft.cn/viewer/public/s/8be08327341014

    2.mybatis运行流程

     3.入门程序

      3.1.搭建环境

        mybatis运行环境(jar包):

        从https://github.com/mybatis/mybatis-3/releases下载,3.2.7版本

              

     lib下:依赖包

    mybatis-3.2.7.jar:核心 包

    mybatis-3.2.7.pdf,操作指南

    加入mysql的驱动包

      3.2工程结构

      3.3SqlMapConfig.xml

    配置mybatis的运行环境,数据源、事务等。

     1 <?xml version="1.0" encoding="UTF-8" ?>
     2 <!DOCTYPE configuration
     3   PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
     4   "http://mybatis.org/dtd/mybatis-3-config.dtd">
     5 <configuration>
     6     <!-- 选择数据库环境 -->
     7     <environments default="development">
     8         <environment id="development">
     9             <!-- 选择事务管理类型 -->
    10             <transactionManager type="JDBC" />
    11             <!-- 配置数据源 -->
    12             <dataSource type="POOLED">
    13                 <property name="driver" value="com.mysql.jdbc.Driver" />
    14                 <property name="url" value="jdbc:mysql://localhost:3306/jerry" />
    15                 <property name="username" value="root" />
    16                 <property name="password" value="1234" />
    17             </dataSource>
    18         </environment>
    19     </environments>
    20   </configuration>

      3.4根据员工id(主键)查询员工信息

        3.4.1创建po类(实体类)

     1 package com.mybatis.model;
     2 /**
     3  * 员工信息表实体类
     4  * @author Administrator
     5  *
     6  */
     7 public class Emp {
     8 
     9     private Integer emp_id;
    10     private String emp_name;
    11     private Integer emp_age;
    12     private Integer emp_num;
    13     private String emp_post;
    14     public Integer getEmp_id() {
    15         return emp_id;
    16     }
    17     public void setEmp_id(Integer emp_id) {
    18         this.emp_id = emp_id;
    19     }
    20     public String getEmp_name() {
    21         return emp_name;
    22     }
    23     public void setEmp_name(String emp_name) {
    24         this.emp_name = emp_name;
    25     }
    26     public Integer getEmp_age() {
    27         return emp_age;
    28     }
    29     public void setEmp_age(Integer emp_age) {
    30         this.emp_age = emp_age;
    31     }
    32     public Integer getEmp_num() {
    33         return emp_num;
    34     }
    35     public void setEmp_num(Integer emp_num) {
    36         this.emp_num = emp_num;
    37     }
    38     public String getEmp_post() {
    39         return emp_post;
    40     }
    41     public void setEmp_post(String emp_post) {
    42         this.emp_post = emp_post;
    43     }
    44     
    45 }

        3.4.2 映射文件

    映射文件命名:

      User.xml(原始ibatis命名),mapper代理开发映射文件名称叫XXXMapper.xml,比如:UserMapper.xml、ItemsMapper.xml    在映射文件中配置sql语句。

     1 <?xml version="1.0" encoding="UTF-8" ?>
     2 <!DOCTYPE mapper
     3   PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     4   "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
     5 <!-- namespace 命名空间,作用就是对sql进行分类化管理,理解sql隔离。-->
     6 <mapper namespace="test">
     7     <!--在映射文件中可以配置很多sql语句 
     8     把所用到的sql提取到配置文件中 
     9     id:sql语句的唯一标识 
    10     parameterType:指定参数的类型 
    11     resultType:指定sql输出结果所映射的java对象类型,select指定resultType表示将单条记录映射成java对象 
    12         #{id}:其中id表示接收输入的参数,参数名就是id。如果是简单类型#{}中的参数名称可以任意写 -->
    13     <select id="selectEmpById" parameterType="int" resultType="com.mybatis.model.Emp">
    14         select * from emp_message where emp_id=#{id};
    15     </select>
    16 </mapper>

      3.4.3  在SqlMapConfig.xml加载映射文件

    1 <!-- 加载映射文件-->
    2     <mappers>
    3         <mapper resource="sqlMapper/empMapper.xml" />
    4     </mappers>

    3.5 test程序编写

     1 package com.mybatis.test;
     2 
     3 import java.io.IOException;
     4 import java.io.InputStream;
     5 import java.util.List;
     6 
     7 import org.apache.ibatis.io.Resources;
     8 import org.apache.ibatis.session.SqlSession;
     9 import org.apache.ibatis.session.SqlSessionFactory;
    10 import org.apache.ibatis.session.SqlSessionFactoryBuilder;
    11 
    12 import com.mybatis.model.Emp;
    13 
    14 public class Test {
    15     //根据员工id查询员工基本信息
    16     public static void main(String[] args) {
    17         InputStream inputStream = null;
    18         try {
    19             //mybatis配置文件
    20             String reString="sqlMapConfig.xml";
    21             //得到配置文件流
    22             inputStream = Resources.getResourceAsStream(reString);
    23             //创建会话工厂,传入mybatis配置文件信息
    24             SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
    25             //通过sqlSessionFactory会话工厂 得到 session
    26             SqlSession sqlsession = sqlSessionFactory.openSession();
    27             /**
    28              * 通过sqlsession操作数据库
    29              * 第一个参数:映射文件中的statement的id,等于namespace+“.”+statement的ID
    30              * 第二个参数:指定和映射文件中parameterType参数类型所匹配的参数
    31              * sqlsession.selectOne结果是与映射文件中resultType返回类型所匹配的对象
    32              */
    33             Emp emp=sqlsession.selectOne("test.selectEmpById", 1);
    34             System.out.println(emp);
    35             //释放资源
    36             sqlsession.close();
    37         } catch (IOException e) {
    38             // TODO Auto-generated catch block
    39             e.printStackTrace();
    40         }
    41 
    42     }
    43 }

    3.6.测试结果

  • 相关阅读:
    〖Python〗-- Tornado自定义session组件
    〖Python〗-- Tornado异步非阻塞
    〖Python〗-- Tornado基础
    〖Python〗-- Flask
    〖Python〗-- 设计模式
    〖Python〗-- Celery分布式任务队列
    〖Demo〗-- CosPlayPermission
    05——wepy框架中的一些细节
    04——wepy框架搭建
    03——微信小程序官方demo讲解——page部分
  • 原文地址:https://www.cnblogs.com/ysource/p/13091319.html
Copyright © 2011-2022 走看看