數據庫的表的字段名稱與實體類(pojo)不對應解決方案


數據庫的表的字段名稱與實體類(pojo)不對應解決方案

數據庫表

![image-20200429130200825](C:%5CUsers%5C%E6%9E%97%E6%AD%A3%E6%98%8E%5CAppData%5CRoaming%5CTypora%5Ctypora-user-images%5Cimage-20200429130200825.png

對應的實體類為

image-20200429130352648

首先在數據庫的表的字段名稱與實體類(pojo)不對應的時候我們查表

  • 創建一個接口,定義一個方法查詢所有用戶

  • image-20200429130628870

  • 在對應的Mapper配置文件中配置

    <?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.lin.Dao.UserMapper">
    <!--    <resultMap id="user" type="com.lin.pojo.User">-->
    <!--        <result column="pswd" property="psw"></result>-->
    <!--    </resultMap>-->
    <!--  <select id="getuser" parameterType="_int" resultMap="user">-->
    <!--            select * from mybatis.user where id= #{id}-->
    <!--  </select>-->
        <select id="getAllUser" resultType="com.lin.pojo.User" >
            select *from user
        </select>
    </mapper>
    
  • 測試

    @Test
    public void test1(){
        SqlSession sqlSession = MybatisUtils.getSqlSession();
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        List<User> user = mapper.getAllUser();
        for (User i : user) {
            System.out.println(i);
    
        }
    
  • 輸出結果

    User{id=1, name='hsay', psw='null'}
    User{id=2, name='哈哈哈', psw='null'}
    User{id=3, name='林正明3', psw='null'}
    User{id=4, name='哈哈哈', psw='null'}

    發現未查到psw,原因就是數據庫的字段名稱與實體類屬性不對應獲取不到值

    解決方案

    1.resultmap

    在xml配置中配置resultmap

    <resultMap id="user" type="com.lin.pojo.User">
        <result column="pswd" property="psw"></result>
    </resultMap>
    

    column是表的字段名也就是列名稱 property是實體的屬性 他倆形成映射關系

    <select id="getAllUser" resultMap="user" >
        select *from user
    </select>
    

    查查詢結果

    User{id=1, name='hsay', psw='1222'}
    User{id=2, name='哈哈哈', psw='123abc'}
    User{id=3, name='林正明3', psw='12345'}
    User{id=4, name='哈哈哈', psw='123abc'}

    2.起別名

    在編寫sql命令中使用起別名的方法將表中的字段名稱起一個名字與實體類的屬性相同,這樣就能把表中的數據映射到實體類中

    <select id="getAllUser" resultType="com.lin.pojo.User" >
        select id,name,pswd as psw from user
    </select>
    

    查詢結果

    User{id=1, name='hsay', psw='1222'}
    User{id=2, name='哈哈哈', psw='123abc'}
    User{id=3, name='林正明3', psw='12345'}
    User{id=4, name='哈哈哈', psw='123abc'}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM