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();
        }
  • 相关阅读:
    静态邻接表dijkstra
    最短路径系列【最短路径、哈密顿路等】
    python 给多人发送邮件,且将结果添加为附件
    Excel调换数据位置
    try ... except...,好处是执行失败后,仍然可以继续运行
    制作表头,2种方式
    工资表变工资条,2种方式
    C言语教程第一章: C言语概论 (4)
    从红旗5.0说起——看Linux的内存解决
    红旗Linux桌面4.1文本安装历程图解(二)
  • 原文地址:https://www.cnblogs.com/lonske/p/8979823.html
Copyright © 2011-2022 走看看