Mybatis入门系列01-Mybatis简介及第一个Mybatis程序

1. 简介
1.1 为什么使用Mybatis java服务器需要与数据库操作,java传统的数据库操作通过JDBC实现。JDBC提供了java与数据库连接及操作的接口,但与数据库交互时需要==编写JDBC文件==,同时SQL语句也会出现在java中,导致==java与SQL的耦合==,为了解决这两个问题,引入了Mybatis解决java JDBC实现数据库操作带来的问题。
1.2 什么是Mybatis Mybatis入门系列01-Mybatis简介及第一个Mybatis程序
文章图片
image-20201202171812129.png

MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。
  • 持久层框架
  • 支持自定义SQL、存储过程和高级映射;
  • 免除JDBC代码,设置参数及获取结果集的工作;
  • XML注解进行配置;
1.3 持久层 【Mybatis入门系列01-Mybatis简介及第一个Mybatis程序】易失性存储:指存储在内存中,数据随着系统掉电会丢失,为非持久化数据。
持久化:对应于“易失性存储”,将易失性存储的数据转变为持久状态。
为什么持久化:有些数据需要长久保存,不能断电即失。
持久化的方式:数据库;IO文件;...
持久层:处理持久化过程的代码块,实现持久化数据与内存数据的相互转化。
1.4 Mybatis的特点 Mybatis的作用:==帮助程序操作数据库。==
Mybatis的特点:
  • sql与代码的分离,提高可维护性;
  • 提供映射标签,支持对象与数据库的orm字段关系映射;
  • 提供对象关系映射标签,支持对象关系组建维护;
  • 提供xml标签,支持编写动态sql。
1.5 如何学习Mybatis maven仓库中查找Mybatis依赖包: https://mvnrepository.com/
Mybatis文档:https://mybatis.org/mybatis-3/zh/index.html
2. Mybatis环境搭建与第一个Mybaits程序(基于Maven)
2.1 环境搭建 基于Maven项目中使用Mybatis,只需要在.pom文件中引入Mybatis对应的包即可。
mysql mysql-connector-java 8.0.21 org.mybatis mybatis 3.4.6 junit junit 4.12

2.2 第一个Mybatis程序 一个Mybatis程序构建完成后的示例结构如下图。
Mybatis入门系列01-Mybatis简介及第一个Mybatis程序
文章图片
image-20201205121753726.png 其具体构建步骤如下:
  • 准备数据库;
  • 新建一个maven项目,并在项目的main目录下的resource文件夹中新建mybatis-config.xml文件,结构如下:

  • 构建Mybatis工具类:在utils文件夹中新建MybatisUtil.java工具类,用于读取xml构建sqlSession实例,作为程序与数据库的连接。
    //文件名:MybatisUtils.java public class MybatisUtils { //新建静态sqlSessionFactory对象,该对象只需要在项目初始化时生成一次; private static SqlSessionFactory sqlSessionFactory; static { try { //定义xml文件地址,默认地址在resources文件夹中; String resource = "mybatis-config.xml"; InputStream inputStream = null; //对过inputSteam流解析xml中的数据库及项目信息; inputStream = Resources.getResourceAsStream(resource); //sqlSessionFactory对象由sqlSessionFactoryBuilder对象的build方法实例化; sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); } catch (IOException e) { e.printStackTrace(); } } //定义一个getSqlSession方法来构建一个sqlSession实例,通过sqlSessionFactory的openSession()方法实现。 //sqlSession完全包含了面向数据库执行SQL命令所需的所有方法! //参数true指打开了sqlSession的自动提交,即更改数据库后无需手动commit。 public static SqlSession getSqlSession(){ return sqlSessionFactory.openSession(true); } }

  • 编写数据库
    数据定义一般放入pojo文件夹,一般一个数据表与一个类对应,类的属性为表中的字段,同时构建出get/set方法,tostring方法,有参/无参构造方法。
    //文件名:User.java package com.hy.pojo; public class User { private int id; private String name; private String pwd; public User() { }public User(int id, String name, String pwd) { this.id = id; this.name = name; this.pwd = pwd; }public int getId() { return id; }public void setId(int id) { this.id = id; }public String getName() { return name; }public void setName(String name) { this.name = name; }public String getPwd() { return pwd; }public void setPwd(String pwd) { this.pwd = pwd; }@Override public String toString() { return "User{" + "id=" + id + ", name='" + name + '\'' + ", pwd='" + pwd + '\'' + '}'; } }

  • 编写数据库交互接口
    数据库交互的接口一般放在dao文件夹,定义数据库的基本操作(CRUD),一般命名为XxxMapper,定义为接口文件。
    //文件名:UserMapper.java public interface UserMapper { //获取全部用户; List getUserList(); //根据id查询用户; User getUserById(int id); //根据name查询用户; List getUserListByName(String name); //insert一个用户; void addUser(User user); //按id更新一个用户; void updateUserById(User user); //按id删除一个用户; Integer deleteUserById(int id); //利用map适配查询内容; int addUserPartly(Map map); //模糊查询; List getUserLike(String value); }

  • 编写XxxMapper.xml文件
    上一步中的接口的实现在此xml文件中定义,当然也可以直接用java编写实现类。而Mybatis的作用即在此步骤中,通过xml配置文件替换了java的实现类,免去了实现类中连接数据库等基础操作的代码,简化代码并实现了java和SQL的解耦。
    select * from db_hy.userselect * from db_hy.user where name like "%"#{value}"%"select * from db_hy.user where id = #{id}select * from db_hy.user where name = #{name} insert into db_hy.user (id,name,pwd) values (#{id}, #{name}, #{pwd}) insert into db_hy.user (id,name,pwd) values (#{userid}, #{userName}, #{passWORD}) update db_hy.user set name=#{name}, pwd=#{pwd} where id=#{id} delete from db_hy.user where id=#{id}

  • 将Mapper.xml引入项目
    要使上一步中的Mapper.xml文件在项目中起作用,需要将xml文件引入项目。具体实现分为2步。
    首先,需要将该文件引入mybatis的核心配置文件中,即引入mybatis-config.xml文件中。
    Mybatis入门系列01-Mybatis简介及第一个Mybatis程序
    文章图片
    image-20201205122248564.png
其次,需要在maven中将xml文件所在地址定义为maven搜索配置文件扫描的地址,否则maven在编译程序时不会读取该文件。
src/main/resources **/*.properties **/*.xml src/main/java **/*.properties **/*.xml

  • 编写测试类进行测试
    在test文件夹中新建对应接口文件相同位置的建立对应的测试类,测试测试方法验证。
    //文件名: UserMapperTest.java public class UserMapperTest {@Test public void test(){ //新建sqlSession连接。 SqlSession sqlSession = MybatisUtils.getSqlSession(); try{ //通过sqlSession的getMapper方法获取UserMapper对象; //该对象就是对应UserMapper接口的实例化对象。 UserMapper userMapper = sqlSession.getMapper(UserMapper.class); //UserMapper对象可以直接使用接口定义的方法,方法的实现来自Mapper.xml配置文件。 List userList = userMapper.getUserList(); for (User user : userList) { System.out.println(user); } } finally { //测试完毕要记得关闭连接,释放内存。 sqlSession.close(); System.out.println("====================="); }} }

    推荐阅读