Home Archives 2021

Archives

0 55

 

今天开始学习Mybatis,试图写出一个Mybatis项目,遇到了不少坑,花费了不少时间,特此记录;

 

一、对于Mybatis的初步理解:

持久化框架,简化对持久层(Dao/Mapper)层的操作;

 

二、学习思路:

  • 搭建环境
    • 数据库编写User类 
  • 导入依赖和jar包
    •  Maven导入org.mybtais依赖和junit依赖
    • Mysql8.0jar包
    • 重点:build中配置resources,防止资源导出失败!(约定大于配置,配置文件可能不生效)
  • 编写代码
    • 实体类User
    • Dao接口(Mapper接口)UserDao
    • 接口实现类UserMapper.xml
  • Junit测试

2.1搭建环境导入依赖及Jar包

Mybatis依赖:

<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.6</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>

Build配置静态资源导出:

<build>
<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>
</build>

Junit依赖:

<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>

Mybatis核心配置文件mybatis-config.xml:

<?xml version="1.0" encoding="UTF8" ?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">


<configuration>
    <environments default="mysqlOk">
        <environment id="mysqlOk">

            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/mysql?useSSL=false&amp;useUnicode=true&amp;characterEncoding=UTF-8&amp;serverTimezone=Asia/Shanghai&amp;allowPublicKeyRetrieval=true"/>
                <property name="username" value="root"/>
                <property name="password" value="123456789"/>
            </dataSource>
        </environment>
    </environments>


    <mappers>
        <mapper resource="com/yang/dao/UserMapper.xml"></mapper>
    </mappers>
</configuration>

2.2代码编写

项目结构:

2.2.1实体类User

  • 属性名对应数据库字段名
  • 设置GetSet方法(或者使用lambok@Data)

2.2.2接口Dao(面向接口编程)

2.2.3接口实现类UserMapper.xml配置文件(具体完成的sql操作)

2.2.4MybatisUtils类完成sqlSessionFactory生产–>sqlSession,返回sqlSession给测试类

2.2.5测试类UserDaoTest

 

三、学习总结:

坑点:

1.测试类中 sqlSession.selectList(“”)引号中的方法全限定名不能写错!!!(写错一个大小写卡了几个小时);

2.必须配置Build中的资源过滤,否则Mybatis配置文件(具体的sql操作)无法生效

不足:

1.还未彻底理解Mybatis的工作机制,只知道它简化了JDBC操作,但似乎也要写SQL语句,目前无法判断其优势;

注意点:

1.只需要动操作和接口

2.namespace:必须关联实例接口,必须和Dao/Mapper中的包名一致

3.selsect:

  • id就是对应的namespace中的方法名!
  • resultType:sql语句执行的返回值!
  • paramterType:参数类型!

4.只需要改动:

  • 1.接口
  • 3.测试类
  • 2.Mapper