从零学 spring cloud第3-4课:数据库基础之MyBatis细节说明

    项目的DEMO代码:https://github.com/heyu52/-spring-cloud

@MapperScan与@Mapper

可能你会在很多的文章中都能看到,要在项目的入口加上注解@MapperScan。其实这和我使用@Mapper是一样的,两种方法扫描配置用的是一个地方,只是扫描入口不同。

@insert

大家要注意的是这个是有返回的值的,它返回的是你插入了多少条数据,并不是返回你插入行的ID,你可以想一下,你可能一下子插入几条记录,那给你返回哪一行的ID好呢?

关于枚举

在上节的代码基础上,我们新增一个性别的枚举类

package com.csdn.demo.enums;

public enum UserSexEnum {
    男, 女
}

我们对Model也进行修改

package com.csdn.demo.model;

import com.csdn.demo.enums.UserSexEnum;

public class User {
    private Long id;
    private String name;
    private int age;
    private UserSexEnum sex;

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public UserSexEnum getSex() {
        return sex;
    }

    public void setSex(UserSexEnum sex) {
        this.sex = sex;
    }

    @Override
    public String toString() {
        return ("id=" + this.id + "name=" + this.name + ",age=" + this.age + ",pass=" + this.sex);
    }

    public User() {

    }

    public User(String name, UserSexEnum sex, int age) {
        this.name = name;
        this.sex = sex;
        this.age = age;
    }
}

我们修改一下插入用户的方法

    @RequestMapping("/insertUser")
    public int insertUser() {
        User user = new User();
        user.setName("20190706");
        user.setSex(UserSexEnum.男);
        user.setAge(99);
        userMapper.insertUser(user);
        return 1;
    }

运行项目,并有浏览器输入:http://127.0.0.1:8080/insertUser
在这里插入图片描述
我们先对查询数进行执行一次查询
在这里插入图片描述
明显,查询返回的结果是没有问题的。
你可能会在很多的教程上看到这样的写法:

    @Select("SELECT * FROM user WHERE id = #{id}")
    @Results({
            @Result(property = "name", column = "name"),
            @Result(property = "sex",  column = "sex", javaType = UserSexEnum.class),
    })
    User getUserById(Long id);

其实就算你不使用javaType ,值也是一样的

关于驼峰规则

如果说我们的数据库命名是了下划线,比如 user_sex,但我们的model定义成使用 UserSex,当然我们可以使用@Results和@Result来解决这个问题,我们还可以直接使用配置,配置mybatis直接支持驼峰规则。我们只要在application.properties使用下面的配置:

mybatis.configuration.map-underscore-to-camel-case=true

输出SQL脚本日志

如果你想把项目执行的SQL脚本都输出来,我们在application.properties只要一个配置项就可以了:

logging.level.com.csdn.demo.mapper=debug

在这里插入图片描述
如果测试的时候,你想看得更清楚,那你可以这样配置:

logging.level.com.csdn.demo.mapper=TRACE

在这里插入图片描述
这样连结果都打印出来了,还有返回行数。
当然了,这样的输出只能用于我们自己的测试,如果是生产环境,我们应该把日志输出到指定的文件目录中去,并且应该指定日志文件的大小,加上时间等,方便我们查找问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值