(1)Mybatis概述
什么是Mybatis?
mybatis是一个优秀的基于java的持久层框架,它内部封装了jdbc,使开发者只需要关注sql语句本身,而不需要花费精力去处理加载驱动、创建连接、创建statement等繁杂的过程。
mybatis通过xml或注解的方式将要执行的各种statement配置起来,并通过java对象和statement中sql的动态参数进行映射生成最终执行的sql语句,最后由mybatis框架执行sql并将结果映射为java对象并返回。
什么是hibernate?
hibernate是数据访问层的框架,对jdbc进行了封装,使用hibernate可以直接访问对象,hibernate自动将此访问转换为sql执行,从而达到间接访问数据库的目的,简化了数据访问层的代码开发。
hibernate和mybatis对比:
共性:采用ORM思想解决了实体和数据库映射的问题,对jdbc进行了封装,屏蔽了jdbc api底层访问细节,使我们不用与jdbc api打交道,就可以完成对数据库的持久化操作。
Hibernate是全自动化ORM的映射工具,
两者的区别:http://www.cnblogs.com/inspurhaitian/p/4647485.html
(2)环境搭建
配置环境依赖
<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.5</version>
</dependency>
<!-- MySQL数据库依赖 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.6</version>
</dependency>
(3)全局配置文件和映射配置文件
全局配置文件:mybatis-config.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>
<!-- 日志技术 -->
<settings>
<setting name="logImpl" value="LOG4j"/>
</settings>
<!--配置别名
typeAliases和environments是平等级别的标签
type是实体类的完整类名
alias是类的别名
-->
<typeAliases>
<typeAlias type="Mybatis.domain" alias="User"/>
<typeAlias type="com.soft.domain.DeptEntity" alias="DeptEntity"/>
<typeAlias type="com.soft.domain.EmpEntity" alias="EmpEntity"/>
</typeAliases>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC" />
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql:///mybaitsdemo" />
<property name="username" value="root" />
<property name="password" value="admin" />
</dataSource>
</environment>
</environments>
<mappers>
<!-- 映射文件的位置 -->
<mapper resource="Mybatis/domain/userMapper.xml" />
</mappers>
</configuration>
映射配置文件:userMapper.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,namespace的值习惯上设置成包名+sql映射文件名,这样就能够保证namespace的值是唯一的
例如namespace="me.gacl.mapping.userMapper"就是me.gacl.mapping(包名)+userMapper(userMapper.xml文件去除后缀)
-->
<mapper namespace="Mybatis.domain.UserMapper">
<select id="user" resultType="Mybatis.domain.User">
select * from t_user where id = #{id}
</select>
</mapper>
app.java
import java.io.InputStream;
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 org.testng.annotations.Test;
public class App {
@Test
public void test1() throws Exception{
//从classpath路径去加载配置文件
InputStream in = Resources.getResourceAsStream("mybatis-config.xml");
//创建SqlSessionFactory工厂
SqlSessionFactory factory= new SqlSessionFactoryBuilder().build(in);
//获得会话对象
SqlSession session = factory.openSession();
session.selectOne("Mybatis.domain.UserMapper.user",1L);
session.close();
}
}