MyBatis
一、框架
概念:框架是一套完整的解决方案的可重用的代码,包含了一组抽象构件和构件间交互的方法。
二、Mybatis框架
是一个基于Java的持久层框架,封装了JDBC,使开发者只需要关注SQL语句本身而无需操心加载驱动,创建连接,创建Statement等繁琐的过程。
可以通过xml或注解的方式配置Statement,并通过java对象和Statement中SQL的动态参数进行映射生成最终执行的sql语句,最后由mybatis框架执行SQL语句并将结果通过ORM映射为Java对象并返回。
ORM实现了实体和数据库映射的问题,对JDBC进行了封装,屏蔽了JDBC Api底层访问的细节,使用户更专注于数据库的操作。
使用步骤:
以操作数据库的user表为例(user包含id,username, birthday, sex, address属性)。
1. 创建user表的Java Bean类--User类
2. 创建user表的Dao层接口。在接口中包括了user表的增删改查等方法。
3. 配置Mybatis的SqlMapConfig.xml文件,在文件中配置数据库连接信息和数据库访问层信息。
4. 配置数据库访问层具体接口的UserDao.xml文件,配置方法的方法名、参数类型、返回值类型以及SQL语句等
4.或通过注释方法配置接口。
5. 通过mybatis执行创建接口UserDao的代理类 ,通过代理类执行SQL语句,返回执行结果。
2.1 使用流程
1. xml配置方法
- 创建User表的Bean类
- 创建操作数据库的接口UserDao
- 配置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"> <configuration> <environments default="mysql"> <environment id="mysql"> <transactionManager type="JDBC"></transactionManager> <dataSource type="POOLED"> <property name="driver" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost:3306/hellossm?serverTimezone=UTC"/> <property name="username" value="root"/> <property name="password" value="123456"/> </dataSource> </environment> </environments> <mappers> <mapper resource="com/one/mybatis/dao/UserDao.xml"/> </mappers> </configuration>
-
配置接口映射文件:UserDao.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"> <!--namespace是数据访问层类--> <mapper namespace="com.one.mybatis.dao.UserDao"> <!-- id是方法名--> <select id="findAll" resultType="com.one.mybatis.domain.User"> select * from user </select> </mapper>
注意,UserDao.xml在resource下的结构必须与UserDao相同
2. Web配置方法
- 创建User表的Bean类
- 创建操作数据库的接口UserDao
- 配置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"> <configuration> <environments default="mysql"> <environment id="mysql"> <transactionManager type="JDBC"></transactionManager> <dataSource type="POOLED"> <property name="driver" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost:3306/hellossm?serverTimezone=UTC"/> <property name="username" value="root"/> <property name="password" value="123456"/> </dataSource> </environment> </environments> <mappers> <mapper class="com.one.mybatis.dao.UserDao"/> </mappers> </configuration>
- 配置Dao接口
public interface UserDao { @Select("select * from user") List<User> findAll(); }