mybatis学习:mybatis的环境搭建与入门
一、mybatis的概述:
mybatis是一个持久层框架,用java编写
它封装了jdbc操作的很多细节,使开发者只需要关注sql语句本身,而无需关注注册驱动,创建连接登繁杂过程
它使用了ORM思想实现了结果集的封装
ORM:
Object Relational Mappging 对象关系映射
简单来说:
就是把数据库表和实体类及实体类的属性对应起来
让我们可以操作实体类就实现操作数据库表
二、mybatis的环境搭建
第一步:创建maven工程并导入坐标
1 <packaging>jar</packaging> 2 3 <dependencies> 4 <dependency> 5 <groupId>org.mybatis</groupId> 6 <artifactId>mybatis</artifactId> 7 <version>3.4.5</version> 8 </dependency> 9 <dependency> 10 <groupId>mysql</groupId> 11 <artifactId>mysql-connector-java</artifactId> 12 <version>5.1.6</version> 13 </dependency> 14 <dependency> 15 <groupId>log4j</groupId> 16 <artifactId>log4j</artifactId> 17 <version>1.2.12</version> 18 </dependency> 19 <dependency> 20 <groupId>junit</groupId> 21 <artifactId>junit</artifactId> 22 <version>4.10</version> 23 </dependency> 24 </dependencies>
第二步:创建实体类和dao的接口
第三步:创建Mybatis的主配置文件:SqlMapConifg.xml
1. 在resources目录下创建SqlMapConifg.xml
2. 导入Config的约束:
<?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">
3. 写入配置文件
1 <!--mybatis的主配置文件--> 2 <configuration> 3 <!--配置环境--> 4 <environments default="mysql"> 5 <!--配置mysql的环境--> 6 <environment id="mysql"> 7 <!--配置事务的类型--> 8 <transactionManager type="JDBC"></transactionManager> 9 <!--配置数据源,也叫连接池--> 10 <dataSource type="POOLED"> 11 <!--配置连接数据库的4个基本信息--> 12 <property name="driver" value="com.mysql.jdbc.Driver"/> 13 <property name="url" value="jdbc:mysql://localhost:3307/test"/> 14 <property name="username" value="root"/> 15 <property name="password" value="flypig"/> 16 </dataSource> 17 </environment> 18 </environments> 19 20 <!--指定映射配置文件的位置,映射配置文件指的是每个dao独立的配置文件--> 21 <mappers> 22 <mapper resource="cn/flypig666/dao/IUserDao.xml"></mapper> 23 </mappers> 24 </configuration>
第四步:创建映射配置文件:IUserDao.xml
例如:resoures目录下cn/flypig666/dao/IUserDao.xml
1. 导入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">
2. 写入配置: resultType为返回的封装数据类型,将数据封装为User对象,存在list中
1 <mapper namespace="cn.flypig666.dao.IUserDao"> 2 <!--配置查询所有--> 3 <select id="findAll" resultType="cn.flypig666.domian.User"> 4 select * from user 5 </select> 6 7 </mapper>
三、环境搭建的注意事项
1. 创建IUserDao.xml和IUserDao.java时名称是为了和之间的知识保持一致
在Mybatis中它把持久层的操作接口名称和映射文件也叫:Mapper
所以:IUserDao和IUserMapper是一样的
2. 在idea中创建目录的时候,它和包是不一样的
包在创建时:cn.flypig666.dao是三层结构
目录在创建时:cn.flypig666.dao是一级目录
3. mybatis的映射配置文件位置必须和dao接口的包结构相同
4. 映射配置文件的mapper标签namespace属性的取值必须是dao接口的全限定类名
5. 映射配置文件的操作配置(select、update),id属性的取值必须是dao接口的方法名
当我们遵从了3、4、5点之后,我们在开发中就无需再写dao的实现类
四、入门案例
第一步:读取配置文件
第二步:创建SqlSessionFactory工厂
第三步:创建SqlSession
第四步:创建Dao接口的代理对象
第五步:执行dao中的方法
第六步:释放资源
注意事项:
不要忘记在映射配置中告知mybatis要封装到哪个实体类
配置的方式:指定实体类的全限定类名
1 public class MybtisTest { 2 3 //入门案例 4 5 public static void main(String[] args) throws IOException { 6 //1. 读取配置文件 7 InputStream in = Resources.getResourceAsStream("SqlMapConfig.xml"); 8 //2. 创建SqlSessionFactory工厂 9 SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder(); 10 SqlSessionFactory factory = builder.build(in); 11 //3. 使用工厂生产SqlSession对象 12 SqlSession session = factory.openSession(); 13 //4. 使用SqlSession创建Dao接口的代理对象 14 IUserDao userDao = session.getMapper(IUserDao.class); 15 //5. 使用代理对象执行方法 16 List<User> users = userDao.findAll(); 17 for (User user : users) { 18 System.out.println(user); 19 } 20 //6. 释放资源 21 session.close(); 22 in.close(); 23 } 24 }