Mybatis
1、第一步:创建maven工程并导入坐标
引入依赖 <dependencies>
元素时根元素<project>
的子元素
<dependencies>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.2</version>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.0.0</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.18</version>
</dependency>
</dependencies>
2、第二步:创建实体类和dao的接口
实体类
package com.itjianfeng.domain;
import java.io.Serializable;
import java.util.Date;
public class Users implements Serializable {
private Integer id;
private String UserName;
private String SEX;
private Date submission_date;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getUserName() {
return UserName;
}
public void setUserName(String userName) {
UserName = userName;
}
public String getSEX() {
return SEX;
}
public void setSEX(String SEX) {
this.SEX = SEX;
}
public Date getSubmission_date() {
return submission_date;
}
public void setSubmission_date(Date submission_date) {
this.submission_date = submission_date;
}
@Override
public String toString() {
return "Users{" +
"id=" + id +
", UserName='" + UserName + '\'' +
", SEX='" + SEX + '\'' +
", submission_date=" + submission_date +
'}';
}
}
dao层
package com.itjianfeng.dao;
import com.itjianfeng.domain.Users;
import java.util.List;
/*
* 用户持久层接口
* */
public interface IUserDao {
/**
* 查询所有操作
*/
List<Users> findAll();
}
3、第三步:创建Mybatis的主配置文件
SqlMapConfig.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">
<!-- mybatis的主配置文件 -->
<configuration>
<!-- 配置环境 -->
<environments default="development">
<!--配置mysql环境 -->
<environment id="development">
<!-- 配置事务的类型 -->
<transactionManager type="JDBC"></transactionManager>
<!-- 配置数据源(连接池) -->
<dataSource type="POOLED">
<property name="driver" value="com.mysql.cj.jdbc.Driver"/>
<!-- MybatisDb为数据库名 serverTimezone=UTC 设置时区-->
<property name="url" value="jdbc:mysql://localhost:3306/MybatisDB?serverTimezone=UTC"/>
<property name="username" value="root"/>
<property name="password" value="123456"/>
</dataSource>
</environment>
</environments>
<!-- 指定映射配置文件的位置,映射配置文件指定的是每个dao独立的配置文件 -->
<mappers>
<mapper resource="com/itjianfeng/dao/IUsersDao.xml"/>
</mappers>
</configuration>
4、都i四步:创建映射配置文件
IUserDao.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="com.itjianfeng.dao.IUserDao">
<!-- 配置查询所有 id为方法的名称,不能随便取 -->
<select id="findAll" resultType="com.itjianfeng.domain.Users">
select * from iron
</select>
</mapper>
5、添加单元测试 测试是否能访问数据库
package com.itjianfeng.test;
import com.itjianfeng.dao.IUserDao;
import com.itjianfeng.domain.Users;
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;
/*
*
* */
public class MybatisTest {
/*
* 入门案例
* */
public static void main(String[] args) throws IOException {
//1.读取配置文件
InputStream inputStream= Resources.getResourceAsStream("SqlMapConfig.xml");
//2.创建SqlSessionFactory工厂
SqlSessionFactoryBuilder builder=new SqlSessionFactoryBuilder();
SqlSessionFactory factory=builder.build(inputStream);
//3.使用工厂生产SqlSession对象
SqlSession session=factory.openSession();
//4.使用SqlSession创建Dao接口的代理对象
IUserDao userDao=session.getMapper(IUserDao.class);
//5.使用代理对象执行方法
List<Users> users=userDao.findAll();
for (Users users1:users){
System.out.println(users1);
}
//6.释放资源
session.close();
inputStream.close();
}
}
项目目录结构:
环境搭建的注意事项
第一个、创建IUserDao.xml 和 IUserDao.java时名称是为了和我们之前的知识保持一致。在创建Mybatis中他把吃持久层的操作接口名称和映射文件也叫做:Mapper
第二个:mybatis的映射配置文件位置必须和dao接口包的结构一致。
第三个:映射配置文件的mapper标签namespace属性的取值必须是dao接口的全限定类名。
第四个:映射配置文件的操作配置(select),id属性的取值必须是dao接口的方法名
当我们遵从了第二三四之后,我们在开发中就无须再写dao的实现类(开发中用的比较多)
获取路径方法:
使用类加载器,他只能读取类路径的配置文件
使用ServietContext对象的getRealPath()
Maven [ERROR] 不再支持源选项 5。请使用 6 或更高版本
Error:java: 不再支持源选项 5。请使用 6 或更高版本。错误解决方法:
解决办法一 在settings.xml文件中指定jdk版本
既可以修改全局的settings.xml文件(C:\Program Files\apache-maven-3.6.0\conf\settings.xml)
也可以修改用户的settings.xml文件(~.m2\settings.xml)
在settings.xml文件中找到<profiles>
标签,在里面新建一个字标签<profile>
在里面指定jdk版本
<profile>
<id>jdk-10</id>
<activation>
<activeByDefault>true</activeByDefault>
<jdk>10</jdk>
</activation>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>10</maven.compiler.source>
<maven.compiler.target>10</maven.compiler.target>
</properties>
</profile>
解决办法二 在项目的pom.xml文件中指定jdk版本
我的jdk版本是10.0.2 所以写的是10 根据你自己的jdk版本写 1.7/1.8~~~~
<properties>
元素是根元素<project>
的子元素
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>10</maven.compiler.source>
<maven.compiler.target>10</maven.compiler.target>
</properties>