ysource

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.测试结果

 

 

相关文章: