一、介绍
1.1 开发环境
- idea 2018.2.4
- Mysql 5.7.29
- Maven 3.5.4
1.2 什么是框架
比如:一张报名表,因为有了条条框框,所以你只需要在对应的地方填你的个人信息可以了。
假如没有了框架,给你一张白纸,让你填写报名,这肯定是不方便的。
1.3 什么是Mybatis
Mybatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。
Mybatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。
1.4 为什么要用Mybatis
- 简单易学使用人多,方便
- 传统的JDBC代码太复杂了
- sql和代码分离
- 等等
二、入门级程序
2.1 使用Maven导入依赖
-
直接进入网站https://mvnrepository.com/或搜索百度maven,点击第一个
-
搜索需要导入jar包的依赖 (图片仅展示mybatis)
-
点进去之后,在下方选择需要的版本
-
复制maven,粘贴到项目的pom.xml配置文件的标签下即可自动导入
-
所需依赖全部写入项目中pom.xml的文件,如下
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <!-- 模型版本。maven2.0必须是这样写,现在是maven2唯一支持的版本 --> <modelVersion>4.0.0</modelVersion> <!-- 公司或者组织的唯一标志,并且配置时生成的路径也是由此生成, 如com.maiyazhi,maven会将该项目打成的jar包放本地路径:/com/maiyazhi --> <groupId>com.maiyazhi</groupId> <!-- 本项目的唯一ID,一个groupId下面可能多个项目,就是靠artifactId来区分的 --> <artifactId>text01</artifactId> <!-- 本项目目前所处的版本号 --> <version>1.0-SNAPSHOT</version> <dependencies> <!-- 导入JDBC驱动 --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.49</version> </dependency> <!-- 导入Mybatis框架 --> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.4.6</version> </dependency> <!-- 导入Junit单元测试工具 --> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.7</version> </dependency> </dependencies> </project>
2.2 Mybatis的核心XML配置文件(mybatis_config.xml)
XML 配置文件中包含了对 MyBatis 系统的核心设置,包括获取数据库连接实例的数据源(DataSource)以及决定事务作用域和控制方式的事务管理器(TransactionManager)
- 在项目中的resources文件下创建mybatis_config.xml文件,加入配置内容,并更改配置信息
自定义配置如下:
官方配置模板如下:
<?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="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="${driver}"/>
<property name="url" value="${url}"/>
<property name="username" value="${username}"/>
<property name="password" value="${password}"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="org/mybatis/example/BlogMapper.xml"/>
</mappers>
</configuration>
2.3 创建JavaBean(User.class)
在com.maiyazhi目录下创建包名为beans,包下JavaBean名为User
2.4 定义IUserMapper接口,建立配置文件(UserMapper.xml)
接口实现类由原来的UserMapperImpl.java转变成一个Mapper配置文件UserMapper.xml
在mapper包下,定义IUserMapper接口,和抽象方法。(方法功能为:添加用户)
IUserMapper接口如下:
UserMapper.xml如下:
官方文档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="org.mybatis.example.BlogMapper">
<select id="selectBlog" resultType="Blog">
select * from Blog where id = #{id}
</select>
</mapper>
注意:配置完UserMapper.xml,在回到mybatis_config.xml核心配置文件中,申明一下:
2.5 从mybatis_config.xmlX中构建SqlSessionFactory
每个基于 MyBatis 的应用都是以一个 SqlSessionFactory 的实例为核心的。
SqlSessionFactory 的实例可以通过 SqlSessionFactoryBuilder 获得。
而 SqlSessionFactoryBuilder 则可以从 XML 配置文件或一个预先配置的 Configuration 实例来构建出 SqlSessionFactory 实例。
定义一个工具类,用来获取SqlSessionFactor
package com.maiyazhi.utils;
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;
public class MybatisUtils {
private static String resource = "mybatis_config.xml";
private static SqlSessionFactory sqlSessionFactory;
public static SqlSession getSqlSession() throws IOException {
InputStream inputStream = Resources.getResourceAsStream(resource);
sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
return sqlSessionFactory.openSession();
}
}
2.6 测试
在项目文件text下,创建TextUser测试类
package com.maiyazhi;
import com.maiyazhi.beans.User;
import com.maiyazhi.mapper.IUserMapper;
import com.maiyazhi.utils.MybatisUtils;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;
import java.io.IOException;
public class TextUser {
@Test
public void TestAddUser() throws IOException {
SqlSession sqlSession= MybatisUtils.getSqlSession();
IUserMapper userMapper=sqlSession.getMapper(IUserMapper.class);
User user=new User("wang",12);
userMapper.addUser(user);
//更新操作必须提交,如果没有提交的话,不异常也不更新
sqlSession.commit();
sqlSession.close();
}
}
三、遇到的问题总结
3.1 配置文件找不到异常
查看编译过的target->classes路径下没有找到定义的xml配置文件。
maven由于它的约定大于配置,我们之后可能遇到 我们写的配置文件,无法被导出或者生效的问题,解决方案:
在项目的pom.xml文件中标签下,加入下列配置信息:
<build>
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
<filtering>false</filtering>
</resource>
</resources>
</build>
3.2 Cannot find class :User(查找不到User类)
**解决方法:**在配置文件UserMapper.xml中
3.3不建议在没有服务器身份验证的情况下建立SSL连接
Mon Sep 21 20:20:38 CST 2020 WARN: Establishing SSL connection without server's identity verification is not recommended. According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be established by default if explicit option isn't set. For compliance with existing applications not using SSL the verifyServerCertificate property is set to 'false'. You need either to explicitly disable SSL by setting useSSL=false, or set useSSL=true and provide truststore for server certificate verification
警告:不建议在没有服务器身份验证的情况下建立SSL连接。根据MySQL 5.5.45+、5.6.26+和5.7.6+的要求,如果没有设置显式选项,则默认情况下必须建立SSL连接。您需要通过设置useSSL=false显式禁用SSL,或者设置useSSL=true并为服务器证书验证提供信任存储。```
**解决方法:**在核心配置文件中Mybatis_config.xml中