介绍:
数据持久层框架(DAO将数据持久化到数据库),实现DAO层的代码。对JDBC代码的封装
特点:
- 1.封装通用功能,简化代码,提高开发效率(获得conn,绑定参数,发送sql,处理异常,处理结果集)
- 2.sql放在配置文件中,提高sql可维护性
- 3.自带连接池功能
- 4.自带缓存(提高查询效率)
核心思想
- 1.书写DAO接口
- 2.开发Mapper文件。SQL+绑定参数、实现接口中的方法
环境搭建
1.导入mybatis.jar、mybatis的lib依赖包、oracle的驱动jar 2.引入配置文件 mybatis-config.xml(链接数据库相关参数) Mapper.xml(相当于dao的实现类)
MyBatis实现DAO编码
需求:使用MyBatis实现DAO的方式,添加一条person信息 1.书写DAO接口 public interface PersonDAO{ void insert(Person person); } 2.写Mapper文件(DAO实现类) <insert id="实现接口的方法名" parameterType="参数中实体类型全类名"> inser into t_person values(seq_person.nextval,#{属性名},#{sex},#{age}) </insert> 3.注册管理mapper文件 <mappers> <mapper resource="com/lhl/demo1/PersonDAOImpl.xml"></mapper> </mappers>
MyBatis使用的API
使用DAO目的: 1.获得DAO的对象 2.调用DAO的方法
常用的类: SqlSession 1.获得dao结果的实现类的对象 XxxDAO dao = sqlSession.getMapper(接口.class); 2.相当于connection。(提交事务,关闭close,回滚事务)
SqlSessionFactory 1.获得sqlSession SqlSession session = sqlSessonFactory.openSession(); 2.保存封装mybatis-config.xml配置文件 SqlSessionFactoryBuilder:读取配置文件 Resources:获得读取配置文件的输入流
步骤:
1.获得mabatis-config的输入流
2.读取mybatis-config的文件,构造成SqlSessionFactory
3.通过SqlSessionFactory获得SqlSession
4.通过SqlSession获得DAO接口的对象
5.调用方法测试
6.提交事务
7.释放资源
添加、修改、删除操作,(以员工表t_person为例)
1.定义dao接口方法 void insert(Person person);//添加功能接口方法 void update(Person person);//修改功能接口方法 void delete(@param("id")Integer id);//删除功能接口方法
2.书写mapper文件标签 <!-- 添加一个person信息 --> <insert id="insert" parameterType="com.lhl.demo1.Person"> insert into t_person values(seq_person.nextval,#{name},#{sex},#{age},#{mobile},#{address}) </insert> <!-- 修改操作 --> <update id="update" parameterType="com.lhl.demo1.Person"> update t_person set name=#{name},sex=#{sex},age=#{age},mobile=#{mobile},address=#{address} where id=#{id} </update> <!-- 删除功能 --> <delete id="delete" parameterType="java.lang.Integer"> delete from t_person where id = #{id} </delete> 3.注册mapper文件:在mybatis-config.xml中绑定 <mappers> <!-- 注册管理所有的mapper文件 --> <mapper resource="com/lhl/demo1/PersonDAOImpl.xml"></mapper> </mappers>
单个查询
1.书写dao接口方法
Person selectById(Integer id);
2.书写mapper文件(sql、参数、对查询结果映射实体对象)
<!-- 查询功能 -->
<select id="selectById" parameterType="java.lang.Integer" resultType="查询结果的一行数据映射的实体对象类型(com.lhl.demo1.Person)">
select id,name,sex,age,mobile,address from t_person where id = #{id}
</select>
3.注册mapper文件
多个查询
1.书写dao接口方法
List<Person> selectAll();
2.书写mapper
<select id="selectAll" resultType="rs的一行数据映射实体类型">
select id,name,sex,age,mobile,address from t_person
<select>
3.注册mapper文件
多个参数绑定
1.书写dao
User selectByUsernameAndPassword(String username,String passwor);
2.书写mapper文件
<select id="selectByUsernameAndPassword" resuletType="*******">
select id,username,password from t_person where username=#{arg0} and password=#{arg1};
</select>
或者通过@Param取别名的方式
User selectByUsernameAndPassword(@Param("username")String username,@Param("password")String passwor);
select id,username,password from t_person where username=#{username} and password=#{password};
3.注册mapper文件
xml转义
以下是XML中需要的转义字符:[/size] &(逻辑与) & <(小于) < >(大于) > "(双引号) " '(单引号) '