下载:https://github.com/mybatis/mybatis-3/releases
API:https://mybatis.org/mybatis-3/zh/getting-started.html
持久层框架
(Spring的JdbcTemplate、Apache的DBUtils是工具类,是对JDBC的简单封装)
mybatis内部封装了jdbc,使用mybatis只需要关注sql语句本身,不需要关注加载驱动、创建连接等过程。使用ORM思想实现对结果集的封装。
ORM:object relational mapping 对象关系映射
1. 使用
maven项目
1.1 添加jar
<dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.5.4</version> <scope>compile</scope> </dependency>
1.2 配置
(1)数据源配置
<?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"> <!--mysql环境配置--> <environment id="mysql"> <!--配置事务类型--> <transactionManager type="JDBC"></transactionManager> <!--配置数据源(连接池)--> <dataSource type="POOLED"> <property name="driver" value="com.mysql.cj.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost:3306/contacts?serverTimezone=UTC&useUnicode=true&characterEncoding=utf8"/> <property name="username" value="root"/> <property name="password" value="xxx"/> </dataSource> </environment> </environments> <!--指定映射配置文件(每个dao独立的配置文件)的位置--> <mappers> <mapper resource="com/xt/dao/UserDao.xml"></mapper> </mappers> </configuration>
(2)dao接口的映射文件
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"> <mapper namespace="com.xt.dao.UserDao"> <!--配置查询所有--> <select id="findAll" resultType="com.xt.domain.User"> select * from user </select> </mapper>
文件名与接口名相同;
映射文件在resource目录下与dao接口同样的目录结构下
namespace为接口位置
id为方法名
resultType为相对应的数据模型类
1.3 简单例子如下
数据模型为User:
public class User implements Serializable { //成员变量 xxx //getter、setter方法 xxx }
接口为UserDao:在接口映射配置文件里写了sql语句,以及标定了返回值类型,于是不用自己写dao的实现类了
public interface UserDao { /*查找所有user*/ List<User> findAll(); }
主方法:
//1.读取配置文件 InputStream is = Resources.getResourceAsStream("SqlMapConfig.xml"); //2.创建SqlSessionFactory(通过其构建工厂对象) SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(is); //3.使用工厂创建SqlSession对象 SqlSession sqlSession = sqlSessionFactory.openSession(); //4.创建dao接口的代理对象 UserDao dao = sqlSession.getMapper(UserDao.class); //5.通过代理对象调用方法 List<User> list = dao.findAll(); for(User user:list) { System.out.println(user.toString()); } //6.关闭 sqlSession.close(); is.close();
2. 使用注解的方式
删掉接口映射文件 UserDao.xml
修改SqlMapConfig.xml文件:修改mapper
<!-- <mapper resource="com/xt/dao/UserDao.xml"></mapper>--> <mapper class="com.xt.dao.UserDao"></mapper>
在接口上添加注解:
UserDao.java
public interface UserDao { /*查找所有user*/ @Select("select * from user") List<User> findAll(); }
原文:https://www.cnblogs.com/taoXiang/p/12990313.html