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的运行环境,数据源、事务等。

 <?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/jerry" />
<property name="username" value="root" />
<property name="password" value="1234" />
</dataSource>
</environment>
</environments>
</configuration>

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

    3.4.1创建po类(实体类)

 package com.mybatis.model;
/**
* 员工信息表实体类
* @author Administrator
*
*/
public class Emp { private Integer emp_id;
private String emp_name;
private Integer emp_age;
private Integer emp_num;
private String emp_post;
public Integer getEmp_id() {
return emp_id;
}
public void setEmp_id(Integer emp_id) {
this.emp_id = emp_id;
}
public String getEmp_name() {
return emp_name;
}
public void setEmp_name(String emp_name) {
this.emp_name = emp_name;
}
public Integer getEmp_age() {
return emp_age;
}
public void setEmp_age(Integer emp_age) {
this.emp_age = emp_age;
}
public Integer getEmp_num() {
return emp_num;
}
public void setEmp_num(Integer emp_num) {
this.emp_num = emp_num;
}
public String getEmp_post() {
return emp_post;
}
public void setEmp_post(String emp_post) {
this.emp_post = emp_post;
} }

    3.4.2 映射文件

映射文件命名:

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

 <?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">
<!-- namespace 命名空间,作用就是对sql进行分类化管理,理解sql隔离。-->
<mapper namespace="test">
<!--在映射文件中可以配置很多sql语句
把所用到的sql提取到配置文件中
id:sql语句的唯一标识
parameterType:指定参数的类型
resultType:指定sql输出结果所映射的java对象类型,select指定resultType表示将单条记录映射成java对象
#{id}:其中id表示接收输入的参数,参数名就是id。如果是简单类型#{}中的参数名称可以任意写 -->
<select id="selectEmpById" parameterType="int" resultType="com.mybatis.model.Emp">
select * from emp_message where emp_id=#{id};
</select>
</mapper>

  3.4.3  在SqlMapConfig.xml加载映射文件

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

3.5 test程序编写

 package com.mybatis.test;

 import java.io.IOException;
import java.io.InputStream;
import java.util.List; 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 com.mybatis.model.Emp; public class Test {
//根据员工id查询员工基本信息
public static void main(String[] args) {
InputStream inputStream = null;
try {
//mybatis配置文件
String reString="sqlMapConfig.xml";
//得到配置文件流
inputStream = Resources.getResourceAsStream(reString);
//创建会话工厂,传入mybatis配置文件信息
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
//通过sqlSessionFactory会话工厂 得到 session
SqlSession sqlsession = sqlSessionFactory.openSession();
/**
* 通过sqlsession操作数据库
* 第一个参数:映射文件中的statement的id,等于namespace+“.”+statement的ID
* 第二个参数:指定和映射文件中parameterType参数类型所匹配的参数
* sqlsession.selectOne结果是与映射文件中resultType返回类型所匹配的对象
*/
Emp emp=sqlsession.selectOne("test.selectEmpById", 1);
System.out.println(emp);
//释放资源
sqlsession.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} }
}

3.6.测试结果

最新文章

  1. BPM配置故事之案例2-文本默认值
  2. 为Xamarin更好的开发而改写的库
  3. SVG入门
  4. effective java —— 终结方法守卫者
  5. Java 内存分配全面浅析
  6. js中的this中使用
  7. 编译预处理命令--define和ifdef的使用
  8. 修改hive内存限制
  9. OS X中如何获取当前运行程序的路径
  10. jsoup 解析html 页面数据
  11. iOS 性能测试 - FBMemoryProfiler
  12. php封装+租房子练习题
  13. 如何自学成为一个WEB前端
  14. python︱模块加载(pip安装)以及pycharm安装与报错解决方式
  15. 关于一些基础的Java问题的解答(二)
  16. 熟悉java语言的基本使用:简单存款取款机制java实现
  17. javaRMI详解
  18. Raft算法
  19. 一套代码小程序&amp;Web&amp;Native运行的探索05——snabbdom
  20. CSS-定位(Position)

热门文章

  1. 自建nodejs服务器(一:有个服务器)
  2. Angular的面试题
  3. MySQL(6)— 事务
  4. POJ2377
  5. Git链接http转ssh
  6. 自定义reaml创建使用实现认证
  7. h5 js判断是IOS系统还是android系统
  8. php实用正则
  9. 快服务常见TOP3审核雷区,再不过审就要崩溃啦!
  10. 监控-zabbix