栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

第三个Mybatis程序-别名和字段属性名不匹配的问题

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

第三个Mybatis程序-别名和字段属性名不匹配的问题

一、别名

问题引入:

在这里,传入了实体类的参数类型,但是这样,我们会觉得参数类型的名比较长,很麻烦,不便于书写,也不便于标记,所以我们要将其简化
故我们可以用下面三种方式来设置别名,简化传入参数的名字

注意:
  • 需要Mybatis的配置文件中进行设置,且位置一般固定
  • 类型别名只是 Java 类型的较短名称。
  • 它仅与 XML 配置相关,并且只是为了减少完全限定类名的冗余类型而存在。
1、直接设置包名

在实体类的实现类中使用的时候,所有需要传入参数为com.study.pojo.User的地方,都可以直接使用user

    
        
    
2、添加包名

指定一个包名,扫明实体类的包,它的默认别名为这个类的类名的首字母小写!(在xml中大写也会编译成功,建议小写)只写到类包的位置,不要写到实体类的位置,否则报错

    
        
    
3、注解

直接在类前加注解
需要先在xml配置 扫描包,然后在实体类之前添加注解,即要先使用第二种方式,再使用第三种,配合使用。

@Alias("hello")
类{
}

要使用第三种的前提是,需要先开启第二种,所以他们的优先级为:
3>2
会使用第三种设置的别名,如果使用第二种的别名,会报错

注意点:
在实体类比较少的时候,使用第一种方式

如果实体类特别多,建议使用第二种

第一种可以自定义别名,第二种不行

二、字段属性不匹配

引入:

在实体类中,如果出现这种情况,我们直接编写而不去处理不匹配的问题,运行程序后会直接报错,提示找不到这个字段,所以必须要学会如何解决这个问题

1、直接在sql语句中取别名

mysql语句中有as这个标签,id as Uid即把id变成Uid,也可以说是当作的意思,as可以省略。
一般在查询语句中才会使用,别的数据库操作中,直接填入实体类的字段名就可以

 
   
        insert into mydatabase.user(id, name, pwd)
        VALUES (#{Uid},#{Uname},#{password})
   
   
   
    
        delete
        from mydatabase.user
        where id = #{Uid};
    

    
    
        update mydatabase.user
        set name=#{Uname},pwd=#{password}
        where id=#{Uid};
    

    
    
    
        select id Uid,name Uname,pwd password from mydatabase.user;
    
2、使用resultMap映射器




	
    
        
        
        
    

    
   
        insert into mydatabase.user(id, name, pwd)
        VALUES (#{Uid},#{Uname},#{password})
   

    
    
        delete
        from mydatabase.user
        where id = #{Uid};
    

    
    
        update mydatabase.user
        set name=#{Uname},pwd=#{password}
        where id=#{Uid};
    

    
    
        select * from mydatabase.user;
    


测试:

原始数据库:

import com.dao.UserMapper;
import com.pojo.User;
import com.utils.MybatisUtils;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;

public class test {

    @Test//增
    public void test1(){
        SqlSession sqlSession = MybatisUtils.getSqlSession();
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        mapper.add(new User(6, "小绿", "66"));
        for (User user : mapper.getAll()) {
            System.out.println(user);
        }
    }


    @Test//删
    public void test2(){
        UserMapper mapper = MybatisUtils.getSqlSession().getMapper(UserMapper.class);
        mapper.delete(6);
        for (User user : mapper.getAll()) {
            System.out.println(user);
        }
    }


    @Test//改
    public void test3(){
        UserMapper mapper = MybatisUtils.getSqlSession().getMapper(UserMapper.class);
        mapper.update(new User(4, "小绿", "40"));
        for (User user : mapper.getAll()) {
            System.out.println(user);
        }
	}



    @Test//查一个
    public void test4(){
        UserMapper mapper = MybatisUtils.getSqlSession().getMapper(UserMapper.class);
        User user = mapper.query(1);
        System.out.println(user);
    }


    @Test//查
    public void test5(){
        SqlSession sqlSession = MybatisUtils.getSqlSession();
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        for (User user : mapper.getAll()) {
            System.out.println(user);
        }
    }

}
总结:

当字段名不匹配的时候,我们最好使用结果集映射器去操作数据,非常的方便快捷,而且便于维护。
对于结果集映射器,我们只需要知道和操作字段名之间的关系即可。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/679050.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号