Mybatis
什么是Mybatis?
持久化
持久化是将程序数据在持久状态和瞬时状态间转换的机制。
持久层
完成持久化工作的代码块 . ----> dao层 与系统其他部分相对而言,这个层面应该具有一个较为清晰和严格的逻辑边界。
简单使用
创建数据库 导入相关依赖
< dependency>
< groupId> org.mybatis</ groupId>
< artifactId> mybatis</ artifactId>
< version> 3.5.2</ version>
</ dependency>
< dependency>
< groupId> mysql</ groupId>
< artifactId> mysql-connector-java</ artifactId>
< version> 5.1.47</ version>
</ dependency>
编写Mybatis核心配置文件(mybatis-config.xml,resources目录下)
<?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 = " com.mysql.jdbc.Driver" />
< property name = " url" value = " jdbc:mysql://localhost:3306/mybatis?useSSL=true& useUnicode=true& characterEncoding=utf8" />
< property name = " username" value = " root" />
< property name = " password" value = " 123456" />
</ dataSource>
</ environment>
</ environments>
< mappers>
< mapper resource = " com/kuang/dao/userMapper.xml" />
</ mappers>
</ configuration>
编写Mybatis工具类
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 SqlSessionFactory sqlSessionFactory;
static {
try {
String resource = "mybatis-config.xml" ;
InputStream inputStream = Resources. getResourceAsStream ( resource) ;
sqlSessionFactory = new SqlSessionFactoryBuilder ( ) . build ( inputStream) ;
} catch ( IOException e) {
e. printStackTrace ( ) ;
}
}
public static SqlSession getSession ( ) {
return sqlSessionFactory. openSession ( ) ;
}
}
编写实体类(pojo目录下)
public class User {
private int id;
private String name;
private String pwd;
}
编写Mapper结构(mapper目录下)
import com. kuang. pojo. User;
import java. util. List;
public interface UserMapper {
List< User> selectUser ( ) ;
}
编写Mapper.xml配置文件(可在mapper目录下)
<?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.kuang.dao.UserMapper" >
< select id = " selectUser" resultType = " com.kuang.pojo.User" >
select * from user
</ select>
</ mapper>
测试
public class MyTest {
@Test
public void selectUser ( ) {
SqlSession session = MybatisUtils. getSession ( ) ;
UserMapper mapper = session. getMapper ( UserMapper. class ) ;
List< User> users = mapper. selectUser ( ) ;
for ( User user: users) {
System. out. println ( user) ;
}
session. close ( ) ;
}
}
Maven静态资源过滤问题
< resources>
< resource>
< directory> src/main/java</ directory>
< includes>
< include> **/*.properties</ include>
< include> **/*.xml</ include>
</ includes>
< filtering> false</ filtering>
</ resource>
< resource>
< directory> src/main/resources</ directory>
< includes>
< include> **/*.properties</ include>
< include> **/*.xml</ include>
</ includes>
< filtering> false</ filtering>
</ resource>
</ resources>
简答总结
依赖的导入 核心配置文件的编写(内容和位置) MybatisUtils工具类的编写(session的创建流程) mapper如何被扫描到?(在核心配置文件中指定) mapper.xml(编写和文件位置)
重点
核心配置文件 工具类中session的创建流程