MyBatis入门(IDEA+maven+mybatis+mysql)

前言:写本文前,博主已经是通过黑马程序员的视频大致地学过了一遍mybatis了,但无奈当时进度太快,没来得及好好总结,以致脑海中里只留下稀薄的印象。因此,为了更好地总结,博主跟着mybatis的官方文档回顾了一下mybatis,并以此博文记录。


概念:博主看了官方文档的入门部分后特意作了一幅概念图,能大概反映出mybatis的使用流程MyBatis入门(IDEA+maven+mybatis+mysql)_第1张图片

文档上有详细说明,附上官方文档链接:www.mybatis.org/mybatis-3/zh/getting-started.html

以下是基于maven+IDEA+mysql的mybatis入门开发:

1、创建maven项目

    由于本程序只是一个简单入门,因此是否使用骨架无伤大雅(本文没有使用)。

MyBatis入门(IDEA+maven+mybatis+mysql)_第2张图片

    附上项目结构图:

    MyBatis入门(IDEA+maven+mybatis+mysql)_第3张图片


2、pom文件

因为本文重点是mybatis的使用,因此博主尽量少地用到其他jar包。

xml version="1.0" encoding="UTF-8"?>
xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    4.0.0

    Kanject
    MyMybatis
    1.0-SNAPSHOT

    
        
        
            org.mybatis
            mybatis
            3.3.0
        
        
        
            mysql
            mysql-connector-java
            5.1.29
        
        
        
            junit
            junit
            4.12
        
    

本程序用到的jar包有3个:mybatis核心包、mysql核心驱动包、junit单元测试包。

    接下来正式开始mybatis的开发~


3、Person、PersonMapper、Person.xml

    首先准备Person.java、PersonMapper.java、Person.xml三个文件。

    Person.java

package pojo;

public class Person {

    private int id;
    private String userName ;
    private int age ;
    private String mobilePhone ;
    public Person(){}
    public Person(int id, String userName, int age, String mobilePhone) {
        this.id = id;
        this.userName = userName;
        this.age = age;
        this.mobilePhone = mobilePhone;
    }

    public String getUserName() {
        return userName;
    }
    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }
    public void setUserName(String userName) {
        this.userName = userName;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getMobilePhone() {
        return mobilePhone;
    }

    public void setMobilePhone(String mobilePhone) {
        this.mobilePhone = mobilePhone;
    }

    @Override
    public String toString() {
        return "Person{" +
                "userName='" + userName + '\'' +
                ", age=" + age +
                ", mobilePhone='" + mobilePhone + '\'' +
                '}';
    }
}

    PersonMapper.java

package mapper;


import pojo.Person;

public interface PersonMapper {
    void insertPerson(Person person);

    Person queryById(int id);

    void updatePerson(int id);
}

    Person.xml

xml version="1.0" encoding="UTF-8" ?>
mapper  PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"  "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
namespace="mapper.PersonMapper">
    id="insertPerson" parameterType="pojo.Person" >
        INSERT INTO PERSON(ID,USERNAME,AGE,MOBILEPHONE)VALUES (#{id},#{userName},#{age},#{mobilePhone})
    

    

    id="updatePerson">
        UPDATE PERSON SET USERNAME=#{userName},AGE=#{age},MOBILEPHONE=#{mobilePhone} WHERE ID=#{id}
    

    然后解释下三者的区别:

        Person.java:对实体的描述,包含了若干个实体的属性值。

        PersonMapper.java:实体在数据库有哪些行为(博主简称为“实体行为”)的接口,对实体行为的大概描述。

        Person.xml:实体行为在数据库操作上的具体实现,包含了 SQL 代码和映射定义信息。

    三者的关联:

        Person.xml通过

namespace="mapper.PersonMapper">

        绑定了PersonMapper.java

        Person.java是在程序中调用mapper方法后封装返回的结果。


4、mybatis-config.xml

根据概念图,mybatis-config.xml是mybatis的全局配置文件,为SqlSessionFactoryBuilder创建SqlSessionFactory服务。而 SqlSessionFactoryBuilder 除了可以从 XML 配置文件也可以从一个预先定制的 Configuration 的实例构建出 SqlSessionFactory 的实例(本文采取XML配置文件的方式)。

xml version="1.0" encoding="UTF-8" ?>
configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">


    default="development">
        id="development">
            type="JDBC"/>
            type="POOLED">
                name="driver" value="com.mysql.jdbc.Driver"/>
                name="url" value="jdbc:mysql://localhost:3306/mybatis"/>
                name="username" value="root"/>
                name="password" value="123"/>
            
        
    

    
        resource="mapper/Person.xml"/>
    

    上面包含了2大块内容:数据库连接配置、Person类的mapper映射器


5、测试代码

    完成上述步骤后,已完成mybatis大体的配置,现在进行代码测试。

import mapper.PersonMapper;
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 pojo.Person;

import java.io.IOException;
import java.io.InputStream;

public class Test {

    @org.junit.Test
    public void testInsertPerson() throws IOException {
        //获取mybatis全局配置文件
         String resource = "mybatis-config.xml";
        InputStream inputStream = Resources.getResourceAsStream(resource);
       //读取配置文件的配置信息,利用SqlSessionFactoryBuilder创建sqlSessionFactory
       SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
       //利用sqlSessionFactory打开与数据库的会话
        SqlSession sqlSession = sqlSessionFactory.openSession();

        try {
            PersonMapper personMapper = sqlSession.getMapper(PersonMapper.class);//通过sqlSession得到mapper

            Person person = new Person();
            person.setAge(3);
            person.setMobilePhone("33333333");
            person.setUserName("333");

            personMapper.insertPerson(person);//调用mapper的方法
            sqlSession.commit();//若是增、删、改操作,不添加此语句则数据库不更改
        } finally {
            sqlSession.close();
        }
    }

    @org.junit.Test
    public void testQueryById() throws IOException {
        //获取mybatis全局配置文件
        String resouces = "mybatis-config.xml";
        InputStream in = Resources.getResourceAsStream(resouces);
        //读取配置文件的配置信息,利用SqlSessionFactoryBuilder创建sqlSessionFactory
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(in);
        //利用sqlSessionFactory打开与数据库的会话
        SqlSession sqlSession = sqlSessionFactory.openSession();
        try {
            PersonMapper personMapper = sqlSession.getMapper(PersonMapper.class);//通过sqlSession得到mapper
            Person person = personMapper.queryById(10000);//调用mapper的方法
            //只读操作不需要sqlSession.commit()
            System.out.println(person);
        } finally {
            sqlSession.close();
        }

    }
    
}

进行测试,程序正确运行:

MyBatis入门(IDEA+maven+mybatis+mysql)_第4张图片MyBatis入门(IDEA+maven+mybatis+mysql)_第5张图片


小结:本文只是一个很基础的mybatis入门程序,里面的配置博主是能少则少地添加。本文展示的也是概念图中的其中一种实现方式,有兴趣的同学参照文档用其他方式实现。希望同学能能够通过这篇文章对mybatis有个大致的了解,有兴趣可以自行学习。


后记:本文是博主的第一篇博文,有许多不足,希望大家能多多支持和鼓励。文章若有错漏也欢迎大家指正。

你可能感兴趣的:(心得总结)