MyBatis学习(四)--解决实体属性和数据库字段不一致的问题

写在前面
孤傲苍狼的博客:https://www.cnblogs.com/xdp-gacl/category/655890.html
代码中会有很多重要的注释,请不要忽略。

前面在创建实体时,强调过一定要和数据库列名一致。如果不一致结果是映射不到实体中的,但是数据库和java的命名规则是不一样的,怎么办呢?
有两种方法:
1、利用sql中的as解决
2、MyBatis提供的resultMap

0、准备数据

创建一张学生表,插入数据

CREATE TABLE `student` (
  `s_id` int(11) NOT NULL AUTO_INCREMENT,
  `s_name` varchar(50) DEFAULT NULL,
  PRIMARY KEY (`s_id`)
) 
INSERT INTO student(s_name) VALUES ("张三"),("李四"),("王五")

新建学生的实体类

package com.project.bean;
public class StudentBean {
	int id;
	String name;
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	@Override
	public String toString() {
		return "StudentBean [id=" + id + ", name=" + name + "]";
	}
}

1、使用SQL中的AS解决

  1. 新建StudentMapper.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
    PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
    "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

<mapper namespace="com.project.mapper.StudentMapper">

	<select id="testStudent" resultType="StudentBean">
		SELECT
		s_id AS id,
		s_name AS name
		FROM student;
	</select>

</mapper>
  1. 注册StudentMapper.xml
<mappers>
	<mapper resource="com/project/xml/StudentMapper.xml" />
</mappers>
  1. 测试方法
	@Test
	public void testStudent() {
		SqlSession session = MyBatisUtil.getSqlSession();
		try {
			List<StudentBean> list = session.selectList("com.project.mapper.StudentMapper.testStudent");
			for (StudentBean student : list) {
				System.out.println(student);
			}
		} catch (Exception e) {
			e.printStackTrace();
		}finally {
			session.close();
		}
	}

2、使用resultMap

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
    PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
    "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

<mapper namespace="com.project.mapper.StudentMapper">

	<!--这里不再是resultType,而是resultMap-->
	<select id="testStudent" resultMap="map">
		SELECT * FROM student;
	</select>

	<!--type属性用来指定实体类-->
	<resultMap id="map" type="StudentBean">
	<id property="id" column="s_id"></id>
	<result property="name" column="s_name"></result>
	<!--<result property="age" column="s_age"></result>-->
	</resultMap>

</mapper>

如果简单的查询可以使用as来解决问题,但是复杂查询还是推介大家使用resultMap。

猜你喜欢

转载自blog.csdn.net/candy_27/article/details/83830837