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

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


概念:博主看了官方文档的入门部分后特意作了一幅概念图,能大概反映出mybatis的使用流程

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

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

1、创建maven项目

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


    附上项目结构图:

    


2、pom文件

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

<?xml version="1.0" encoding="UTF-8"?>
<project 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">
    <modelVersion>4.0.0</modelVersion>

    <groupId>Kanject</groupId>
    <artifactId>MyMybatis</artifactId>
    <version>1.0-SNAPSHOT</version>

    <dependencies>
        <!--mybatis核心包-->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.3.0</version>
        </dependency>
        <!--MySQLJDBC驱动包-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.29</version>
        </dependency>
        <!--junit单元测试包-->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
        </dependency>
    </dependencies>
</project>

本程序用到的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" ?>
<!DOCTYPE mapper  PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"  "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="mapper.PersonMapper">
    <insert id="insertPerson" parameterType="pojo.Person" >
        INSERT INTO PERSON(ID,USERNAME,AGE,MOBILEPHONE)VALUES (#{id},#{userName},#{age},#{mobilePhone})
    </insert>

    <select id="queryById" parameterType="int" resultType="pojo.Person">
        SELECT * FROM PERSON WHERE ID=#{id}
    </select>

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

    然后解释下三者的区别:

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

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

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

    三者的关联:

        Person.xml通过

<mapper 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" ?>
<!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/mybatis"/>
                <property name="username" value="root"/>
                <property name="password" value="123"/>
            </dataSource>
        </environment>
    </environments>

    <mappers>
        <mapper resource="mapper/Person.xml"/>
    </mappers>

</configuration>

    上面包含了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入门程序,里面的配置博主是能少则少地添加。本文展示的也是概念图中的其中一种实现方式,有兴趣的同学参照文档用其他方式实现。希望同学能能够通过这篇文章对mybatis有个大致的了解,有兴趣可以自行学习。


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

  • 5
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值