mybatis学习记录:搭建一个简单的mybatis项目(idea版)

步骤:

实现步骤:
0.创建学生表(id,name,email,age)
1.新建maven项目
2.修改pom.xml
1)加入依赖mybatis依赖,mysql驱动,junit
2)在加入资源插件
3.创建实体类student。定义属性,属性名和列名保持一致
4.创建DAO接口,定义操作数据库的方法.
5.创建xml文件(mapper文件),写SQL语句。
mybatis框架推荐是把sql语句和java代码分开
Mapper文件:定义和Dao接口在同一目录,一个表一个Mapper文件.
6.创建mybaties的主配置文件(xml文件):有一个,放在Resources目录下
1)定义创建连接实例的数据源(DataSource)对象
2)指定其他映射器文件的位置
7.创建测试的内容
使用main方法,测试mybatis访问数据库
也可以使用junit访问数据库

一、数据库

创建学生表
在这里插入图片描述

create database springdb
create table student
(
	id int null,
	name varchar(80) null,
	email varchar(80) null,
	age int null,
	constraint table_name_pk
		primary key (id)
);

赋值:
在这里插入图片描述

二、maven配置文件

1、新建一个空的Maven项目,删掉src文件夹(个人习惯),再新建maven模块
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
pom.xml:

<?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>com.vvu</groupId>
    <artifactId>ch01-first</artifactId>
    <version>1.0-SNAPSHOT</version>


    <!--依赖列表-->
    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.11</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.5.2</version>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.21</version>
        </dependency>
    </dependencies>

    <!--资源插件: 处理src/main/java目录中的xml文件-->
    <build>
        <resources>
            <resource>
               <directory>src/main/java</directory><!--所在目录-->
                <includes><!--包括目录下的.properties,.xml 文件都会扫描到-->
                    <include>**/*.xml</include>
                    <include>**/*.properties</include>
                </includes>
                <filtering>false</filtering>
            </resource>
        </resources>

        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.1</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>

在这里插入图片描述

三、Java文件

1、实体类(entity)
Student.class

package com.vvu.entity;

public class Student {

    //属性名跟列名一致
    private int id;
    private String name;
    private String email;
    private int age;

    @Override
    public String toString() {
        return "Student{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", email='" + email + '\'' +
                ", age=" + age +
                '}';
    }

    public Student() {
    }

    public Student(int id, String name, String email, int age) {
        this.id = id;
        this.name = name;
        this.email = email;
        this.age = age;
    }


    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 getEmail() {
        return email;
    }

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

    public int getAge() {
        return age;
    }

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


}

2、dao包
接口:StudentDao

package com.vvu.dao;

import com.vvu.entity.Student;

public interface StudentDao {

    //查询一个学生
    Student selectStudentById(Integer id);
}

mapper文件:StudentDao.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.vvu.dao.StudentDao">

    <!-- 1.约束文件
           Http://mybatis.org/dtd/mybati-3-mapper.dtd
           约束文件作用:定义和限制当前文件中可以使用的标签和属性,以及标签出现的顺序.
         2.mapper是根标签
           namespace:命名空间,必须有值,不能为空。唯一值.
                      推荐使用DAO接口的全限定名称.
                 作用:参与识别sql语句的作用.
         3.在mapper里面可以写<insert> ,<update>,<delete>,select>等标签。
           <insert>里面是insert语句,表示执行的insert操作
           <update>里面是 update语句
           <DELETE>里面是删除语句
           <select>里面是select语句
-->
<!--    <select id="selectBlog" resultType="Blog">-->
<!--        select * from Blog where id = #{id}-->
<!--    </select>-->

    <!--查询一个学生student

    <select>:表示查询操作,里面是select语句
    id:要执行的sql语句的唯一标识,是一个自定义字符串。推荐使用道接口中的方法名称
    resultType:告诉mybatis,执行sql语句,把数据赋值给那个类型的java对象。resultType的值现在使用的java对象的全限定名称

    -->

    <!--查询一个学生student-->
    <select id="selectStudentById" resultType="com.vvu.entity.Student">
        select id,name,email,age from student where id=1001
    </select>
</mapper>

四、MyBatis配置文件

参考:mybatis官网
在这里插入图片描述

在这里插入图片描述

主配置文件:放在resources包
mybatis.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.cj.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/springdb?userUnicode=true&amp;characterEncoding=utf-8&amp;serverTimezone=GMT%2B8"/>
                <property name="username" value="root"/>
                <property name="password" value="123456"/>
            </dataSource>
        </environment>
    </environments>

    <!--
        指定其他mapper程序文件的位置:
        其他其他mapper程序文件目的是找到其他文件的sql语句
    -->
    <mappers>
        <!--
            使用mapper的resource属性指定mapper文件的路径。
            这个路径是从target/classes路径开启的

            使用注意:
            resource=“mapper文件的路径,使用 / 分割路径”
            一个mapper resource指定一个mapper文件
        -->
        <mapper resource="com/vvu/dao/StudentDao.xml"/>
    </mappers>
</configuration>

注意:这里本地数据库是MySQL,版本8.0以上,maven添加的依赖也要是8.0以上
在这里插入图片描述
所以,这里Driver路径多了"cj",

另外,需要注意时区问题:参考jdbc连接MySQL时区问题

五、测试一下

test包
在这里插入图片描述

package com.vvu;

import com.vvu.entity.Student;
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 org.junit.Test;

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

public class MyTest {

    //测试
    @Test
    public void testSelectStudentById() throws IOException {
        //调用mybatis某个对象的方法,执行mapper文件中的sql语句
        //mybatis核心类:SqlSessionFactory

        //1、定义mybatis主配置文件的位置,从类路径开始的相对路径
        String config = "mybatis.xml";
        //2、读取主配置文件。使用mybatis框架中的Resources类
        InputStream inputStream = Resources.getResourceAsStream(config);
        //3、创建SqlSessionFactory对象,使用SqlSessionFactoryBuilder类
        SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(inputStream);
        //4、获得SqlSession对象
        SqlSession session = factory.openSession();
        //5、指定要执行的sql语句的 id
        //   sql的id = namespace + "." + select|update|insert|delete标签的id属性值
        String sqlId = "com.vuu.dao.StudentDao" + "." + "selectStudentById";

        //6、通过SqlSession的方法,执行sql语句
        Student student = session.selectOne(sqlId);
        System.out.println("使用mybatis查询一个学生:"+student);

        //7、关闭SqlSession对象
        session.close();

    }
}

运行结果:
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值