一,由于在实际开发中,数据表中的列和需要返回的对象的属性可能不完全一致,这种情况下MyBatis不会自动赋值,需要使用<resultMap>元素进行结果映射集。
具体如下:
1.利用Mysql创建一个数据库mybatis,可以直接创建,也可以使用运行脚本代码实现,我这里采用直接创建,创建完数据库之后,创建一个名为t_student的表(也可以命名为其他的名字,切勿使用中文,保留字等等),并在表中插入几条测试数据(测试数据根据心情填写),代码如下:
USE mybatis;
create table t_student(
sid int primary key AUTO_INCREMENT,
sname varchar(50),
sage int
);
insert into t_student(sid,sname,sage) values('xixi',18);
insert into t_student(sid,sname,sage) values('qiqi',18);
insert into t_student(sid,sname,sage) values('mumu',20);
运行如下:
2.在项目src/main/java目录下面创建com.itheima.pojo包,并在该包下面创建实体类Student,之后在该类中分别定义id,name,age属性,以及getter()方法和setter方法。具体代码如下:
package com.itheima.pojo; public class Student { private Integer id; //学生id private String name; //学生姓名 private Integer age; //学生年龄 public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } @Override public String toString(){ return "User[id="+id+",name="+name+",age="+age+"]"; } }
3.在src/main/java目录下创建com.itheima.mapper包,并在该包下面创建映射文件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.itheima.mapper.StudentMapper"> <resultMap id="studentMap" type="com.itheima.pojo.Student"> <id property="id" column="sid"/> <result property="name" column="sname"/> <result property="age" column="sage"/> </resultMap> <select id="findAllStudent" resultMap="studentMap"> select * from t_student; </select> </mapper>
4.在核心配置文件mybatis-config.xml中的<mapper>元素下添加代码:
<mapper resource="com/itheima/mapper/StudentMapper.xml"/>
5.在src/test/java目录下的Test包中创建测试类MyBatisTest,在测试类中编写测试方法,用于测试<resultMap>元素实现查询结果的映射,具体代码如下:
package Test; import com.itheima.pojo.Student; import org.apache.ibatis.io.Resources; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder; import org.junit.After; import org.junit.Before; import org.junit.Test; import java.io.IOException; import java.io.Reader; import java.util.List; public class MyBatisTest { private SqlSessionFactory sqlSessionFactory; private SqlSession sqlSession; @Before public void init(){ //定义读取文件名 String resources="mybatis-config.xml"; //创建流 Reader reader=null; try{ //读取mybatis-config.xml文件到reader对象中 reader= Resources.getResourceAsReader(resources); //初始化mybatis,创建SqlSessionFactory类的对象 SqlSessionFactory sqlMapper=new SqlSessionFactoryBuilder().build(reader); sqlSession=sqlMapper.openSession(); }catch (IOException e){ e.printStackTrace(); } } @Test public void findAllStudentTest(){ List<Student> list= sqlSession.selectList("com.itheima.mapper.StudentMapper.findAllStudent"); for(Student student:list){ System.out.println(student); } } @After public void destory(){ //提交事务 sqlSession.commit(); //关闭事务 sqlSession.close(); } }
6.运行MyBatisTest文件,得到结果如下:
附图(方便查看目录位置):
本文章为学习javaee中MyBatis的核心配置课程时的笔记 ,代码以及文字描述均为书上的代码,支持书本,支持原创。
参考文献:JAVA EE 企业版应用开发教程第2版(黑马程序员 编著)