mybatis 是一个持久层的框架, 是对 JDBC 操作数据库的封装, 使开发者只需要关注业务
本身, 不需要花费精力去处理加载驱动、 创建数据库连接对象、 创建 statement 语句对象、
参数设置、 结果集处理等一系列繁杂的过程代码。
mybatis 通过 xml 或注解进行配置, 将 java 对象与 sql 语句中的参数自动映射生成最终
执行的 sql 语句, 并将 sql 语句执行结果自动映射成 java 对象, 返回给业务层(service)
应用。
入门程序流程分析
1.创建项目,导入相关依赖(mysql驱动,mybatis)
2.编写SqlMapConfig.xml(***)
3.创建User实体
4.编写UserDao接口和UserDao接口映射文件(***)
5.测试
编写SqlMapConfig.xml(放在resource目录下)
<?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>
<!-- 1.数据库连接相关信息 -->
<!--
environments
default: 默认数据库环境
environment: 一个数据库连接就配置一个environment
id: 环境的唯一别名
transactionManager: 事务管理器
type: 指定事务管理器类型
jdbc: 使用mybatis自带的事务管理器
dataSource: 数据源(连接池)
type:指定连接池类型
pooled: 使用mybatis自带的连接池
-->
<environments default="mysql">
<environment id="mysql">
<transactionManager type="jdbc"></transactionManager>
<dataSource type="pooled">
<property name="url" value="jdbc:mysql://localhost:3306/spring?characterEncoding=UTF8"/>
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
</dataSource>
</environment>
</environments>
<!-- 2.关联Dao接口映射 (文件或类)-->
<mappers>
<mapper resource ="com.huihui.dao/UserDao.xml"/>
</mappers>
</configuration>
UserDao映射文件:(作用:定义Dao接口的方法所要执行的SQL语句)
注意点:要和映射的接口名称一致。而且要在相同目录下(看编译后的target目录)
<?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: 名称空间,该映射文件对应的Dao接口的名称,通常Dao接口的全名
-->
<mapper namespace="com.huihui.dao.UserDao">
<!-- 在这里面写每个方法对应的sql语句 -->
<!-- 映射findAll方法 -->
<!--
select: 代表查询操作
id: 映射的方法名称
resultType: 结果的类型(输出参数)
注意:如果结果类型是集合类型,只需要定义集合里面的类型即可
-->
<select id="findAll" resultType="com.huihui.pojo.User">
SELECT * FROM USER
</select>
</mapper>
测试类:
import com.huihui.dao.UserDao;
import com.huihui.pojo.User;
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 Demo1 {
public static void main(String[] args) throws IOException {
//加载SqlMapConfig.xml,创建字节流
InputStream in = Resources.getResourceAsStream("SqlMapConfig.xml");
//创建SqlSessionFactoryBuilder
SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
//创建SqlSessionFactory
SqlSessionFactory factory = builder.build(in);
//1.创建SqlSession对象,生成Dao接口的代理对象
SqlSession sqlSession = factory.openSession();
//2.生成Dao接口的代理
UserDao userDao = sqlSession.getMapper(UserDao.class);
System.out.println("代理对象:"+userDao.getClass());
//3.执行具体业务方法
List<User> list = userDao.findAll();
//4.遍历数据
for(User u:list){
System.out.println(u);
}
//释放资源
sqlSession.close();
in.close();
}
}