• MyBatis---初阶


    一、MyBatis作用

    是一种更简单的操作和读取数据库的工具。

    二、MyBatis准备工作

    1、引入依赖

    2、配置Mybatis(数据库连接信息)

    3、定义接口

    @Mapper注解是MyBatis中用来标识接口为Mapper接口的注解。在MyBatis中,Mapper接口是用来定义SQL映射的接口,通过@Mapper注解标识的接口会被MyBatis自动扫描并注册为Mapper接口,从而可以在MyBatis的配置文件中进行配置和使用。

    4、准备数据

    建表规范:字段全部小写,单词之间使用_分割;必须有id、create_time、update_time3个字段。

    5、创建对应的实体类

    三、操作数据库--注解实现

    1、查询所有用户

    (1)实现代码

    (2)测试

    生成的测试代码,@SpringBootTest是加载spring运行环境:

    运行结果:

    该结果只能看到打印的结果,不能看见sql语句、参数等信息,可以配置。

    配置内容:

    再次运行代码:

    2、根据id查询指定用户

    (1)代码实现

    id=#{id},id作为参数传给sql语句,且要保证参数名也为id,可以使用@Param重命名。

    (2)测试

    运行结果:

    3、根据id和姓名查询指定用户

    (1)代码实现

    (2)测试

    运行结果:

    4、查询存在的问题

    以上图片对比可以发现:sql的运行结果和java(mybatis)运行结果有些地方不一致。Java结果是null

    sql表字段:

    java类成员变量:

    mybatis会根据查询的结果进行对应赋值,前几个属性名是一样的,后几个不一样,导致后几个变量名无法一一对应,使得不一样的成员变量没有结果。

    5、解决属性名不一致

    (1)起别名

    可以给数据库属性名起别名,使得和成员变量名一致。

    运行结果:

    (2)结果映射

    对于不一样的名字,可以将数据库名和java成员变量名进行一一映射。

    运行结果:

    对于该映射也可以在其他方法中使用:

    给该映射定义一个id名:

    复用该映射关系:

    运行结果:

    (3)配置文件实现自动转化

    实现java变量驼峰命名方式与数据库属性命名方式的自动转换。

    配置内容:

    此时就可以实现一一对应了,不会出现java变量为null了。

    6、增加用户

    (1)代码实现

    (2)测试

    运行结果:

    思考一个问题:以上没有对id进行赋值,自动赋值时,如何获取到自增id值???

    在接口方法上加上@Options注解,useGeneratedKeys会命令mybatis使用jdbc的getuseGeneratedKeys方法,取到数据库内部自增主键,默认值为false;keyProperty:指定能够唯⼀识别对象的属性

    获取id值:

    运行结果:

    7、更新用户

    (1)代码实现

    (2)测试

    运行结果:

    8、删除用户

    (1)代码实现

    (2)测试

    运行结果:

    四、操作数据库--xml实现

    定义一个接口UserInfoXmlMapper;创建UserInfoXMLMapper.xml,xml里的内容是固定的,需要修改接口路径。

    配置yml:

    1、查询所有用户

    (1)代码实现

    (2)测试

    运行结果:

    2、根据id查询用户

    (1)代码实现

    (2)测试

    运行结果:

    3、根据id和用户名查询用户

    (1)实现代码

    (2)测试

    运行结果:

    4、解决属性名不一致

    xml实现sql操作中,依旧会存在数据库字段名和成员变量名不对应的问题,以上图片没有呈现出来是因为配置中已经实现转换了。

    (1)配置文件实现自动转化

    实现java变量驼峰命名方式与数据库属性命名方式的自动转换。

    配置内容:

    此时就可以实现一一对应了,不会出现java变量为null了。

    (2)起别名

    (3)结果映射

    对于不一样的名字,可以将数据库名和java成员变量名进行一一映射。

    5、增加用户

    (1)实现代码

    (2)测试

    运行结果:

    对于获取到自增id值的方法和注解大致一样:

    运行结果:

    6、更新用户

    (1)实现代码

    (2)测试

    运行结果:

    7、删除用户

    (1)实现代码

    (2)测试

    运行结果:

  • 相关阅读:
    Linux查看指定端口是否被占用
    Nodejs初体验
    [Vue]写一个简单的文件上传控件
    微机原理(汇编语言)学习
    怎样把某个公司所有的专利全部查到、一网打尽?
    ELK日志保留7天-索引生命周期策略
    几个免费的富文本编辑器,这不完胜付费?
    【Flink】第二节 windows下运行
    数据分析-Pandas两种分组箱线图比较
    虚拟人铺路数字产业未来
  • 原文地址:https://blog.csdn.net/m0_69468924/article/details/136213005