自定义Mybatis框架
1 自定义Mybatis的分析-执行查询所有分析
mybatis在使用代理dao的方式实现增删改查时做什么事呢?
只有两件事:
第一:创建代理对象。
第二:在代理对象中调用selectList。
查询所有分析如图所示:
2 自定义Mybatis的分析-创建代理对象的分析
如图所示的分析:
3 自定义mybatis的编码-根据测试类中缺少的创建接口和类
自定义mybatis能通过入门案例看到类。
class Resources
class SqlSessionFactoryBuilder
interface SqlSessionFactory
interface SqlSession
1.打开IDEA工具界面如图所示,点击File–>New–project。
2.选择Maven工程和JDK的版本,并点击Next。如图所示:
3.填写项目名称和保存的地址,并点击Finish。如图所示:
4.导入相应的依赖jar包的代码如下:
<?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">
<modelVersion>4.0.0</modelVersion>
<groupId>com.txw</groupId>
<artifactId>day01_04mybatis_design</artifactId>
<version>1.0-SNAPSHOT</version>
<!--打包的方式-->
<packaging>jar</packaging>
<dependencies>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.6</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.12</version>
</dependency>
<dependency>
<groupId>dom4j</groupId>
<artifactId>dom4j</artifactId>
<version>1.1</version>
</dependency>
<dependency>
<groupId>jaxen</groupId>
<artifactId>jaxen</artifactId>
<version>1.2.0</version>
</dependency>
</dependencies>
</project>
5.用户的实体类代码如下:
package com.txw.domain;
import lombok.Data;
import lombok.ToString;
import java.io.Serializable;
import java.util.Date;
/**
* 用户的实体类
* @author:Adair
* @QQ:1578533828
*/
@Data // 自动生成set和get方法
@ToString // 重写toString方法
@SuppressWarnings("all") // 注解警告信息
public class User implements Serializable {
private Integer id; // 用户的id
private String username; // 用户名
private Date birthday; // 用户的生日
private String sex; // 用户的性别
private String address; // 用户的地址
}
6.用户实体类的持久层接口代码如下:
package com.txw.dao;
import com.txw.domain.User;
import java.util.List;
/**
* 实体类的持久层接口
* @author:Adair
* @QQ:1578533828
*/
@SuppressWarnings("all") // 注解警告信息
public interface UserDao {
/**
* 查询所有操作
* @return
*/
List<User> findAll();
}
7.编写使用类加载器读取配置文件的类代码如下:
package com.txw.mybatis.io;
import java.io.InputStream;
/**
* 使用类加载器读取配置文件的类
* @author:Adair
* @QQ:1578533828
*/
@SuppressWarnings("all") // 注解警告信息
public class Resources {
/**
* 根据传入的参数,获取一个字节输入流
* @param filePath
* @return
*/
public static InputStream getResourceAsStream(String filePath){
return Resources.class.getClassLoader().getResourceAsStream(filePath);
}
}
8.编写自定义Mybatis中和数据库交互的核心类的代码如下:
package com.txw.mybatis.sqlsession;
/**
* 自定义Mybatis中和数据库交互的核心类
* 它里面可以创建dao接口的代理对象
* @author:Adair
* @QQ:1578533828
*/
@SuppressWarnings("all") // 注解警告信息
public interface SqlSession {
/**
* 根据参数创建一个代理对象
*
* @param daoInterfaceClass dao的接口字节码
* @param <T>
* @return
*/
<T> T getMapper(Class<T> daoInterfaceClass);
/**
* 释放资源
*/
void close();
}
9.编写qlSessionFactory接口的代码如下:
package com.txw.mybatis.sqlsession;
/**
* SqlSessionFactory接口
* @author:Adair
* @QQ:1578533828
*/
@SuppressWarnings("all") // 注解警告信息
public interface SqlSessionFactory {
/**
* 用于打开一个新的SqlSession对象
* @return
*/
SqlSession openSession();
}
10.在resources目录下创建SqlMapConfig.xml的代码如下:
<?xml version="1.0" encoding="UTF-8"?>
<!-- mybatis的主配置文件 -->
<configuration>
<!-- 配置环境 -->
<environments default="mysql">
<!-- 配置mysql的环境-->
<environment id="mysql">
<!-- 配置事务的类型-->
<transactionManager type="JDBC"></transactionManager>
<!-- 配置数据源(连接池) -->
<dataSource type="POOLED">
<!-- 配置连接数据库的4个基本信息 -->
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://192.168.179.128:3306/mybatis"/>
<property name="username" value="root"/>
<property name="password" value="123456"/>
</dataSource>
</environment>
</environments>
<!-- 指定映射配置文件的位置,映射配置文件指的是每个dao独立的配置文件 -->
<mappers>
<mapper resource="com/txw/dao/UserDao.xml"/>
</mappers>
</configuration>
11.在resources目录创建com.txw.UserDao.xml的代码如下:
<?xml version="1.0" encoding="UTF-8"?>
<mapper namespace="com.txw.dao.UserDao">
<!--配置查询所有-->
<select id="findAll" resultType="com.txw.domain.User">
select * from user
</select>
</mapper>
12.编写自定义mybatis的配置类的代码如下:
package com.txw.mybatis.cfg;
import lombok.Data;
import java.util.HashMap;
import java.util.Map;
/**
* 自定义mybatis的配置类
* @author:Adair
* @QQ:1578533828
*/
@Data // 自动生成set和get方法
@SuppressWarnings("all") // 注解警告信息
public class Configuration {
private String driver;
private String url;
private String username;
private String password;
private Map<String,Mapper