小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_5-8.用户模块开发之保存微信用户信息 笔记 开始 封装user,保存用户信息 创建UserMapper

8、用户模块开发之保存微信用户信息
    简介:开发User数据访问层,保存微信用户信息

        问题:
            微信回调 用户昵称乱码
            解决:
                nickname = new String(nickname.getBytes("ISO-8859-1"), "UTF-8");

        1、封装User对象


        2、插入数据库
            获取openid后,查询是否有此用户,如果有则不发请求去获取用户信息
            方法:保存用户,根据id查询用户,根据openid查询用户

        3、mybatis参数注意
            取值用 #{} ,别用${},因为存在sql注入风险
 

开始

sex是double类型的。nickName乱码

中文的转码,try catch一下

nickName进行转码

sex先用Double类型去接收,然后再转换成int类型


运行程序进行测试

封装user,保存用户信息

创建UserMapper





复制过来的就是insert的sql语句




这里根据openId去查询,如果查询到了的话,那么直接返回这个user对象,因为从第一次用户扫描登陆后,一般很少去修改用户的信息了。 这里直接根据openid去本地的数据库内查询就可以了。 


保存数据后。拿到主键的信息



启动应用测试。扫码登陆


保存之前用户的id为null



保存之后id有了值

看下数据库内 ,数据已经保存进来了 

剩下一个小问题 城市和省份是中文的问题

看文档。这里需要一个lang参数

地址后面加上中文的参数



再次测试,需要把刚才数据库那条记录删除掉。断点到这里


把拼接万的字符串 最后进行转码

把刚才那条数据也删除掉。因为也是乱码的

再次测试
转换之前还是乱码

转换之后了。变成中文了。


把头像地址复制出来测试



再测试一遍。用户已经保存了 还会不会再保存一遍。进入断点,一步步往下走

根据openId找到数据库内已经存在的数据

这样用户User对象不为null 我们就可以生成jwt返回给前端

后续请看下节课程!