idea+maven搭建Mybatis框架

idea+maven搭建Mybatis框架

步骤:
1、创建maven项目
2、导入相关jar包
3、创建数据库、表、数据
4、创建类和配置mybatis-config配置文件
5、测试
6、解决报错

一、创建maven项目

1、创建项目

在这里插入图片描述

2、保存路径和项目名

在这里插入图片描述

3、导入maven相关的包

在这里插入图片描述

4、maven项目创建完成

在这里插入图片描述

二、导入Mybatis相关的jar包

1、找到<dependencies>标签导包`

在这里插入图片描述

2、导包 注意mysql的版本

⬇️⬇️⬇️⬇️⬇️⬇️

    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis</artifactId>
      <version>3.5.1</version>
    </dependency>

    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>8.0.11</version>
    </dependency>

创建数据库

在mysql新建 demo01的库,user的表

# 键库 库名demo01
CREATE DATABASE demo01;

# 键表 表名user
create table user(
    id int primary key auto_increment not null comment '主键 自增长',
    username varchar(20) not null comment '姓名不能为空',
    password varchar(20) not null comment '密码不能为空'
)comment '用户表';

# 插入数据
insert into user(username,password) value
    ("张三","123456"),
    ("哈哈","12346"),
    ("李四","1234"),
    ("王二","123");

四、创建类 ( 这一项细心注意事项,踩的坑都在这了)

1、创建java文件夹、resources文件夹,分别标记为源文件和资源文件。如下图

在这里插入图片描述

2、创建目录结构如下,下标对应,后面附上源码

在这里插入图片描述

2、UserDao.java
package com.ytg.Dao;

import com.ytg.entity.User;
import java.util.List;

public interface UserDao {

    //实现查询全部用户的功能
    public List<User> getUserList();
}

3、UserMapper.xml 
	注意:
		1、namespace=“UserDao接口”
		2、select id = “接口里面的getUserList方法”
		3、select * from demo01.User (sql语句,demo01是库名)
		4、resultType=“返回参数的类型是User类的类型" 
<?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.ytg.Dao.UserDao">
    <select id="getUserList" resultType="com.ytg.entity.User">
        select * from demo01.User
    </select>
</mapper>
5、User.java 用户的实体类
package com.ytg.entity;


public class User{
    private Integer id;
    private String username,password;

    User(){}
    public User(Integer id, String username, String password) {
        this.id = id;
        this.username = username;
        this.password = password;
    }

    public Integer getId() {
        return id;
    }

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

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

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

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


8、Mybatils.java 工具
	注意Mybatis-config.xml位置
package com.ytg.utils;

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.IOException;
import java.io.InputStream;

/*
 *   mybatis工具类
 *   返回sqlsession
 *   1、xml通过配置文件获取到SqlSessionFactron
 *   2、返回Sqlsession  (用来执行sql语句)
 * */

public class Mybatils {
    private static SqlSessionFactory build;
    static {
        try {
            String resources = "Mybatis-config.xml";
            InputStream ra = Resources.getResourceAsStream(resources);
            build = new SqlSessionFactoryBuilder().build(ra);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public static SqlSession getSqlSession(){
        return build.openSession();
    }
}

10、 Mybatis-conig.xml  核心配置文件
	注意:我的mysql版绷是8.0以上的,8.0 以下的把
	<property name="driver" value="com.mysql.cj.jdbc.Driver"/>
	这行 改为(没有cj)
	<property name="driver" value="com.mysql.jdbc.Driver"/>
	-------
	<mapper>的resource指向对应Dao的“实现类”这里是路径用“/”
	------<property name="url" 这行
	jdbc:mysql://localhost:3306/demo01 的demo01是刚刚键的库名
<?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/demo01?useSSL=false&amp;allowPublicKeyRetrieval=true&amp;serverTimezone=UTC"/>
                <property name="username" value="root"/>
                <property name="password" value="123456"/>
            </dataSource>
        </environment>
    </environments>

    <!-- 每一个mapper.xml都需要在mybatis核心配置文件中注册(当前文件中)! -->
    <mappers>
        <mapper resource="com/ytg/Dao/UserMapper.xml" />
    </mappers>

</configuration>

五、测试

在test测试类里面新建一个test.java测试方法

在这里插入图片描述

test.java 测试
package com.ytg.test;

import com.ytg.Dao.UserDao;
import com.ytg.entity.User;
import com.ytg.utils.Mybatils;
import org.apache.ibatis.session.SqlSession;

import java.util.List;

public class test {
    public static void main(String[] args) {

        //获取到工具类的Session对象
        SqlSession sqlSession = Mybatils.getSqlSession();

        //执行UserMapper里面的sql语句
        UserDao mapper = sqlSession.getMapper(UserDao.class);
        List<User> userList = mapper.getUserList();
        for (User u : userList){
            System.out.println(u);
        }

        //关闭sqllSession减少资源开销

    }
}

最后右键运行

六、解决报错

1、找不到资源文件
报错信息如下:
### Error building SqlSession.
### The error may exist in com/ytg/Dao/UserMapper.xml
### Cause: org.apache.ibatis.builder.BuilderException: Error parsing SQL Mapper Configuration. Cause: java.io.IOException: Could not find resource com/ytg/Dao/UserMapper.xml
Exception in thread "main" java.lang.ExceptionInInitializerError
	at com.ytg.test.test.main(test.java:14)
Caused by: org.apache.ibatis.exceptions.PersistenceException: 
### Error building SqlSession.
### The error may exist in com/ytg/Dao/UserMapper.xml
### Cause: org.apache.ibatis.builder.BuilderException: Error parsing SQL Mapper Configuration. Cause: java.io.IOException: Could not find resource com/ytg/Dao/UserMapper.xml
	at org.apache.ibatis.exceptions.ExceptionFactory.wrapException(ExceptionFactory.java:30)
	at org.apache.ibatis.session.SqlSessionFactoryBuilder.build(SqlSessionFactoryBuilder.java:80)
	at org.apache.ibatis.session.SqlSessionFactoryBuilder.build(SqlSessionFactoryBuilder.java:64)
	at com.ytg.utils.Mybatils.<clinit>(Mybatils.java:23)
	... 1 more
Caused by: org.apache.ibatis.builder.BuilderException: Error parsing SQL Mapper Configuration. Cause: java.io.IOException: Could not find resource com/ytg/Dao/UserMapper.xml
	at org.apache.ibatis.builder.xml.XMLConfigBuilder.parseConfiguration(XMLConfigBuilder.java:121)
	at org.apache.ibatis.builder.xml.XMLConfigBuilder.parse(XMLConfigBuilder.java:98)
	at org.apache.ibatis.session.SqlSessionFactoryBuilder.build(SqlSessionFactoryBuilder.java:78)
	... 3 more
Caused by: java.io.IOException: Could not find resource com/ytg/Dao/UserMapper.xml
	at org.apache.ibatis.io.Resources.getResourceAsStream(Resources.java:114)
	at org.apache.ibatis.io.Resources.getResourceAsStream(Resources.java:100)
	at org.apache.ibatis.builder.xml.XMLConfigBuilder.mapperElement(XMLConfigBuilder.java:371)
	at org.apache.ibatis.builder.xml.XMLConfigBuilder.parseConfiguration(XMLConfigBuilder.java:119)
	... 5 more
因为maven的默认资源文件夹是我们申明的resources文件夹,所以我们写在Dao层的资源文件UserMapper.xml被过滤掉了

在这里插入图片描述
解决办法在maven项目下的pom.xml 里面添加
在这里插入图片描述
在这里插入图片描述

添加类容
<resources>
      <resource>
        <directory>src/main/resources</directory>
        <includes>
          <include>**/*.properties</include>
          <include>**/*.xml</include>
        </includes>
        <filtering>true</filtering>
      </resource>
      <resource>
        <directory>src/main/java</directory>
        <includes>
          <include>**/*.properties</include>
          <include>**/*.xml</include>
        </includes>
        <filtering>true</filtering>
      </resource>
    </resources>
结果

在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值