Java- My Batis
==================MyBatis简介======================
1、MyBatis简介
iBatis-->Apache-->Google(MyBatis)
MyBatis是对JDBC技术的封装,用于访问数据库操作
-封装获取连接,执行SQL,释放连接过程
(规则:将连接参数卸载Mybatis主配置文件中)
-封装了根据SQL生成Statement,给SQL设置参数值
(规则:在SQL编写时利用#{属性}替代?.)
Cost对象-->#{属性}表达式提取参数信息
insert into cost (name,duration,unit_cost)
values(#{name},#{duration},#{unit_cost})
-封装了将ResultSet数据封装成实体对象的过程
(规则:默认查询结果集字段名与实体对象属性名一致)
select..from
cost_id | name |
---|---|
1 | zzz |
2 | bbb |
//获取connection
//写一个SQL,获取Statement
//设置参数,执行SQL
//释放connection
2、MyBatis体系结构
- SqlMapConfig.xml
作用:存储连接Db参数;定义存储SQL的XML文件 - 实体类
作用:作为增删改SQL输入参数;作为查询的返回类型 - SQL定义文件
作用:存储SQL语句 - SQLSession
作用:执行SQL操作
3、MyBatis主要API
- SqlSessionFactoryBuilder加载SqlMapConfig.xml
- SqlSessionFactory
- SqlSession
4、MyBatis的基本应用
5、Mapper映射器接口
EmpMapper.xml–>Mapper接口(Dao接口)
–>MyBatis生成实现类(Dao实现)
一套接口实现规则,程序员按该规则定义接口,
MyBatis就可以动态生成该接口的实现类。
- SQL定义文件的格式
<mapper namespace="对应的接口类型">
<mapper namespace="dao.EmpDao">
- 定义接口方法规则
SQL定义的id名对应接口方法名
parameterType类型对应接口方法参数类型
resultType类型对应接口方法返回类型
单行: resultType
多行: List<resultType类型>
- EmpDao dao = session.getMapper(EmpDao.class);
EmpDao dao = $Proxy4对象();
public class $Proxy4 implements EmpDao{
public List<Emp> findAll(){
return session.selectList("findAll");
}
public Emp findById(int id){
return session.selectOne("findById",id);
}
}
resultType=”entity.Emp”:默认结果集和属性名称一致才能封装数据
SELECT * FROM EMP
表:id,name,age
结果集:id,name,age
Emp:eid,ename,eage
//利用SQL别名方式解决实体属性和表字段名称不一致
SELECT id eid,name ename,age eage
FROM emp
表:id,name,age
结果集:eid,ename,eage
Emp:eid,ename,eage
public class Emp{
private Integer eid;
private String ename;//与表字段一致name
private String eage;
}