Mybatis核心组件
1.SqlSessionFactoryBuilder(构造器),采用分步构建的Builder模式,生成SqlSessioonFactory
2.SqlSessionFactory(工厂接口):生成Sqlsession,使用的是工长模式。
3.Sqlsession(会话):一般使用Maybatis提供的SQL Maper提供的接口编程技书。
4.SQL Mapper(映射器)由Java代码和xml文件(或注解)构成,需要给出对应的SQL和映射规则。负责发送SQL去执行
并返回结果。
开发的是接口,Maybatis使用动态代理技术使接口运行起来,先懂得MayBatis会为这个接口生成一个代理对象,代理对象会去处理逻辑。
resultMap元素:
resultMap元素作用是定义映射规则,级联的更新,定制类型转换器等,
resultMap定义的主要是一个结果集的映射关系,也就是SQL到JavaBean的映射关系定义,支持级联等特性。
(现在的Mabtis版本只支持查询操作,不支持更新或者保存)
<?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>
<!-- 是用resource属性加载外部配置文件 -->
<properties resource="db.properties">
<!-- 在properties内部用property定义属性 -->
<!-- 如果外部配置文件有该属性,则内部定义属性被外部属性覆盖 -->
<property name="jdbc.username" value="root" />
<property name="jdbc.password" value="root" />
</properties>
<typeAliases>
<!-- 单个别名定义 -->
<!-- <typeAlias alias="user" type="cn.itcast.mybatis.pojo.User" /> -->
<!-- <typeAlias alias="user" type="Pojo.User" /> -->
<!-- 批量别名定义,扫描整个包下的类,别名为类名(大小写不敏感) -->
<package name="Pojo" />
</typeAliases>
<!-- 和spring整合后 environments配置将废除 -->
<environments default="development">
<environment id="development">
<!-- 使用jdbc事务管理 -->
<transactionManager type="JDBC" />
<!-- 数据库连接池 -->
<dataSource type="POOLED">
<property name="driver" value="${jdbc.driver}" />
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
</dataSource>
</environment>
</environments>
<!--引入映射文件 -->
<mappers>
<mapper resource="sqlmap/User.xml"/>
<mapper resource="sqlmap/UserMapper.xml"/>
<!-- <package name="sqlmap"/> -->
</mappers>
</configuration>
<typeAliases>
<!-- 单个别名定义 -->
<!-- <typeAlias alias="user" type="cn.itcast.mybatis.pojo.User" /> -->
<!-- <typeAlias alias="user" type="Pojo.User" /> -->
<!-- 批量别名定义,扫描整个包下的类,别名为类名(大小写不敏感) -->
<package name="Pojo" />
</typeAliases>
配置完别名后再UserMapper.xml中可以直接使用实体的类名,不区分大小写。如下:
resultType="user"
<?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:命名空间,用于隔离sql,还有一个很重要的作用,后面会讲 -->
<!-- 1确定代理的接口 -->
<mapper namespace="Mapper.UserMapper">
<!-- sql的名字 -->
<select id="queryUserById" parameterType="int" resultType="user">
select * from user where id=#{id};
</select>
<!-- 根据用户名模糊查寻 -->
<select id="queryUserByUsername" parameterType="String" resultType="User">
select * from user where username like '%${value}%';
</select>
<!-- 新增用户 -->
<insert id="saveUser" parameterType="User">
insert into user (username,birthday,sex,address)
VALUES
(#{username},#{birthday},#{sex},#{address});
</insert>
</mapper>