目录
一.准备Maven工程
二.准备数据库
1.建立链接MySQL
2.新建数据库mybatis建立名为user的表
3.插入数据
三.下载Mybatis.jar包并导入工程
1.导入方式用jar包方式
2.导入Mybatis-保存
3.刷新
4.扩展
四.创建实体类
1.新建
2.实体类User
3.实现一个Serializable的序列化接口
4.声明与数据库相同的字段
5.生成get、set方放和tosting
五.配置主配置文件和映射文件
铺路工作-先创建完成Dao接口:
1.在操作数据库的时候都是基于DAO,于是创建一个DAO的包,在里面新建一个接口
2.在里面提供一个方法来查询
3.在resources下新建一个SqlMapConfig.xml文件
4.xml文件要有声明有约束
铺路准备工作完毕,开始配置环境
5.1主配置文件内容SqlMapConfig.xml
5.2配置映射文件位置
最后
六.创建测试类
运行成功查出数据
打开IDEA创建一个新的项目
安装Mysql步骤:https://blog.csdn.net/weixin_39332529/article/details/106262264
安装后默认数据库。
我们做项目更常用Navicat,所以我们就使用Navicat来创建一个新的表吧!
jar
org.mybatis
mybatis
3.5.3
有人说我保存了怎么看不到导入成功的jar包呢,因为你少了这关键一步
这样就能看到导入相同版本的jar包了
数据库的操作需要mysql-connector-java
需要日志的部分需要导入log4j
需要单元测试需要导入junit
java开发都是基于实体类的,于是就在java目录下新建
public class User implements Serializable
右键选择Generate->Getter and Setter
右键Generate->tostring,全选点击OK
它也就是我们的用户的持久层接口
List
这里写的是主配置文件内容和映射配置文件内容
4.1Config的约束头部信息内容
导入位置:
4.2Mapper的约束头部信息内容
导入前先创建映射配置文件IUseDao.xml
导入位置:
这个文件就是针对IUserDao的一个配置。下面还要有关于它的映射地址,映射地址如何写接着往下看5.2
扩展:要在配置链接数据库中的Url地址中加入关键代码
?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC
原因:
DBC 与 MySQL 的这种误解,导致出现了数据库实际存储的时间戳,与业务系统取到的值差了 13 或者 14 个小时,这个时间与美中是(=13)否(=14)采用夏令时息息相关。
当 JDBC 与 MySQL 开始建立连接时,会调用 com.mysql.cj.jdbc.ConnectionImpl.initializePropsFromServer() 获取服务器参数,其中我们看到调用 this.session.configureTimezone() 函数,它负责配置时区。我们的JDBC与MySQL连接时,由于时区不一致就出现了这种错误。
映射配置文件指的就是每个DAO独立的配置文件,这里的路径就是上面4.2新建的文件位置
也是在这个文件里写我们的SQL语句,前提是在mapper标签中写入dao的全限定类名,回到IUserDao.xml位置
写入位置:
注意:
要添加一个返回类型,也就是说查询完了要封装到哪里去呢?用resultType来配置。最后查询完后会把结果集封装到User对象里面
这里的findALL方法就与IUserDao类里查询呼应上了!整个的环境搭建就搭完了
public class MybatisTest {
public static void main(String[] args) throws Exception{
//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接口的代理对象
IUserDao userDao = session.getMapper(IUserDao.class);
//5.使用代理对象执行方法
List users = userDao.findAll();
for (User user : users){
System.out.println(user);
}
//6.释放资源
session.close();
in.close();
}
}