使用配置规则
- 接口的映射文件和接口的结构相同,并且映射文件的名称与接口名相同。
- 映射文件中mapper标签中的namespace属性=接口的全限定名。
- select标签的id属性与接口中的方法名相同,resultType=要封装类的全限定类名。
使用mybatis查询数据库的流程
4. 读取配置文件
InputStream in = Resources.getResourceAsStream(“SqlMapConfig.xml”);
5. 创建 SqlSessionFactory 的构建者对象
SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
6. 使用构建者创建工厂对象 SqlSessionFactory
SqlSessionFactory factory = builder.build(in);
7. 使用 SqlSessionFactory 生产 SqlSession 对象
SqlSession session = factory.openSession();
8. 使用 SqlSession 创建 dao 接口的代理对象
IUserDao userDao = session.getMapperIUserDao.class);
9. 使用代理对象执行方法
select(update,delete,insert)标签
- resultType 属性:用于指定结果集的类型。
- parameterType 属性:用于指定传入参数的类型。(pojo类需要写全限定类名,也可以注册别名)
- resultMap 标签可以建立查询的列名和实体类的属性名称不一致时建立对应关系,从而实现封装。写在mapper标签体内。
type 属性:指定实体类的全限定类名
id 属性:给定一个唯一标识,是给查询 select 标签引用用的。
-->
id 标签:用于指定主键字段
result 标签:用于指定非主键字段
column 属性:用于指定数据库列名
property 属性:用于指定实体类属性名称
< resultMap type="com.itheima.domain.User" id="userMap">
<id column="id" property="userId"/>
<result column="username" property="userName"/>
<result column="sex" property="userSex"/>
< /resultMap>
- #{}中内容的写法:
- 数据类型是基本类型,可以随意写
- 参数是 一个 User 对象,此处要写 User 对象中的属性名称。
它用的是 ognl 表达式。
ognl 表达式:
按照一定的语法格式来获取数据的。语法格式就是使用 #{对象.对象}的方式。我们在 parameterType 属性上指定了实体类名称,所以可以省略 user.而直接写 username。
我们在实现增删改时一定要去控制事务的提交,可以用:session.commit();来实现事务提交。
主配置文件中属性
- < mapper resource=" " /> 使用相对于类路径的资源
- < mapper class=" " /> 使用 mapper 接口类路径
- < package name=""/> 注册指定包下的所有 mapper 接口
- typeAliases(类型别名)
< typeAliases>
< typeAlias alias=“user” type=“com.itheima.domain.User”/>
< !-- 批量别名定义,扫描整个包下的类,别名为类名(首字母大写或 小写都可以) -->
< package name=“com.itheima.domain”/>
< /typeAliases>
所说的数据源就是为了更好的管理数据库连接,也就是我们所说的连接池技术。