idea版mybatis的入门及环境配置

idea版mybatis的入门及环境配置


#简单来说,MySQL是jdbc的升级,将更多的注意力放在编写MySQL语句上,

这是我在b站上学习mybatis框架时遇到的问题,说实话卡了挺长时间了,基础不好,查了很多资料,试了很多方法才得以解决,鄙人确实比较菜

遇到的问题:

这只是其中一个问题,其他的没记录,就这一个保存下来了
Exception in thread “main” org.apache.ibatis.exceptions.PersistenceException:
Error querying database. Cause: java.sql.SQLException: Error setting driver on UnpooledDataSource. Cause: java.lang.ClassNotFoundException: Cannot find class: com.mysql.cj.jdbc.Driver
The error may exist in com/lz/dao/IUser.xml
The error may involve com.lz.dao.IUser.findAll
The error occurred while executing a query在这里插入图片描述

步骤;

项目的分层
这是项目的框架

  1. 创建MySQL表 ,随便创建一个User表就行;
  2. 在File中新建一个maven工程 只需下一步,不需要使用任何模板;
  3. 在pom.xml中添加依赖
<packaging>jar</packaging>
    <dependencies>
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.5.2</version>
        </dependency>
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.12</version>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.6</version>
        </dependency>
    </dependencies>
  1. 在src->main->java下创建包和实体类User我这里是com.lz.domain.User.class。其中 set,get,tostring方法要全;
package com.lz.domain;

public class User {
    private Integer uid;
    private String uname;
    private Integer upass;
    private Integer uphone;

    public User() {
    }

    public User(Integer uid, String uname, Integer upass, Integer uphone) {
        this.uid = uid;
        this.uname = uname;
        this.upass = upass;
        this.uphone = uphone;
    }

    public Integer getUid() {
        return uid;
    }

    public void setUid(Integer uid) {
        this.uid = uid;
    }

    public String getUname() {
        return uname;
    }

    public void setUname(String uname) {
        this.uname = uname;
    }

    public Integer getUpass() {
        return upass;
    }

    public void setUpass(Integer upass) {
        this.upass = upass;
    }

    public Integer getUphone() {
        return uphone;
    }

    public void setUphone(Integer uphone) {
        this.uphone = uphone;
    }

    @Override
    public String toString() {
        return "User{" +
                "uid=" + uid +
                ", uname='" + uname + '\'' +
                ", upass=" + upass +
                ", uphone=" + uphone +
                '}';
    }
}

  1. 创建实体类User的方法接口IUserDao
package com.lz.dao;

import com.lz.domain.User;

import java.util.List;

public interface IUser {
    List<User> findAll();
}
。xml
  1. 在resources根目录下创建SQLMapConfing
    这里要换成自己的数据库名和密码
<?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="mysql">
        <!-- 配置mysql环境 -->
        <environment id="mysql">
            <!-- 配置事物类型-->
            <transactionManager type="JDBC"></transactionManager>
            <!-- 配置数据源(连接池)-->
            <dataSource type="POOLED">
                <!-- 配置连接数据库的基本信息-->
                <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/test"/>
                <property name="username" value="root"/>
                <property name="password" value="12345"/>
            </dataSource>
        </environment>
    </environments>
    <!-- 指定映射配置文件的位置(xml配置方式用于resource来指定)-->
    <mappers>
        <mapper resource="com/lz/dao/IUser.xml"/>
    </mappers>
</configuration>

  1. 同样在resources根目录下创建com.lz.dao.IUserDao.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.lz.dao.IUser">
    <select id="findAll" resultType="com.lz.domain.User">
        select * from user
    </select>
</mapper>

  1. 添加log4j的配置文件log4j.properties
log4j.rootLogger=debug, stdout, R

log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout

# Pattern to output the caller's file name and line number.
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] (%F:%L) - %m%n

log4j.appender.R=org.apache.log4j.RollingFileAppender
log4j.appender.R.File=example.log

log4j.appender.R.MaxFileSize=100KB
# Keep one backup file
log4j.appender.R.MaxBackupIndex=5

log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%p %t %c - %m%n


  1. 编写测试类Test,最好在test->java下
import com.lz.dao.IUser;
import com.lz.domain.User;
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;
import java.sql.SQLException;
import java.util.List;

public class Test {
    public static void main(String[] args) throws IOException, SQLException {
        //读取配置文件
        InputStream in = Resources.getResourceAsStream("SqlMapConfig.xml");
        //创建SqlSessionFactory工厂
        SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
        SqlSessionFactory factory = builder.build(in);
        //使用工厂生产SqlSession对象
        SqlSession sqlSession = factory.openSession();
        //使用Sqlsession创建Dao接口的代理对象
        IUser iUser = sqlSession.getMapper(IUser.class);
        //使用代理对象执行方法
        List<User> list = iUser.findAll();
        for(User user : list){
            System.out.println(user.toString());
        }
        //释放资源
        sqlSession.close();
        in.close();
    }}

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

注意事项

  1. 你所建的MySQL表中的字段和数据类型要与实体类中的一致
  2. 实体类接口IUserDao.java与IUserDao.xml的包分层要一致,最好一层一层建
  3. 连接数据库时要注意数据库名,密码正确,以及注意时区,否则及容易连接错误,
  4. 如果你的MySQL版本时8以上,则在增加依赖时版本要对应,这个问题不容易发现,
    我在这儿卡了好久,和网上教程对了好久,却忽视了可能由于MySQL版本不一样,导致依赖失效,连接不了数据库
    在这里插入图片描述
  5. 数据库的驱动
<property name="driver" value="com.mysql.jdbc.Driver"/>

前面的已经弃用,最好用后者

<property name="driver" value="com.mysql.cj.jdbc.Driver"/>

源码我会保留,有需要的小伙伴可以QQ我824011402;

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值