mybatis解决字段和属性名不一致问题的三种方法
方法一:修改sql语句
比如select smp_name(数据库字段名) smpName(类属性名) form user;
方法二:在mybatis全局配置里面设置
这里的映射规则是将_映射为驼峰命名法,比如smp_name会被映射为smpName
<!--设置MyBatis的全局配置--> <settings> <!--将_自动映射为驼峰,emp_name:empName--> <setting name="mapUnderscoreToCamelCase" value="true"/> <!--开启延迟加载--> <setting name="lazyLoadingEnabled" value="true"/> </settings>
方法三:设置resultMap
<resultMap id="empResultMap" type="Emp"> <id property="eid" column="eid"></id> <result property="empName" column="emp_name"></result> <result property="age" column="age"></result> <result property="sex" column="sex"></result> <result property="email" column="email"></result> </resultMap>
Mybatis处理多对一映射关系的三种方式
方式一:级联属性赋值
<!--处理多对一映射关系方式一:级联属性赋值--> <resultMap id="empAndDeptResultMapOne" type="Emp"> <id property="eid" column="eid"></id> <result property="empName" column="emp_name"></result> <result property="age" column="age"></result> <result property="sex" column="sex"></result> <result property="email" column="email"></result> <result property="dept.did" column="did"></result> <result property="dept.deptName" column="dept_name"></result> </resultMap>
方式二:association
<!--处理多对一映射关系方式二:association--> <resultMap id="empAndDeptResultMapTwo" type="Emp"> <id property="eid" column="eid"></id> <result property="empName" column="emp_name"></result> <result property="age" column="age"></result> <result property="sex" column="sex"></result> <result property="email" column="email"></result> <!-- association:处理多对一的映射关系 property:需要处理多对的映射关系的属性名 javaType:该属性的类型 --> <association property="dept" javaType="Dept"> <id property="did" column="did"></id> <result property="deptName" column="dept_name"></result> </association> </resultMap>
方式三:分步查询
<resultMap id="empAndDeptByStepResultMap" type="Emp"> <id property="eid" column="eid"></id> <result property="empName" column="emp_name"></result> <result property="age" column="age"></result> <result property="sex" column="sex"></result> <result property="email" column="email"></result> <!-- select:设置分步查询的sql的唯一标识(namespace.SQLId或mapper接口的全类名.方法名) column:设置分布查询的条件 fetchType:当开启了全局的延迟加载之后,可通过此属性手动控制延迟加载的效果 fetchType="lazy|eager":lazy表示延迟加载,eager表示立即加载 --> <association property="dept" select="com.atguigu.mybatis.mapper.DeptMapper.getEmpAndDeptByStepTwo" column="did" fetchType="eager"></association> </resultMap>