mybatis入门搭建
1概述
原本是Apache的一个开源项目iBatis, 2010年6月这个项目由Apache Software Foundation 迁移到了 Google Code,随着开发团队转投Google Code 旗下, iBatis3.x正式更名为MyBatis。
MyBatis 是一款优秀的持久层框架。
MyBatis 避免了几乎所有的 JDBC 代码手动设置参数以及手动获取结果集的操作。
MyBatis 可以使用 XML 或注解来配置和映射,将数据库中的记录映射成 Java 的 POJO(Plain Old Java Objects,普通的 Java 对象),是一种 ORM(ORM Object Relational Mapping 对象关系映射)实现.
它支持动态 SQL 以及数据缓存.
Mybatis 将基本的 JDBC 常用接口封装,对外提供操作即可.
Mybatis 中文官网 https://mybatis.org/mybatis-3/zh/getting-started.html
2环境搭建
我们可以从中文官网找如下的模板
1创建表和表的对应实体类(属性名尽量保持一致)
2导入mybatis mysql jar,maven项目pom加入依赖即可
<dependency>
<groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.4.2</version>
</dependency>
<dependency>
<!--mysql依赖-->
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId> <version>8.0.16</version>
</dependency>
3创建mybatis全局文件
<?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>
<properties resource="jdbc.properties"/> <settings>
<setting name="logImpl"value="STDOUT_LOGGING"/>
<!--将a.name与a_name自动格式转换--> <setting name="mapUnderscoreToCamelCase" value="true"/>
</settings>
<typeAliases>
<package name="com.hkx.domain"/> </typeAliases>
<environments default="development"> <environment id="development"> <transactionManager type="JDBC"/> <dataSource type="POOLED"> <property name="driver" value="${jdbc.driver}"/> <property name="url" value="${jdbc.url}"/> <property name="username"value="${jdbc.user}"/> <property name="password" value="${jdbc.passwd}"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="mapper/AdminMapper.xml"/> <mapper resource="mapper/StudentsMapper.xml"/> <mapper resource="mapper/GradeMapper.xml"></mapper>
</mappers>
</configuration>
4创建sql映射文件
<?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.hkx.mapper.GradeMapper"> <select id="selectStudents" resultMap="studentMap"//映射下方resultMap>
SELECT g.name,s.id,s.name sname,s.gender from students s right JOIN grade g on g.id = s.gradeId
</select>//select中写sql语句
<resultMap id="studentMap" type="Grade"> <result property="name" column="name"/> <collection property="students" javaType="list" ofType="students">
<id column="id" property="id"/> <result property="name" column="sname"/> <result property="gender" column="gender"/> </collection>
</resultMap>
</mapper>
5定义接口
public interface GradeMapper {
List<Grade> selectStudents();
}
6测试mybatis
读取配置文件
Reader reader = Resources.getResourceAsReader(“mybatis-config.xml”);
创建 SqlSessionFactory
SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader);
创建 SqlSession
SqlSession sqlSession = sessionFactory.openSession();
获得接口代理对象
sqlSession.getMapper(接口.class);
sqlSession .close();关闭
7说明
SqlSessionFactory 接口
使用 SqlSessionFactory 来创建 SqlSession,一旦创建 SqlSessionFactory 就 会在整个应用过程中始终存在。由于创建开销较大,所以没有理由去销毁再创建 它,一个应用运行中也不建议多次创建 SqlSessionFactory。
qlSession,一旦创建 SqlSessionFactory 就 会在整个应用过程中始终存在。由于创建开销较大,所以没有理由去销毁再创建 它,一个应用运行中也不建议多次创建 SqlSessionFactory。