Idea第一个mybatis程序,必跑通

idea中跑一个最简单的mybatis查询程序(基于注解)

实验时间:2021-10-20

步骤概述:

  1. 准备环境:
    mysql数据库5.7,一定要记住root密码;
    navicat(或者别的dbms,或者直接在mysql的shell中建库建表),在navicat中可以检验是否安装好mysql;
    mysql对应的jar包,目前官网上下载到的是版本8,在配置驱动时会和一些老版教程有些出入,这是后话,如果maven中自动导的话只有6.0.6,不知道是不是我的idea内置的maven的问题;
    mybatis的jar包,也可以用maven导
    junit单元测试,可以用maven导,或者自带jar包
  2. 建一个普通的maven项目
  3. 建数据库,表,示例数据
  4. 创建目录结构,添加mybatis-config.xml配置文件,db.properties文件
  5. 运行测试。

详细步骤:

mysql安装略,最好安5.7版本,而且用msi文件安装,比较不容易犯错,创建一个mybatis01的库,新建一张表,添加一条数据如下:在这里插入图片描述
在网上可以找到类似的jar包,下载到某个文件夹下,备用
在这里插入图片描述
mybatis和junit可以用maven下载的:
复制这些东西到pom.xml的dependencies标签内


<dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>3.8.2</version>
            <scope>test</scope>
        </dependency>
        <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->

        <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.4.6</version>
        </dependency>

之后应该在此处发现maven下载的包
在这里插入图片描述

自己新建一个lib目录,和src同级,把mysql驱动复制进去,右键add as library
在这里插入图片描述
按如下目录建包,类,xml,
在这里插入图片描述
如何新建xml文件和properties文件?只要new一个普通文件,自己添加后缀就行了
在这里插入图片描述
不要点下面那个XML Configuration File!!

db.properties中写如下内容,第一行的驱动要写最新的,第二行的端口号和数据库名可能要修改,useSSL如果不写会爆红,密码填自己的

jdbc.driver=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/mybatis01?useSSL=true
jdbc.username=root
jdbc.password=

mybatis-config.xml中写如下内容,注意mapper标签就行了,别的都是死的

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

<!-- configuration核心配置文件-->
<configuration>
  <properties resource="db.properties"></properties>

  <environments default="development">
    <environment id="development">
      <transactionManager type="JDBC"></transactionManager>
      <dataSource type="POOLED">
        <property name="driver" value="${jdbc.driver}"/>
        <property name="url" value="${jdbc.url}"/>
        <property name="username" value="${jdbc.username}"/>
        <property name="password" value="${jdbc.password}"/>
      </dataSource>
    </environment>
  </environments>
  <mappers>
  <!--这里有改动处,如果用mapper类,就写class,用xml,用resource -->
    <mapper class="com.junko.mapper.StudentInfoMapper"></mapper>
  </mappers>
  </configuration>

实体类,属性照抄列名,重写一个toString方法

package com.junko.bean;



public class Student {
    int id;
    String sname;
    String sdescrip;

    @Override
    public String toString() {
        return "Student{" +
                "id=" + id +
                ", sname='" + sname + '\'' +
                ", sdescript='" + sdescrip + '\'' +
                '}';
    }
}

mapper是一个接口,注意不用写方法体!加注解不报错就说明mybatis导入正常

package com.junko.mapper;

import com.junko.bean.Student;
import org.apache.ibatis.annotations.Select;

public interface StudentInfoMapper {

    @Select("select * from tb_student where sid = #{id}")
    public Student selectStudentById(int id);
}

test类这样写

package com.junko.test;

import com.junko.bean.Student;
import com.junko.mapper.StudentInfoMapper;
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.InputStream;

public class test {

    private SqlSessionFactory sqlSessionFactory;

    private SqlSession sqlSession;

    @Test
    public void selectStudentByID(){
        String resource = "mybatis-config.xml";
        InputStream inputStream;
        try{
            inputStream = Resources.getResourceAsStream(resource);
            sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
            sqlSession = sqlSessionFactory.openSession();
        }
        catch (Exception e){
            e.printStackTrace();
            System.out.println(
                    "error"
            );
        }
        StudentInfoMapper studentInfoMapper = sqlSession.getMapper(StudentInfoMapper.class);
        Student student = studentInfoMapper.selectStudentById(1);
        System.out.println(student);
    }
}

正常结果:

在这里插入图片描述

可能的错误分析:

在这个例子中,因为没有用到xml做Mapper,那就只有db.properties和mybatis-config.xml放的位置可能出错。
在这里插入图片描述

首先,放在resource文件夹下是绝对没问题的
如果把两个文件放在src下,test类中加上src也会找不到,所以结论是老老实实放在resource下吧。
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值