##简单了解学习Mybatis(iBatis)
- Mybatis把传统的JDBC给做了封装
- 使用Mybatis只需要会写SQL语句就好
Mybatis是持久层框架(操作Dao层)
- Mybatis是这么给SQL语句中传递参数
- Mybatis是怎么查询封装中的结果(条件)
1、 要有连接数据库的四个基本信息 driver、 url、 username、 password
2、 必须有执行的SQL语句
3、 必须有结果集对应的实体对象(用于数据的封装)
Mybatis的入门
1、导入坐标
2、写核心配置文件 核心配置文件只能有一个
3、写映射配置文件 映射配置文件可以有很多个
4、写测试类
//例如:
//核心配置文件
<?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">
<environments default="developement">
<environment id="developement">
<transactionManager type="JDBC"></transactionManager>
<dataSource type="POOLED">
<property name="driver" value="${jdbc.driver}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.usrname}"/>
<property name="password" value="${jdbc.password}"/>
</dataSource>
</environment>
</environments>
//加载映射文件
<mappers>
//加载xml格式的映射文件----找到映射配置的文件
<mapper resource="com/itbaidu/mapper/UserMapper.xml"></mapper>
</mappers>
//映射配置文件
<?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= "userMapper">
//最后参数必须要写 有一个固定写法
//如果有多个映射配置文件我们可以根据namespace进行区分
//查询操作
public void handsomeBoy() throws IOException{
//获的核心配置文件
InputStream resourceAsStream=Resources.getResourceAsStream("sqlMapConfig.xml");
//获的session工厂对象
SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(resourceAsStream);
//获取session回话对象
SqlSession sqlSession=sqlSessionFactory.openSession();
//执行操作
List<User> userList=sqlSession.selectList("userMapper.findAll");
sout(userList);
//释放资源
sqlSession.close();
}
- build:
解析核心配置文件
获取连接数据库的信息
获取映射配置文件的地址
接着去解析映射配置的文件
能拿到SQL语句
能拿到要封装的对象
也是构建者模式
用来创建对象的(把多个小对象组合成一个大对象给你返回)
- sqlSessionFactory:
工厂模式
用来创建对象(创建的过程比较复杂 它把这个过程给封装 给我们提供一个静态方法 直接返回这个对象)
//查询操作
<select id="findAll" resultType="com.itbaidu.domain.User">
select * from mybatis
</select>
/*
id:属性是用来标记一个Statement在同一个映射配置文件中
resultType:属性用来指定结果集封装的对象是谁
select * from mybatis:返回的是List<User>
如果SQL语句返回的是list集合 resultTpey只需要写list集合中存放的实体类型即可(不要写list)
如果要把结果集封装到指定实体类中 必须保证实体类中的属性名和表中的字段名称一致
*/
//插入操作
<insert id="save" parameterType="com.itbaidu.User">
insert into mybatis values(#{id},#{username},#{password})
</insert>
/*
id:属性也是用来标记一个statement
parameterType:属性用来传递参数 指明参数类型是什么
注:在SQL语句中如果要对参数赋值要使用#{},#{}中的值必须是User实体中的属性名称,mybatis会自动MySQL的自动提交给改成手动提交,所以我们在执行增删改查的时候要手动提交事务。
*/