zoukankan      html  css  js  c++  java
  • Mybatis_resultMap

    类中属性的名称要和数据库的属性名称一致,不然找不到,但是开发中数据库属性命名用下划线,类中属性用驼峰,所以有时名称是不一样的。所有有了resultMap

    resultMap使用场景,有映射,java实体类属性名与数据库字段名不同的情况下。

    <?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:映射文件的命名空间,内容规范就是映射文件的包名.此xml文件名 -->
    <mapper namespace="xxx.x.mapper.PersonTestMapper">
    
    
        <!--
            resultMap的type是实体类(实体数据类型),id随便起是resultMap唯一标识,下面原来的resultType去掉改成resultMap,值就是这个id
            除了表里的id列用id表示外,其余都用result表示,所有属性都要写
            column表示表里的字段名,property表示实体类中属性的名
        -->
        <resultMap type="xxx.x.Person" id="BaseResultMap"> 
            <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>
        <!-- 
            parameterType是传递参数的类型,下面为整型写法
            sql语句最后一个参数id是变量
            resultType是查询后的结果,内容是需要输出到的地址,那个Person类里需要定义好那些需要接受数据的属性
            #{}使用预编译的方式生成SQL,防止sql的注入
         -->
        <select id="selectPersonByID" parameterType="java.lang.Integer" resultMap="BaseResultMap">
            select * from person_test where id = #{id}
        </select>
        
    </mapper>

    但resultType也不是没用,下面情况就需要用到,没有映射情况下:

        <select id="selectPersonCount" resultType="java.lang.Integer" >
            select count(*) from person
        </select>

    调用这个的java语句就是:

    SqlSessionFactory sessionFactory;
        public void setUp() throws Exception {
            InputStream in = Resources.getResourceAsStream("sqlMapConfig.xml");
            sessionFactory = new SqlSessionFactoryBuilder().build(in);
        }
        public void test() {
            //创建SqlSession
            SqlSession session = sessionFactory.openSession();
          
            Integer count = session.selectOne("xxx.x.mapper.PersonTestMapper.selectPersonCount"); //查找到要执行的sql语句,用命名空间.id  
            System.out.println(count);
            session.close();
        }
  • 相关阅读:
    Checking Types Against the Real World in TypeScript
    nexus pip proxy config
    go.rice 强大灵活的golang 静态资源嵌入包
    几个golang 静态资源嵌入包
    rpm 子包创建学习
    Rpm Creating Subpackages
    ava 类似jest snapshot 功能试用
    ava js 测试框架基本试用
    The Architectural Principles Behind Vrbo’s GraphQL Implementation
    graphql-compose graphql schema 生成工具集
  • 原文地址:https://www.cnblogs.com/lonske/p/8979823.html
Copyright © 2011-2022 走看看