Mybatis快速入门简单易懂版(源码+注意点)

1.什么是Mybatis?

MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO为数据库中的记录。

2.Mybatis快速⼊⻔

小白也可以跟着走。
主要步骤:

1.Maven导包
2.创建数据表以及相对实体类
3.创建MyBatis 的配置⽂件config.xml
4.创建接⼝以及对应的 Mapper.xml、注册Mapper
5.调⽤接⼝的代理对象完成操作

1.Maven导包

   <dependencies>
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.4.5</version>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.11</version>
        </dependency>
    </dependencies>

2.创建数据表以及相对实体类
1.创建数据表

use mybatis;
create table dome(
         id int primary key auto_increment,
         name varchar(10),
         password varchar(10)
)

2.创建实体类

package com.yt.pojo;

public class Dome {
    private int id;
    private String name;
    private String password;

    public Dome(String name, String password) {
        this.name = name;
        this.password = password;
    }

    public Dome(int id, String name, String password) {
        this.id = id;
        this.name = name;
        this.password = password;
    }

    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 getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    @Override
    public String toString() {
        return "Dome{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", password='" + password + '\'' +
                '}';
    }
}

一般用快捷键直接生成,也可以使用 Lombok 插件偷个懒。
例如:

@Data
public class Dome  {
    private int id;
    private String name;
    private String password;
    }

3.创建MyBatis 的配置⽂件config.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>

    <!-- 配置MyBatis运⾏环境 -->
    <environments default="development">
        <environment id="development">
            <!-- 配置JDBC事务管理 -->
            <transactionManager type="JDBC"></transactionManager>
            <!-- POOLED配置JDBC数据源连接池 -->
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.cj.jdbc.Driver"></property>
                <property name="url"
                          value="jdbc:mysql://localhost:3306/mybatis?
useUnicode=true&amp;characterEncoding=UTF-8"></property>
                <property name="username" value="root"></property>
                 <!--注意更改为自己的密码-->
                <property name="password" value="123456"></property>
            </dataSource>
        </environment>
    </environments>
    <!--注册Mapper-->
      <mappers>
      
    </mappers>
</configuration>

4.创建接⼝以及对应的 Mapper.xml、注册Mapper
1.创建接⼝

package com.yt.mapper;

import com.yt.pojo.Dome;
import java.util.List;
public interface DomeI {
    //增
    public int insertDome(Dome dome);
    //删
    public int deleteDome(int id);
    //改
    public int updateDome(int id,String name,String password);
    //查
    public List<Dome> findAll();
}

2.创建Mapper.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="com.yt.mapper.DomeI">
    <insert id="insertDome" parameterType="com.yt.pojo.Dome">
    insert into dome (name,password) values(#{name},#{password})
    </insert>
    <delete id="deleteDome" parameterType="int">
        delete from dome where id=#{id}
    </delete>
    <update id="updateDome" >
       //使用param1,param2或arg0,arg1 同时注意传参顺序
       update dome set name = #{param2},password = #{param3} where id = #{param1}
    </update>
    <select id="findAll" resultType="com.yt.pojo.Dome">
        select * from dome
    </select>

</mapper>>

注意:
Mapper.xml 若不在resources的子目录下
需要在pom.xml内添加以下配置(maven配置大于一切,maven默认只读resources下的文件)

<build>
    <resources>
      <resource>
        <directory>src/main/java</directory>
        <includes>
          <include>**/*.xml</include>
        </includes>
      </resource>
    </resources>
  </build>

Mapper.xml :
namespace 为接⼝的全类名。
statement 的 id 为接口中对应的方法名。
statement 的 parameterType 和接口中对应⽅法的参数类型⼀致。
statement 的 resultType 和接口中对应⽅法的返回值类型⼀致。

类型别名可为 Java 类型设置一个缩写名字。
它仅用于 XML 配置,意在降低冗余的全限定类名书写。 可在Mybatis 全局配置文件 config.xml 中配置进行如下配置:

<typeAliases>
  <typeAlias alias="Dome" type="com.yt.pojo.Dome"/>
</typeAliases>

字符串 #{ }内使用param1,param2或arg0,arg1 同时注意传参顺序

3.在Mybatis的配置文件中注册Mapper

<mappers>
    <mapper resource="Mapper/DomeMapper.xml"></mapper>
</mappers>

5.调用接⼝的代理对象完成操作

package com.yt.test;

import com.yt.mapper.DomeI;
import com.yt.pojo.Dome;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

import java.io.InputStream;
import java.util.List;
public class DomeTest {
    public static void main(String[] args) {
        //通过Reader对象读取Mybatis映射⽂件
        InputStream inputStream= DomeTest.class.getClassLoader().getResourceAsStream("config.xml");
        SqlSessionFactoryBuilder sqlSessionFactoryBuilder=new SqlSessionFactoryBuilder();
        //通过SqlSessionFactoryBuilder对象创建SqlSessionFactory对象
        SqlSessionFactory sqlSessionFactory=sqlSessionFactoryBuilder.build(inputStream);
        // 获取当前线程的SQLSession
        SqlSession sqlSession=sqlSessionFactory.openSession();
        //通过SQLSession读取映射⽂件中的操作编号,从⽽读取SQL语句
        DomeI domeI=sqlSession.getMapper(DomeI.class);
/*      //向表中添加数据        
        Dome dome=new Dome("admin","123");
        System.out.println(domeI.insertDome(dome));
        sqlSession.commit();*/
/*      //删除表中数据        
        System.out.println(domeI.deleteDome(1));
        sqlSession.commit();*/
/*      //修改表中数据
        System.out.println(domeI.updateDome(1,"root","000"));
        sqlSession.commit();*/
        //查询表种数据
        List<Dome> list=domeI.findAll();
        for(Dome dome:list){
            System.out.println(dome);
        }
        sqlSession.close();
    }
}

会改变数据表内容的操作都要进行事务提交( sqlSession.commit() )
即增、删、改需要提交事务。
完结
如果有问题或者有建议,评论区见!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值