济南网站制作费用,免费私人网站建设软件,网络营销怎么做网站,福建省文明建设办公室网站目录
什么是ORM
一#xff0c;列的别名
二#xff0c;结果映射
三#xff0c;总结 什么是ORM ORM#xff1a;对象关系映射#xff08;Object Relational Mapping#xff0c;简称ORM#xff09;模式是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术。简…目录
什么是ORM
一列的别名
二结果映射
三总结 什么是ORM ORM对象关系映射Object Relational Mapping简称ORM模式是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术。简单的说ORM是通过使用描述对象和数据库之间映射的元数据将程序中的对象自动持久化到关系数据库中。 1.提高了开发效率。由于ORM可以自动对Entity对象与数据库中的Table进行字段与属性的映射所以我们实际可能已经不需要一个专用的、庞大的数据访问层。 2.ORM提供了对数据库的映射不用sql直接编码能够像操作对象一样从数据库获取数据。
MyBatis只能自动维护库表”列名“与”属性名“相同时的对应关系二者不同时无法自动ORM如下
一列的别名
在SQL中使用 as 为查询字段添加列别名以匹配属性名
在RoleDao接口中
public ListRole findAll();
在RoleDao.xml文件中
select idfindAll resultTypecom.by.pojo.Role select id, role_name as roleName, role_desc as roleDesc from role/select
在测试类中
public class MyBatisTset {private SqlSession sqlSession;private InputStream inputStream;Beforepublic void init() throws IOException {//加载配置文件String resource mybatis-config.xml;inputStream Resources.getResourceAsStream(resource);//创建SessionFactorySqlSessionFactory sessionFactory new SqlSessionFactoryBuilder().build(inputStream);//使用数据的会话实例sqlSession sessionFactory.openSession();}Testpublic void testFindAll(){RoleDao roleDao sqlSession.getMapper(RoleDao.class);ListRole roleList roleDao.findAll();for (Role role : roleList) {System.out.println(role);}}Afterpublic void close() throws IOException {sqlSession.close();inputStream.close();}
}输出结果 如果我们的查询很多都使用别名的话写起来岂不是很麻烦有没有别的解决办法呢
二结果映射
在RoleDao接口中
public ListRole findAll2();
在RoleDao.xml文件中
!--id:和select查询标签的返回值保持一致type: 映射实体的全类名--resultMap idfindAll2ResultMap typecom.by.pojo.Role!--描述主键字段的映射关系property实体类的属性column数据表字段名称--id propertyid columnid /!--描述非主键字段的映射关系property实体类的属性column数据表字段名称--result propertyroleName columnrole_name /result propertyroleDesc columnrole_desc //resultMapselect idfindAll2 resultMapfindAll2ResultMap select * from role/select
在测试类中
public class MyBatisTset {private SqlSession sqlSession;private InputStream inputStream;Beforepublic void init() throws IOException {//加载配置文件String resource mybatis-config.xml;inputStream Resources.getResourceAsStream(resource);//创建SessionFactorySqlSessionFactory sessionFactory new SqlSessionFactoryBuilder().build(inputStream);//使用数据的会话实例sqlSession sessionFactory.openSession();}Testpublic void testFindAll(){RoleDao roleDao sqlSession.getMapper(RoleDao.class);ListRole roleList roleDao.findAll2();for (Role role : roleList) {System.out.println(role);}}Afterpublic void close() throws IOException {sqlSession.close();inputStream.close();}
}
输出结果 三总结
ORM解决的主要问题是对象关系的映射。域模型和关系模型分别是建立在概念模型的基础上的。域模型是面向对象的而关系模型是面向关系的。一般情况下一个持久化类和一个表对应类的每个实例对应表中的一条记录类的每个属性对应表的每个字段。 ORM技术特点 1.提高了开发效率。由于ORM可以自动对Entity对象与数据库中的Table进行字段与属性的映射所以我们实际可能已经不需要一个专用的、庞大的数据访问层。 2.ORM提供了对数据库的映射不用sql直接编码能够像操作对象一样从数据库获取数据。 ORM的优缺点 1.ORM的缺点是会牺牲程序的执行效率和会固定思维模式。 2.从系统结构上来看,采用ORM的系统一般都是多层系统系统的层次多了效率就会降低。ORM是一种完全的面向对象的做法而面向对象的做法也会对性能产生一定的影响。