mybatis配置文件和映射文件,mybatis映射文件的主要元素及作用
00-1010 1.ORM概念2。映射文件命名规则3。mybatis 4的两个一致性。总结创建mybatis的步骤补充:MyBatis_自定义结果映射规则总结在解释映射文件规则之前,我们先回顾一下ORM的相关概念。
00-1010 ORM(对象关系映射)对象关系映射
对象:Java的实体类对象
关系:关系数据库
映射:两者之间的对应关系。
字段名和属性名应该一一对应,并且它们的名称应该相同。反射机制在底部调用。
Java概念数据库概念属性列,字段类表对象记录
00-1010对应于表的实体类的类名Mapper.xml
例如,如果数据库表的名称是t_user,其对应的实体类是user,那么对应的映射文件就是UserMapper.xml
一个映射文件对应一个实体类和一个表操作,调用Mapper中的方法执行SQL。
Mybatis映射文件用于编写SQL语句,访问和操作表数据。
Mybatis映射文件存储在src/main/resources/mappers目录中。
目录
Mybatis可以为接口操作数据。如果我们在包中引入映射文件,我们需要有两个一致性。
映射文件的命名空间应与mapper接口的完整类名一致。
在Mapper接口中调用方法时,它会先根据Mapper接口的全类名找到映射文件,再根据方法名找到对应的SQL语句。
映射文件中SQL语句的id应该与映射器接口中的方法名一致。
00-1010创建maven项目并在pom.xml中引入相关依赖项,如数据库驱动、mybatis、junit单元测试、Log4j日志内置在src/main/java中。3.1在pojo包下创建相应的实体类。注意:实体类对应的是数据库表的记录,也就是数据库查询的结果应该以什么方式返回?3.2在mapper包下创建一个mapper接口,该接口定义了操作数据库中表的相关方法。在resources目录下创建mybatis的核心配置文件?xml版本=1.0 编码=UTF-8 ?DOCTYPE配置PUBLIC -//mybatis . org//DTD Config 3.0//EN http://mybatis . org/DTD/mybatis-3-Config . DTD !-configuration代表核心配置文件-configuration!-元素类型“配置”的内容必须匹配(属性?设置?键入别名?typeHandlers?objectFactory?objectWrapperFactory?反射器工厂?插件?环境?databaseIdProvider?地图绘制者?).- !- typeAliases/typeAliases -!-因为后面要查询的语句很多,每个查询语句都要对应一个实体类,那么我们在指定返回类型的时候---要写类的完整路径,路径可能会很长,很麻烦。我们可以使用标签-properties resource= JDBC . properties /!-设置类型别名-类型别名!- typeAlias:设置类型的别名属性:type:设置需要设置的类型别名:设置类型的别名。如果不设置该属性,则该类型将有默认别名,类名不区分大小写-TypeAliasType= com.atguigu . mybatis . mybatis . POJO . user alias= user -以包为单位,将包下的所有类型设置为默认类型别名,类名——不区分大小写-包名= com . atguigu .
mybatis.pojo"/> </typeAliases> <!-- 环境可以有多个,我们用默认的环境--> <!-- enviments:配置连接数据库的环境 id:表示连接数据库环境的唯一标识,不能重复--> <environments default="development"> <environment id="development"> <!-- transactionManager设置事务管理方式 type=DBCMANAGED JDBC:表示在当前环境中,执行SQL时,使用的是JDBC中原生的事务管理方式,事务的提交或回滚需要手动处理 MANAGED:表示被谁管理,例如Spring--> <transactionManager type="JDBC"/><!-- type用来设置数据源的类型type=POOLEDUNPOOLEDJNDIPOOLED:表示使用的是数据库连接池缓存数据库连接UNPOOLED:表示不使用数据库连接池JNDI:表示使用的是上下文中的数据源--> <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> <environment id="test"> <transactionManager type="JDBC"/> <!-- type=POOLED表示使用数据库连接池--> <dataSource type="POOLED"> <property name="driver" value="${driver}"/> <property name="url" value="${url}"/> <property name="username" value="${username}"/> <property name="password" value="${password}"/> </dataSource> </environment> </environments> <!-- 引入映射文件--> <!-- 每一个Mapper.xml都需要在Mybatis的核心配置文件中注册--><!-- mapper文件的位置是为了找到要执行的sql语句resources属性指定的是mapper文件的路径这个路径是从target/classes路径开始的用/作为分隔符--> <mappers><!-- <mapper resource="mappers/UserMapper.xml"/>--><!-- 这个时候,这个包里面的所有配置文件都会被引入--><!-- 以包为单位引入映射文件 要求: 1.mapper接口所在的包要和映射文件所在的包一致 2.mapper接口要和映射文件的名字一致 --> <package name="com.atguigu.mybatis.mapper"/> </mappers></configuration>4.在resources目录下面建立mapper映射文件
5.测试
//加载核心配置文件 InputStream is = Resources.getResourceAsStream("mybatis-config.xml"); //获取SqlSessionFactoryBuilder SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder(); //获取SqlSessionFactory 工厂模式 SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(is); //获取mybatis操作的会话对象 //sqlSession默认是不自动提交事务的,如果我们写上参数true,就代表自动提交 SqlSession sqlSession = sqlSessionFactory.openSession(true); //获取mapper接口的对象 UserMapper mapper = sqlSession.getMapper(UserMapper.class); int i = mapper.insertUser(); //提交事务// sqlSession.commit(); System.out.println("结果:"+i);
补充:MyBatis_自定义结果映射规则
自定义resultMap,实现高级结果集映射
在EmployeeMapperPlus.xml中有:
package com.atguigu.mybatis.dao;import java.util.List;import com.atguigu.mybatis.bean.Employee;public interface EmployeeMapperPlus { public Employee getEmpById(Integer id);}
在EmployeeMapperPlus.xml中实现方法:
<!--自定义某个javaBean的封装规则 type:自定义规则的Java类型 id:唯一id方便引用 --> <resultMap type="com.atguigu.mybatis.bean.Employee" id="MySimpleEmp"> <!--指定主键列的封装规则 id用来定义主键,会底层有优化; column:指定哪一列 property:指定对应的javaBean属性 --> <id column="id" property="id"/> <!-- result定义普通列封装规则 --> <result column="last_name" property="lastName"/> <!-- 其他不指定的列会自动封装:我们只要写resultMap就把全部的映射规则都写上。 --> <result column="email" property="email"/> <result column="gender" property="gender"/> </resultMap> <!-- resultMap:自定义结果集映射规则; --> <!-- resultMap与resultType只能二选一 --> <!-- public Employee getEmpById(Integer id); --> <select id="getEmpById" resultMap="MySimpleEmp"> select * from tbl_employee where id=#{id} </select>
测试:
先把驼峰命名法关了<setting name="mapUnderscoreToCamelCase" value="false"/>,或者注释掉也可以
@Test public void test05() throws IOException{ SqlSessionFactory sqlSessionFactory = getSqlSessionFactory(); SqlSession openSession = sqlSessionFactory.openSession(); try{ EmployeeMapperPlus mapper = openSession.getMapper(EmployeeMapperPlus.class); Employee empById = mapper.getEmpById(1); System.out.println(empById); }finally{ openSession.close(); } }
即使把驼峰命名关了还是可以按照我们自定义的规则封装成功的
总结
到此这篇关于Mybatis映射文件规则的文章就介绍到这了,更多相关Mybatis映射文件规则内容请搜索盛行IT以前的文章或继续浏览下面的相关文章希望大家以后多多支持盛行IT!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。