mybatis笔记(一)
mybatis概述
mybatis是一个持久层框架,用java编写,封装了很多jdbc细节,开发者只需要关注sql语句本身,而无需关注注册驱动,创建连接等繁杂过程,它使用了ORM思想,实现了结果集的封装。
ORM:Object Relational Mappging 对象关系映射
简单的说:就是把数据库和实体类及实体类的属性对应起来,让我们可以操作实体类及实现操作数据库
mybatis环境搭建
- 1.创建maven工程并导入坐标
1 2 3 4 5 6 7 8 9 10
| <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.5.4</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.18</version> </dependency>
|
- 2.创建实体类和dao接口
- 3.创建mybatis的主配置文件SqlMapConfig.xml
- 4.创建映射配置文件
注意事项
- 1.包在创建时 com.demomybatis.dao他是三级目录结构
- 2.mybatis的映射配置文件位置必须和dao接口的包结构相同
- 3.映射配置文件的mapper标签和namespace属性的取值必须是dao接口的全限定而类名
- 4.映射配置文件的擦偶哦配置(select) id的取值必须是dao接口的方法名
当我们遵从2,3,4点之后,我们开发中就无需再写dao的实现类
SqlMapConfig.xml代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| <?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"> <!--使用jdbc事务管理 --> <transactionManager type="JDBC"/> <!-- 数据库连接池(数据源) --> <dataSource type="POOLED"> <property name="driver" value="com.mysql.cj.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost:3306/test?serverTimezone=UTC"/> <property name="username" value="root"/> <property name="password" value="root"/> </dataSource> </environment> </environments> <!-- 引入映射配置文件 --> <mappers> <mapper resource="cn/demomybatis/dao/StudentDao.xml"/> </mappers> </configuration>
|
StudentDao.xml代码
1 2 3 4 5 6 7 8 9 10 11 12
| <?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:命名空间,用于隔离sql--> <mapper namespace="cn.demomybatis.dao.StudentDao"> <!-- 配置查询所有 id为dao的方法名--> <select id="findAll" resultType="cn.demomybatis.domain.Student" parameterType="cn.demomybatis.domain.Student"> select * from student </select> </mapper>
|
mybatis入门案例:
- 1.读取配置文件
- 2.创建SqlSessionFactory工厂
- 3.创建SqlSession
- 4.创建Dao接口的代理
- 5.执行Dao中的方法
- 6.释放资源
注意:需要在映射配置中告知mybatis要封装到哪个实体类中,配置的方式:指定实体类的全类名
sqlSession.commit()
测试代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
| package cn.demomybatis.test;
import cn.demomybatis.dao.StudentDao; import cn.demomybatis.domain.Student;
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; import java.util.List;
/** * mybatis入门 */ public class mybatistest { public static void main(String[] args) throws Exception { //读取配置文件 InputStream in = Resources.getResourceAsStream("SqlMapConfig.xml"); //创建工厂 SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder(); SqlSessionFactory factory = builder.build(in); //使用工厂生产SqlSession对象 SqlSession sqlSession = factory.openSession(); //创建Dao接口的代理对象 StudentDao studentDao = sqlSession.getMapper(StudentDao.class); //使用代理对象执行方法 List<Student> list = studentDao.findAll(); for (Student student:list){ System.out.println(student); } //释放资源 sqlSession.close(); in.close(); } }
|