一、MyBatis和Hibernate的区别:
二、定义别名、配置数据库:
1.当类型名字过长时建议使用
2.使用properties配置
三、使用Mapper接口的方式 :
1.新建UserMapper接口 :
四、ResultMap映射
一、MyBatis和Hibernate的区别:
和hibernate对比,MyBatis更基础,要求使用者自己控制的东西更多。
mybatis完成了基本的一些ORM概念,但是没有Hibernate那么完善。
要使用mybatis,程序员的关注点更集中于SQL和数据库结构设计。
mybatis没有hibernate使用起来那么面向对象,所以,在使用mybatis的时候,hibernate的一些思想和设计需要改变。
MyBatis的好处:更底层,对性能控制更有优势。
细节上:最大的区别,MyBatis没有get 方法 只能selectOnly 去拿
二、定义别名、配置数据库:
1.当类型名字过长时建议使用
2.使用properties配置
1.新建db.properties
2.主配置文件中使用占位符的方式定义数据库连接信息,
3.在创建sqlSessionFactory的时候传入properties对象 :
方式一:
方式二:
直接在主配置文件中添加配置
三、使用Mapper接口的方式 :
前门入门的Demo,使用statementID的方式存在如下问题:
1.传入的statement字符串有可能会写错,写错的时候必须等到运行的时候才发现
2.传入的参数无法限定类型
使用Mapper接口的方式:
1.新建UserMapper接口 :
package com.mybatis01;
import java.util.List;
public interface UserMapper {
void save(User u);
void update(User u);
User get(Long id);
List<User> list();
void delete(Long id);
}
Notes:
1.接口的全限定名==UserMapper.xml中的namespace
2.接口中方法==UserMapper.xml中标签ID
3.接口方法上的参数==UserMapper.xml中的parameterType
4.接口方法上的返回值类型==UserMapper.xml中的resultType
对应的API UserMapper mapper = session.getMapper(UserMapper.class);
分析:
这个时候生成了一个动态代理类:
通过Debug Junit4断点调试可以进入到里面看到
四、ResultMap映射
当查询出来的字段名和对象中的属性名不一致的情况,就没办法使用resultType来默认映射(同名规则)
解决方案: 使用resultMap来映射数据库中的字段到底注入到对象中什么属性中.
1.在mapper文件中定义resultMap标签:
2.在查询标签中使用resultMap=”base_map”