MyBatis 第一个入门案例(建表到查询)

 

目录:

数据库建表:

执行结果:


  • 加入maven依赖:

在pom.xml中 添加mybatis依赖和mysql驱动

<!--mybatis依赖-->
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis</artifactId>
      <version>3.5.4</version>
    </dependency>

    <!--mybatis驱动-->
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>5.1.9</version>
    </dependency>

 

  • 创建dao接口

定义操作方法:以查询为例

Student01.java

package com.zh.entity;

public class Student01 {

    private Integer id;
    private String name;
    private String email;
    private Integer age;

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public Integer getAge() {
        return age;
    }

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

    @Override
    public String toString() {
        return "Student01{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", email='" + email + '\'' +
                ", age=" + age +
                '}';
    }
}
创建接口Student01Dao.java  操作student01表
package com.zh.dao;

import com.zh.entity.Student01;

import java.util.List;

// 创建接口  操作student01表
public interface Student01Dao {

    //抽象方法 查询student01表中的所有数据
    public List<Student01> selectStudent01();
}

 

  • 创建sql映射文件 ,写接口方法中对应的sql语句

Student01Dao.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.zh.dao.Student01Dao">

    <!-- select 查询

    id 表示执行sql语句的唯一标识,要求使用接口中的方法名

    resultType 表示结果类型,sql语句执行后得到ResultSet,遍历ResultSet得到java对象的类型
    具体值写的是 类型的全限定名称
    -->

    <select id="selectStudent01" resultType="com.zh.entity.Student01">
        select id,name,email,age from student01 order by id
    </select>

</mapper>

<!-- sql映射文件

    1.指定约束文件
    <!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

        mybatis-3-mapper.dtd约束文件名称,拓展名为dtd

    2.约束文件作用:限制、检查在当前文件中出现的标签,属性必须符合mybatis的要求

    3.mapper 是当前文件的根标签
        namespace 叫命名空间,唯一值,要求使用dao接口的全限定名称

    4.在当前文件中,可以使用特定标签,表示数据库特定操作
        <select> 查询
        <update> 更新
        <insert> 插入
        <delete> 删除

-->

 

  • 配置主配置文件mybatis.xml,作用连接数据库指定mapper文件的位置
<?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>
    <!--环境配置:数据库的连接信息

        default: 必须和某个environment的id值一样
            告诉mybatis使用哪个数据库连接信息,也就是访问哪个数据库
    -->
    <environments default="mydev">

        <!--environment 一个数据库信息的配置,环境
            id 一个唯一值,自定义,表示当下环境的名称
        -->
        <environment id="mydev">
            <!--
                transactionManager: mybatis的事务类型
                              type: JDBC (表示使用jdbc中的Connection对象的commit,rollback做事务处理)
            -->
            <transactionManager type="JDBC"/>
            <!--
                daraSource: 表示数据源,连接数据库
                      type: 表示数据库的类型,POOLED表示使用连接池
            -->
            <dataSource type="POOLED">
                <!--
                    driver,user,username,password 是固定的,不能自定义
                -->
                <!--数据库的驱动类名-->
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <!--连接数据库的url字符串-->
                <property name="url" value="jdbc:mysql://localhost:3306/ssh"/>
                <property name="username" value="root"/>
                <property name="password" value="137171"/>
            </dataSource>
        </environment>

        <!--表示线上的数据库,是项目真实使用的库-->
        <environment id="online">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/onlinedb"/>
                <property name="username" value="root"/>
                <property name="password" value="137171"/>
            </dataSource>
        </environment>

    </environments>

    <!--sql mappper(sql映射文件)的位置-->
    <mappers>
        <!-- 一个mapper标签指定一个文件的位置
             从类路径开始的路径信息。target/classes(类路径)
        -->
        <mapper resource="com/zh/dao/Student01Dao.xml"/>
    </mappers>

</configuration>

<!--
    mybatis 的主配置文件 定义了数据库的配置信息,sql映射文件的位置

    1.约束文件
    <!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">

        mybatis-3-config.dtd 约束文件的名称

    2.configuration 根标签

-->

 

  • 使用mybatis的对象SqlSession,执行sql语句
package com.zh;

import com.zh.entity.Student01;
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 java.io.InputStream;
import java.util.List;

public class App {
    public static void main(String[] args) throws Exception {

        //访问mybatis读取student数据

        // 1.定义mybatis主配置文件的名称,从类路径的根开始(target/classes)
        String config = "mybatis.xml";
        // 2.读取主配置文件
        InputStream in = Resources.getResourceAsStream(config);
        // 3.创建SqlSessionFactoryBuilder对象
        SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
        // 4.创建SqlSessionFactory对象
        SqlSessionFactory factory = builder.build(in);
        // 5.获取SqlSession对象
        SqlSession sqlSession = factory.openSession();
        // 6.指定要执行的sql语句标识,sql映射文件中的namespace + "." + 标签的id
        String sqlId = "com.zh.dao.Student01Dao" + "." + "selectStudent01";
        // 7.执行sql,通过sqlId找到
        List<Student01> student01List = sqlSession.selectList(sqlId);
        // 8.输出
        student01List.forEach(student01 -> System.out.println(student01));
        // 9.关闭sqlSession
        sqlSession.close();


    }
}

 

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 游动-白 设计师:上身试试 返回首页