• Mybatis 入门之resultMap与resultType解说实例


    resultMap:适合使用返回值是自己定义实体类的情况

    resultType:适合使用返回值得数据类型是非自己定义的,即jdk的提供的类型

    resultMap : 

    type:映射实体类的数据类型

    id:resultMap的唯一标识

    column:库表的字段名

    property:实体类里的属性名


    配置映射文件:

    <?

    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"> <!-- namespace:当前库表映射文件的命名空间,唯一的不能反复 --> <mapper namespace="com.hao947.sql.mapper.PersonMapper"> <!-- type:映射实体类的数据类型 id:resultMap的唯一标识 --> <resultMap type="person" id="BaseResultMap"> <!-- column:库表的字段名 property:实体类里的属性名 --> <id column="person_id" property="personId" /> <result column="name" property="name" /> <result column="gender" property="gender" /> <result column="person_addr" property="personAddr" /> <result column="birthday" property="birthday" /> </resultMap> <!--id:当前sql的唯一标识 parameterType:输入參数的数据类型 resultType:返回值的数据类型 #{}:用来接受參数的。假设是传递一个參数#{id}内容随意,假设是多个參数就有一定的规则,採用的是预编译的形式select * from person p where p.id = ? ,安全性非常高 --> <!-- sql语句返回值类型使用resultMap --> <select id="selectPersonById" parameterType="java.lang.Integer" resultMap="BaseResultMap"> select * from person p where p.person_id = #{id} </select> <!-- resultMap:适合使用返回值是自己定义实体类的情况 resultType:适合使用返回值的数据类型是非自己定义的,即jdk的提供的类型 --> <select id="selectPersonCount" resultType="java.lang.Integer"> select count(*) from person </select> <select id="selectPersonByIdWithMap" parameterType="java.lang.Integer" resultType="java.util.Map"> select * from person p where p.person_id= #{id} </select> </mapper>




    实体类Person.java

    <pre name="code" class="java">package com.hao947.model;
    import java.util.Date;
    public class Person {
    	private Integer personId;
    	private String name;
    	private Integer gender;
    	private String personAddr;
    	private Date birthday;
    	@Override
    	public String toString() {
    		return "Person [personId=" + personId + ", name=" + name + ", gender="
    				+ gender + ", personAddr=" + personAddr + ", birthday="
    				+ birthday + "]";
    	}
    }
    

    
    測试类
    

    public class PersonTest {
    	SqlSessionFactory sqlSessionFactory;
    	@Before
    	public void setUp() throws Exception {
    		// 读取资源流
    		InputStream in = Resources.getResourceAsStream("sqlMapConfig.xml");
    		// 初始化session工厂
    		sqlSessionFactory = new SqlSessionFactoryBuilder().build(in);
    	}
    
    	
    
    	@Test
    	public void selectPersonById() {
    		// 创建一个sqlsession
    		SqlSession session = sqlSessionFactory.openSession();
    		try {
    			Person p = session.selectOne(
    					"com.hao947.sql.mapper.PersonMapper.selectPersonById", 1);
    			System.out.println(p);
    		} finally {
    			session.close();
    		}
    	}
    	@Test
    	public void selectPersonCount() {
    		// 创建一个sqlsession
    		SqlSession session = sqlSessionFactory.openSession();
    		try {
    			Integer p = session.selectOne(
    					"com.hao947.sql.mapper.PersonMapper.selectPersonCount");
    			System.out.println(p);
    		} finally {
    			session.close();
    		}
    	}
    	@Test
    	public void selectPersonByIdWithMap() {
    		// 创建一个sqlsession
    		SqlSession session = sqlSessionFactory.openSession();
    		try {
    			Map<String ,Object> map = session.selectOne(
    					"com.hao947.sql.mapper.PersonMapper.selectPersonByIdWithMap",1);
    			System.out.println(map);
    		} finally {
    			session.close();
    		}
    	}
    }


  • 相关阅读:
    【转】Oracle 建立索引及SQL优化
    SQL Server Express LocalDB 存入中文产生乱码问题
    安装(c)npm及搭建Vue项目详解
    【转】VSCode 调试 Node.js 介绍
    【转】C#根据用户信息,生成token和cookie的方法
    远程连接 Docker 的 MySQL 服务
    mysql服务器和服务器启动程序
    一台物理机上运行多个mysql实例(Running Multiple MySQL Instances on One Machine)
    mysql5.7主从切换(master/slave switchover)
    选项文件(Option Files)/配置文件(Configuration Files)的使用
  • 原文地址:https://www.cnblogs.com/zsychanpin/p/6858565.html
Copyright © 2020-2023  润新知