2020-12-01 Mybatis 学习笔记 (四)mybatis 入门案例

(四)mybatis 入门案例

在test的java文件夹下面创建一个test类
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
创建一个main函数实现mybatis的查询,代码如下

package com.js.test;

import com.js.dao.UserDao;
import com.js.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.util.List;
import java.util.ResourceBundle;

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

右键执行Main方法
在这里插入图片描述
执行main方法时出现下面的错误
在这里插入图片描述
原因是项目运行的时候,jdk版本与本地的版本不一致。
IDEA—>File—>project structure,检查了一下project和moduels中jdk版本与本地对比,发现不一致
在这里插入图片描述
在这里插入图片描述
修改完毕之后到Settings–>Bulid, Execution,Deployment–>java Compiler,Target bytecode version设为本地Java版本(可以在Default Settings中把Project bytecode version 一劳永逸地配置成本地Java版本)
在这里插入图片描述
在这里插入图片描述
再一次运行main方法
在这里插入图片描述
还是报错
在这里插入图片描述
那么需要在自己的pom.xml文件指定编译的jdk版本,

<properties>     
    <maven.compiler.source>11</maven.compiler.source>
    <maven.compiler.target>11</maven.compiler.target>
</properties>

在这里插入图片描述
还是编译失败,最后来个绝招
在这里插入图片描述
终于编译成功了,虽然还是有错误
在这里插入图片描述
主要错误信息:

Error querying database.  Cause: java.sql.SQLException: The server time zone value '�й���׼ʱ��' is unrecognized or represents more than one time zone. You must configure either the server or JDBC driver (via the 'serverTimezone' configuration property) to use a more specific time zone value if you want to utilize time zone support.

解决方案:
修改SqlMapConfig.xml文件关于url连接设定内容
在这里插入图片描述
url后加入?serverTimezone=UTC即可解决
在这里插入图片描述
再一次执行main方法,擦了,还有警告信息
此时就想引吭高歌一曲:
刚翻过了几座山, 又越过了几条河。 崎岖坎坷怎么它就这么多!

可以科普一下exit code,在大部分编程语言中都适用:
exit code 0 表示程序执行成功,正常退出
exit code 1 表示程序执行执行过程中遇到了某些问题或者错误,非正常退出
在这里插入图片描述
主要错误信息:

Loading class `com.mysql.jdbc.Driver'. This is deprecated. The new driver class is `com.mysql.cj.jdbc.Driver'. The driver is automatically registered via the SPI and manual loading of the driver class is generally unnecessary.

提示信息表明数据库驱动com.mysql.jdbc.Driver’已经被弃用了、应当使用新的驱动com.mysql.cj.jdbc.Driver’

SqlMapConfig.xml 用最新的数据库驱动

//原驱动文件
<property name="driver" value="com.mysql.jdbc.Driver"/>
//更改为
<property name="driver" value="com.mysql.cj.jdbc.Driver"/>

在这里插入图片描述
再一次执行main方法,终于没红,但是我测试类要打印的记录控制台怎么没出来,只打出了类名
我好男啊
在这里插入图片描述
DEBUG了一下,数据确实都检索出来了,检索没问题。
在这里插入图片描述

总结
第一步:读取配置文件
第二部:创建SqlSessionFactory工厂
第三步:创建SqlSession
第四步:创建Dao接口的代理对象
第五步:执行dao中的方法
第六步:释放资源

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值