吃个饭的时间就让你搭建完Mybatis框架

目录

一.准备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配置映射文件位置

最后

六.创建测试类

运行成功查出数据


一.准备Maven工程

打开IDEA创建一个新的项目

二.准备数据库

安装Mysql步骤:https://blog.csdn.net/weixin_39332529/article/details/106262264

安装后默认数据库。

我们做项目更常用Navicat,所以我们就使用Navicat来创建一个新的表吧!

1.建立链接MySQL

2.新建数据库mybatis建立名为user的表

3.插入数据

三.下载Mybatis.jar包并导入工程

1.导入方式用jar包方式

<packaging>jar</packaging>

2.导入Mybatis-保存

<dependencies>
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.5.3</version>
        </dependency>
</dependencies>

有人说我保存了怎么看不到导入成功的jar包呢,因为你少了这关键一步

3.刷新

这样就能看到导入相同版本的jar包了

4.扩展

数据库的操作需要mysql-connector-java

需要日志的部分需要导入log4j

需要单元测试需要导入junit

 

四.创建实体类

1.新建

java开发都是基于实体类的,于是就在java目录下新建

2.实体类User

3.实现一个Serializable的序列化接口

public class User implements Serializable 

4.声明与数据库相同的字段

5.生成get、set方放和tosting

右键选择Generate->Getter and Setter

右键Generate->tostring,全选点击OK

五.配置主配置文件和映射文件

铺路工作-先创建完成Dao接口:

1.在操作数据库的时候都是基于DAO,于是创建一个DAO的包,在里面新建一个接口

它也就是我们的用户的持久层接口

2.在里面提供一个方法来查询

List<User> findALL();

3.在resources下新建一个SqlMapConfig.xml文件

这里写的是主配置文件内容和映射配置文件内容

4.xml文件要有声明有约束

4.1Config的约束头部信息内容

<?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">

导入位置:

4.2Mapper的约束头部信息内容

导入前先创建映射配置文件IUseDao.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">

导入位置:

这个文件就是针对IUserDao的一个配置。下面还要有关于它的映射地址,映射地址如何写接着往下看5.2

铺路准备工作完毕,开始配置环境

5.1主配置文件内容SqlMapConfig.xml

<configuration>
    <!--配置环境-->
    <environments default="mysql">
        <!--配置mysql的环境-->
        <environment id="mysql">
            <!--配置事务类型-->
            <transactionManager type="JDBC"></transactionManager>
            <!--配置数据源(连接池)-->
            <dataSource type="POOLED">
                <!--配置链接数据库的4个基本信息-->
                <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/mybatis?useUnicode=true&amp;characterEncoding=UTF-8&amp;serverTimezone=UTC"/>
                <property name="username" value="root"/>
                <property name="password" value="root"/>
            </dataSource>
        </environment>
    </environments>
</configuration>

 

扩展:要在配置链接数据库中的Url地址中加入关键代码

?useUnicode=true&amp;characterEncoding=UTF-8&amp;serverTimezone=UTC

原因:

DBC 与 MySQL 的这种误解,导致出现了数据库实际存储的时间戳,与业务系统取到的值差了 13 或者 14 个小时,这个时间与美中是(=13)否(=14)采用夏令时息息相关。

当 JDBC 与 MySQL 开始建立连接时,会调用 com.mysql.cj.jdbc.ConnectionImpl.initializePropsFromServer() 获取服务器参数,其中我们看到调用 this.session.configureTimezone() 函数,它负责配置时区。我们的JDBC与MySQL连接时,由于时区不一致就出现了这种错误。

5.2配置映射文件位置

<mappers>
        <mapper resource="com/example/dao/IUserDao.xml"></mapper>
</mappers>

映射配置文件指的就是每个DAO独立的配置文件,这里的路径就是上面4.2新建的文件位置

 

最后

也是在这个文件里写我们的SQL语句,前提是在mapper标签中写入dao的全限定类名,回到IUserDao.xml位置

<mapper namespace="org.example.dao.IUserDao">
    <!--配置查询所有 -->
    <select id="findAll" resultType="org.example.domain.User">
        select * from user;
    </select>
</mapper>

写入位置:

注意:

要添加一个返回类型,也就是说查询完了要封装到哪里去呢?用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<User> users = userDao.findAll();
        for (User user : users){
            System.out.println(user);
        }
        //6.释放资源
        session.close();
        in.close();
    }
}

运行成功查出数据

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章