一个简单的查询案例
查询表User的所有信息
import com.dao.IUserDao;
import com.domain.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.InputStream;
import java.util.List;
public class MybatisTest {
public static void main(String[] args)throws Exception {
//1.读取配置文件
InputStream in= Resources.getResourceAsStream("SqlMapConfig.xml");
//2.创建SqlSessionFactory工厂
SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
SqlSessionFactory factory = builder.build(in);
//3.使用工厂生产SqlSession对象
SqlSession session = factory.openSession();
//4.使用sqlsession创建Dao接口的代理对象
IUserDao userDao = session.getMapper(IUserDao.class);
//5.使用代理对象执行方法
List<User> users = userDao.findAll();
for(User user :users){
System.out.println(user);
}
session.close();
in.close();
}
}
Mybatis的使用步骤
1.读取配置文件
InputStream in= Resources.getResourceAsStream("SqlMapConfig.xml");
2.创建SqlSessionFactory工厂(构建者模式:解决对象构建细节的问题,使使用者有更多的精力关注对象的使用,不需要关注如何构建)
SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
SqlSessionFactory factory = builder.build(in);
其中SqlSessionFactoryBuilder 是一个类,SqlSessionFactory是一个接口
用到了解析XML文件的技术,通过读取SqlMapConfig.xml文件中的连接数据库的基本信息后,创建了Connection对象
3.使用工厂生产SqlSession对象
SqlSession session = factory.openSession();
其中的session对象就是用来创建Dao的代理对象
4.创建Dao对象
IUserDao userDao = session.getMapper(IUserDao.class);
从SqlMapConfig.xml文件中,< mappers >< /mappers >标签下的resource属性中的值,获取到dao的独立配置文件拿到对应的SQL语句,以及查询的方法
5.使用代理对象执行对应大方法
List<User> users = userDao.findAll();
6.关闭流
session.close(); in.close();
总结:
想要执行对应的方法(findAll()),我们要提供给方法两个信息
1.连接信息
2.映射信息:
a.执行的SQL语句
b.封装结果实体的实现类全限定类名
附上对应的.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="com.dao.IUserDao">
<!--配置查询所有-->
<!--id为dao的方法语句-->
<select id="findAll" resultType="com.domain.User">
select * from user
</select>
</mapper>
<?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">
<!-- mybatis的主配置文件 -->
<configuration>
<!-- 配置环境 -->
<!--default 为啥无所谓-->
<environments default="mysql">
<!-- 配置mysql的环境-->
<!--id必须为mysql-->
<environment id="mysql">
<!-- 配置事务的类型-->
<transactionManager type="JDBC"></transactionManager>
<!-- 配置数据源(连接池) -->
<dataSource type="POOLED">
<!-- 配置连接数据库的4个基本信息 -->
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/test?useSSL=false"/>
<property name="username" value="root"/>
<property name="password" value="xiaoyu"/>
</dataSource>
</environment>
</environments>
<!-- 指定映射配置文件的位置,映射配置文件指的是每个dao独立的配置文件 -->
<mappers>
<mapper resource="com/dao/IUserDao.xml"/>
</mappers>
</configuration>