天天看点

保存用户信息、上传用户头像、用户信息管理

文章目录

1.3、保存用户信息

1.4、上传用户头像

2、用户信息管理

2.1、查询用户资料

2.2、更新用户资料

1.3、保存用户信息

1.3.1、接口文档

保存用户信息、上传用户头像、用户信息管理

YAPI接口地址:http://192.168.136.160:3000/project/19/interface/api/88

1.3.2、需求分析

数据库表

tb_user_info(用户基本资料表)

保存用户信息、上传用户头像、用户信息管理
  • 用户表和用户信息表是一对一的关系,两者采用主键关联的形式配置
  • 主键关联:用户表主键和用户资料表主键要保持一致(如:用户表id=1,此用户的资料表id=1)

执行流程

  1. 手机端发送请求到消费者
  2. 消费者构造数据,调用提供者
  3. 消费者完成业务处理,操作数据库
保存用户信息、上传用户头像、用户信息管理

1.3.3、代码实现

UserInfo实体类

<span style="background-color:#f8f8f8"><span style="color:#333333"><span style="color:#555555">@Data</span>
<span style="color:#555555">@NoArgsConstructor</span>
<span style="color:#555555">@AllArgsConstructor</span>
<span style="color:#770088">public</span> <span style="color:#770088">class</span> <span style="color:#0000ff">UserInfo</span> <span style="color:#770088">implements</span> <span style="color:#000000">Serializable</span> {

    <span style="color:#aa5500">/**</span>
     <span style="color:#aa5500">* 由于userinfo表和user表之间是一对一关系</span>
     <span style="color:#aa5500">*   userInfo的id来源于user表的id</span>
     <span style="color:#aa5500">*/</span>
    <span style="color:#555555">@TableId</span>(<span style="color:#000000">type</span><span style="color:#981a1a">=</span> <span style="color:#000000">IdType</span>.<span style="color:#000000">INPUT</span>)
    <span style="color:#770088">private</span> <span style="color:#008855">Long</span> <span style="color:#000000">id</span>; <span style="color:#aa5500">//用户id</span>
    <span style="color:#770088">private</span> <span style="color:#008855">String</span> <span style="color:#000000">nickname</span>; <span style="color:#aa5500">//昵称</span>
    <span style="color:#770088">private</span> <span style="color:#008855">String</span> <span style="color:#000000">avatar</span>; <span style="color:#aa5500">//用户头像</span>
    <span style="color:#770088">private</span> <span style="color:#008855">String</span> <span style="color:#000000">birthday</span>; <span style="color:#aa5500">//生日</span>
    <span style="color:#770088">private</span> <span style="color:#008855">String</span> <span style="color:#000000">gender</span>; <span style="color:#aa5500">//性别</span>
    <span style="color:#770088">private</span> <span style="color:#008855">Integer</span> <span style="color:#000000">age</span>; <span style="color:#aa5500">//年龄</span>
    <span style="color:#770088">private</span> <span style="color:#008855">String</span> <span style="color:#000000">city</span>; <span style="color:#aa5500">//城市</span>
    <span style="color:#770088">private</span> <span style="color:#008855">String</span> <span style="color:#000000">income</span>; <span style="color:#aa5500">//收入</span>
    <span style="color:#770088">private</span> <span style="color:#008855">String</span> <span style="color:#000000">education</span>; <span style="color:#aa5500">//学历</span>
    <span style="color:#770088">private</span> <span style="color:#008855">String</span> <span style="color:#000000">profession</span>; <span style="color:#aa5500">//行业</span>
    <span style="color:#770088">private</span> <span style="color:#008855">Integer</span> <span style="color:#000000">marriage</span>; <span style="color:#aa5500">//婚姻状态</span>
    <span style="color:#770088">private</span> <span style="color:#008855">String</span> <span style="color:#000000">tags</span>; <span style="color:#aa5500">//用户标签:多个用逗号分隔</span>
    <span style="color:#770088">private</span> <span style="color:#008855">String</span> <span style="color:#000000">coverPic</span>; <span style="color:#aa5500">// 封面图片</span>
    <span style="color:#770088">private</span> <span style="color:#000000">Date</span> <span style="color:#000000">created</span>;
    <span style="color:#770088">private</span> <span style="color:#000000">Date</span> <span style="color:#000000">updated</span>;

    <span style="color:#aa5500">//用户状态,1为正常,2为冻结</span>
    <span style="color:#555555">@TableField</span>(<span style="color:#000000">exist</span> <span style="color:#981a1a">=</span> <span style="color:#221199">false</span>)
    <span style="color:#770088">private</span> <span style="color:#008855">String</span> <span style="color:#000000">userStatus</span> <span style="color:#981a1a">=</span> <span style="color:#aa1111">"1"</span>;
}</span></span>           

UserController

<span style="background-color:#f8f8f8"><span style="color:#333333"><span style="color:#555555">@RestController</span>
<span style="color:#555555">@RequestMapping</span>(<span style="color:#aa1111">"/user"</span>)
<span style="color:#770088">public</span> <span style="color:#770088">class</span> <span style="color:#0000ff">UserController</span> {

    <span style="color:#555555">@Autowired</span>
    <span style="color:#770088">private</span> <span style="color:#000000">UserInfoService</span> <span style="color:#000000">userInfoService</span>;

    <span style="color:#aa5500">/**</span>
     <span style="color:#aa5500">* 保存用户信息</span>
     <span style="color:#aa5500">*   UserInfo</span>
     <span style="color:#aa5500">*   请求头中携带token</span>
     <span style="color:#aa5500">*/</span>
    <span style="color:#555555">@PostMapping</span>(<span style="color:#aa1111">"/loginReginfo"</span>)
    <span style="color:#770088">public</span> <span style="color:#000000">ResponseEntity</span> <span style="color:#000000">loginReginfo</span>(<span style="color:#555555">@RequestBody</span> <span style="color:#000000">UserInfo</span> <span style="color:#000000">userInfo</span>,
                                       <span style="color:#555555">@RequestHeader</span>(<span style="color:#aa1111">"Authorization"</span>) <span style="color:#008855">String</span> <span style="color:#000000">token</span>) {
        <span style="color:#aa5500">//1、解析token</span>
        <span style="color:#000000">Claims</span> <span style="color:#000000">claims</span> <span style="color:#981a1a">=</span> <span style="color:#000000">JwtUtils</span>.<span style="color:#000000">getClaims</span>(<span style="color:#000000">token</span>);
        <span style="color:#008855">Integer</span> <span style="color:#000000">id</span> <span style="color:#981a1a">=</span> (<span style="color:#008855">Integer</span>) <span style="color:#000000">claims</span>.<span style="color:#000000">get</span>(<span style="color:#aa1111">"id"</span>);
        <span style="color:#aa5500">//2、向userinfo中设置用户id</span>
        <span style="color:#000000">userInfo</span>.<span style="color:#000000">setId</span>(<span style="color:#008855">Long</span>.<span style="color:#000000">valueOf</span>(<span style="color:#000000">id</span>));
        <span style="color:#aa5500">//3、调用service</span>
        <span style="color:#000000">userInfoService</span>.<span style="color:#000000">save</span>(<span style="color:#000000">userInfo</span>);
        <span style="color:#770088">return</span> <span style="color:#000000">ResponseEntity</span>.<span style="color:#000000">ok</span>(<span style="color:#221199">null</span>);
    }
}</span></span>           

UserInfoService

<span style="background-color:#f8f8f8"><span style="color:#333333"><span style="color:#555555">@Service</span>
<span style="color:#770088">public</span> <span style="color:#770088">class</span> <span style="color:#0000ff">UserInfoService</span> {

    <span style="color:#555555">@DubboReference</span>
    <span style="color:#770088">private</span> <span style="color:#000000">UserInfoApi</span> <span style="color:#000000">userInfoApi</span>;

    <span style="color:#770088">public</span> <span style="color:#008855">void</span> <span style="color:#000000">save</span>(<span style="color:#000000">UserInfo</span> <span style="color:#000000">userInfo</span>) {
        <span style="color:#000000">userInfoApi</span>.<span style="color:#000000">save</span>(<span style="color:#000000">userInfo</span>);
    }
}</span></span>           

UserInfoApi

<span style="background-color:#f8f8f8"><span style="color:#333333"><span style="color:#770088">public</span> <span style="color:#770088">interface</span> <span style="color:#0000ff">UserInfoApi</span> {
    <span style="color:#770088">public</span> <span style="color:#008855">void</span> <span style="color:#000000">save</span>(<span style="color:#000000">UserInfo</span> <span style="color:#000000">userInfo</span>);
}</span></span>           

UserInfoApiImpl

<span style="background-color:#f8f8f8"><span style="color:#333333"><span style="color:#555555">@DubboService</span>
<span style="color:#770088">public</span> <span style="color:#770088">class</span> <span style="color:#0000ff">UserInfoApiImpl</span> <span style="color:#770088">implements</span>  <span style="color:#000000">UserInfoApi</span> {

    <span style="color:#555555">@Autowired</span>
    <span style="color:#770088">private</span> <span style="color:#000000">UserInfoMapper</span> <span style="color:#000000">userInfoMapper</span>;

    <span style="color:#555555">@Override</span>
    <span style="color:#770088">public</span> <span style="color:#008855">void</span> <span style="color:#000000">save</span>(<span style="color:#000000">UserInfo</span> <span style="color:#000000">userInfo</span>) {
        <span style="color:#000000">userInfoMapper</span>.<span style="color:#000000">insert</span>(<span style="color:#000000">userInfo</span>);
    }
}</span></span>           

UserInfoMapper

<span style="background-color:#f8f8f8"><span style="color:#333333"><span style="color:#770088">public</span> <span style="color:#770088">interface</span> <span style="color:#0000ff">UserInfoMapper</span> <span style="color:#770088">extends</span> <span style="color:#000000">BaseMapper</span><span style="color:#981a1a"><</span><span style="color:#000000">UserInfo</span><span style="color:#981a1a">></span> {

}</span></span>           

1.4、上传用户头像

1.4.1、需求分析

接口文档

保存用户信息、上传用户头像、用户信息管理

YAPI地址:http://192.168.136.160:3000/project/19/interface/api/91

文件上传采用POST传递,mvc中经过文件解析器转化为MultipartFile对象处理

后续请求中,请求headr中都有Authorization参数。

执行流程

保存用户信息、上传用户头像、用户信息管理

1.4.2、代码实现

UsersControler

<span style="background-color:#f8f8f8"><span style="color:#333333"><span style="color:#aa5500">/**</span>
 <span style="color:#aa5500">* 更新用户资料</span>
 <span style="color:#aa5500">*/</span>
<span style="color:#555555">@PutMapping</span>
<span style="color:#770088">public</span> <span style="color:#000000">ResponseEntity</span> <span style="color:#0000ff">updateUserInfo</span>(<span style="color:#555555">@RequestBody</span> <span style="color:#000000">UserInfo</span>  <span style="color:#000000">userInfo</span>,<span style="color:#555555">@RequestHeader</span>(<span style="color:#aa1111">"Authorization"</span>) <span style="color:#008855">String</span> <span style="color:#000000">token</span>) {
    <span style="color:#000000">Claims</span> <span style="color:#000000">claims</span> <span style="color:#981a1a">=</span> <span style="color:#000000">JwtUtils</span>.<span style="color:#000000">getClaims</span>(<span style="color:#000000">token</span>);
    <span style="color:#008855">Integer</span> <span style="color:#000000">id</span> <span style="color:#981a1a">=</span> (<span style="color:#008855">Integer</span>) <span style="color:#000000">claims</span>.<span style="color:#000000">get</span>(<span style="color:#aa1111">"id"</span>);
    <span style="color:#000000">userInfo</span>.<span style="color:#000000">setId</span>(<span style="color:#008855">Long</span>.<span style="color:#000000">valueOf</span>(<span style="color:#000000">id</span>));
    <span style="color:#000000">userInfoService</span>.<span style="color:#000000">update</span>(<span style="color:#000000">userInfo</span>);
    <span style="color:#770088">return</span> <span style="color:#000000">ResponseEntity</span>.<span style="color:#000000">ok</span>(<span style="color:#221199">null</span>);
}</span></span>           

UserInfoService

<span style="background-color:#f8f8f8"><span style="color:#333333"><span style="color:#aa5500">//更新用户头像</span>
<span style="color:#770088">public</span> <span style="color:#008855">void</span> <span style="color:#0000ff">updateHead</span>(<span style="color:#000000">MultipartFile</span> <span style="color:#000000">headPhoto</span>, <span style="color:#008855">Long</span> <span style="color:#000000">id</span>) <span style="color:#770088">throws</span> <span style="color:#000000">IOException</span> {
    <span style="color:#aa5500">//1、将图片上传到阿里云oss</span>
    <span style="color:#008855">String</span> <span style="color:#000000">imageUrl</span> <span style="color:#981a1a">=</span> <span style="color:#000000">ossTemplate</span>.<span style="color:#000000">upload</span>(<span style="color:#000000">headPhoto</span>.<span style="color:#000000">getOriginalFilename</span>(), <span style="color:#000000">headPhoto</span>.<span style="color:#000000">getInputStream</span>());
    <span style="color:#aa5500">//2、调用百度云判断是否包含人脸</span>
    <span style="color:#008855">boolean</span> <span style="color:#000000">detect</span> <span style="color:#981a1a">=</span> <span style="color:#000000">aipFaceTemplate</span>.<span style="color:#000000">detect</span>(<span style="color:#000000">imageUrl</span>);
    <span style="color:#aa5500">//2.1 如果不包含人脸,抛出异常</span>
    <span style="color:#770088">if</span>(<span style="color:#981a1a">!</span><span style="color:#000000">detect</span>) {
        <span style="color:#770088">throw</span> <span style="color:#770088">new</span> <span style="color:#000000">RuntimeException</span>();
    }<span style="color:#770088">else</span>{
        <span style="color:#aa5500">//2.2 包含人脸,调用API更新</span>
        <span style="color:#000000">UserInfo</span> <span style="color:#000000">userInfo</span> <span style="color:#981a1a">=</span> <span style="color:#770088">new</span> <span style="color:#000000">UserInfo</span>();
        <span style="color:#000000">userInfo</span>.<span style="color:#000000">setId</span>(<span style="color:#000000">id</span>);
        <span style="color:#000000">userInfo</span>.<span style="color:#000000">setAvatar</span>(<span style="color:#000000">imageUrl</span>);
        <span style="color:#000000">userInfoApi</span>.<span style="color:#000000">update</span>(<span style="color:#000000">userInfo</span>);
    }
}</span></span>           

UserInfoApi

<span style="background-color:#f8f8f8"><span style="color:#333333"><span style="color:#770088">public</span> <span style="color:#008855">void</span> <span style="color:#0000ff">update</span>(<span style="color:#000000">UserInfo</span> <span style="color:#000000">userInfo</span>);</span></span>           

UserInfoApiImpl

<span style="background-color:#f8f8f8"><span style="color:#333333"><span style="color:#555555">@Override</span>
<span style="color:#770088">public</span> <span style="color:#008855">void</span> <span style="color:#0000ff">update</span>(<span style="color:#000000">UserInfo</span> <span style="color:#000000">userInfo</span>) {
    <span style="color:#000000">userInfoMapper</span>.<span style="color:#000000">updateById</span>(<span style="color:#000000">userInfo</span>);
}</span></span>           

2、用户信息管理

2.1、查询用户资料

2.1.1、接口文档

保存用户信息、上传用户头像、用户信息管理

YAPI地址:http://192.168.136.160:3000/project/19/interface/api/265

参数userID: 用户id,当不传递时,查询当前用户的资料信息

2.1.2、代码实现

UserInfoVo

<span style="background-color:#f8f8f8"><span style="color:#333333"><span style="color:#555555">@Data</span>
<span style="color:#555555">@NoArgsConstructor</span>
<span style="color:#555555">@AllArgsConstructor</span>
<span style="color:#770088">public</span> <span style="color:#770088">class</span> <span style="color:#0000ff">UserInfoVo</span> <span style="color:#770088">implements</span> <span style="color:#000000">Serializable</span> {

    <span style="color:#770088">private</span> <span style="color:#008855">Long</span> <span style="color:#000000">id</span>; <span style="color:#aa5500">//用户id</span>
    <span style="color:#770088">private</span> <span style="color:#008855">String</span> <span style="color:#000000">nickname</span>; <span style="color:#aa5500">//昵称</span>
    <span style="color:#770088">private</span> <span style="color:#008855">String</span> <span style="color:#000000">avatar</span>; <span style="color:#aa5500">//用户头像</span>
    <span style="color:#770088">private</span> <span style="color:#008855">String</span> <span style="color:#000000">birthday</span>; <span style="color:#aa5500">//生日</span>
    <span style="color:#770088">private</span> <span style="color:#008855">String</span> <span style="color:#000000">gender</span>; <span style="color:#aa5500">//性别</span>
    <span style="color:#770088">private</span> <span style="color:#008855">String</span> <span style="color:#000000">age</span>; <span style="color:#aa5500">//年龄</span>
    <span style="color:#770088">private</span> <span style="color:#008855">String</span> <span style="color:#000000">city</span>; <span style="color:#aa5500">//城市</span>
    <span style="color:#770088">private</span> <span style="color:#008855">String</span> <span style="color:#000000">income</span>; <span style="color:#aa5500">//收入</span>
    <span style="color:#770088">private</span> <span style="color:#008855">String</span> <span style="color:#000000">education</span>; <span style="color:#aa5500">//学历</span>
    <span style="color:#770088">private</span> <span style="color:#008855">String</span> <span style="color:#000000">profession</span>; <span style="color:#aa5500">//行业</span>
    <span style="color:#770088">private</span> <span style="color:#008855">Integer</span> <span style="color:#000000">marriage</span>; <span style="color:#aa5500">//婚姻状态</span>
}</span></span>           

UsersController

<span style="background-color:#f8f8f8"><span style="color:#333333"><span style="color:#555555">@RestController</span>
<span style="color:#555555">@RequestMapping</span>(<span style="color:#aa1111">"/users"</span>)
<span style="color:#770088">public</span> <span style="color:#770088">class</span> <span style="color:#0000ff">UsersControler</span> {

    <span style="color:#555555">@Autowired</span>
    <span style="color:#770088">private</span> <span style="color:#000000">UserInfoService</span> <span style="color:#000000">userInfoService</span>;

    <span style="color:#aa5500">/**</span>
     <span style="color:#aa5500">* 查询用户资料</span>
     <span style="color:#aa5500">*/</span>
    <span style="color:#555555">@GetMapping</span>
    <span style="color:#770088">public</span> <span style="color:#000000">ResponseEntity</span> <span style="color:#000000">users</span>(<span style="color:#008855">Long</span> <span style="color:#000000">userID</span>,<span style="color:#555555">@RequestHeader</span>(<span style="color:#aa1111">"Authorization"</span>) <span style="color:#008855">String</span> <span style="color:#000000">token</span>) {
        <span style="color:#770088">if</span>(<span style="color:#000000">userID</span> <span style="color:#981a1a">==</span> <span style="color:#221199">null</span>) {
            <span style="color:#000000">Claims</span> <span style="color:#000000">claims</span> <span style="color:#981a1a">=</span> <span style="color:#000000">JwtUtils</span>.<span style="color:#000000">getClaims</span>(<span style="color:#000000">token</span>);
            <span style="color:#008855">Integer</span> <span style="color:#000000">id</span> <span style="color:#981a1a">=</span> (<span style="color:#008855">Integer</span>) <span style="color:#000000">claims</span>.<span style="color:#000000">get</span>(<span style="color:#aa1111">"id"</span>);
            <span style="color:#000000">userID</span> <span style="color:#981a1a">=</span> <span style="color:#008855">Long</span>.<span style="color:#000000">valueOf</span>(<span style="color:#000000">id</span>);
        }
        <span style="color:#000000">UserInfoVo</span> <span style="color:#000000">userInfo</span> <span style="color:#981a1a">=</span> <span style="color:#000000">userInfoService</span>.<span style="color:#000000">findById</span>(<span style="color:#000000">userID</span>);
        <span style="color:#770088">return</span> <span style="color:#000000">ResponseEntity</span>.<span style="color:#000000">ok</span>(<span style="color:#000000">userInfo</span>);
    }
}</span></span>           

UserInfoService

<span style="background-color:#f8f8f8"><span style="color:#333333"><span style="color:#aa5500">//根据id查寻</span>
<span style="color:#770088">public</span> <span style="color:#000000">UserInfoVo</span> <span style="color:#0000ff">findById</span>(<span style="color:#008855">Long</span> <span style="color:#000000">id</span>) {
    <span style="color:#000000">UserInfo</span> <span style="color:#000000">userInfo</span> <span style="color:#981a1a">=</span> <span style="color:#000000">userInfoApi</span>.<span style="color:#000000">findById</span>(<span style="color:#000000">id</span>);

    <span style="color:#000000">UserInfoVo</span> <span style="color:#000000">vo</span> <span style="color:#981a1a">=</span> <span style="color:#770088">new</span> <span style="color:#000000">UserInfoVo</span>();

    <span style="color:#000000">BeanUtils</span>.<span style="color:#000000">copyProperties</span>(<span style="color:#000000">userInfo</span>,<span style="color:#000000">vo</span>); <span style="color:#aa5500">//copy同名同类型的属性</span>

    <span style="color:#770088">if</span>(<span style="color:#000000">userInfo</span>.<span style="color:#000000">getAge</span>() <span style="color:#981a1a">!=</span> <span style="color:#221199">null</span>) {
        <span style="color:#000000">vo</span>.<span style="color:#000000">setAge</span>(<span style="color:#000000">userInfo</span>.<span style="color:#000000">getAge</span>().<span style="color:#000000">toString</span>());
    }

    <span style="color:#770088">return</span> <span style="color:#000000">vo</span>;
}</span></span>           

UserInfoApiImpl

<span style="background-color:#f8f8f8"><span style="color:#333333"><span style="color:#555555">@Override</span>
<span style="color:#770088">public</span> <span style="color:#000000">UserInfo</span> <span style="color:#0000ff">findById</span>(<span style="color:#008855">Long</span> <span style="color:#000000">id</span>) {
    <span style="color:#770088">return</span> <span style="color:#000000">userInfoMapper</span>.<span style="color:#000000">selectById</span>(<span style="color:#000000">id</span>);
}</span></span>           

2.2、更新用户资料

2.2.1、接口文档

保存用户信息、上传用户头像、用户信息管理

YAPI地址:http://192.168.136.160:3000/project/19/interface/api/259

2.2.2、代码实现

UsersController

<span style="background-color:#f8f8f8"><span style="color:#333333"><span style="color:#aa5500">/**</span>
 <span style="color:#aa5500">* 更新用户资料</span>
 <span style="color:#aa5500">*/</span>
<span style="color:#555555">@PutMapping</span>
<span style="color:#770088">public</span> <span style="color:#000000">ResponseEntity</span> <span style="color:#0000ff">updateUserInfo</span>(<span style="color:#555555">@RequestBody</span> <span style="color:#000000">UserInfo</span> <span style="color:#000000">userInfo</span>,<span style="color:#555555">@RequestHeader</span>(<span style="color:#aa1111">"Authorization"</span>) <span style="color:#008855">String</span> <span style="color:#000000">token</span>) {
    <span style="color:#000000">Claims</span> <span style="color:#000000">claims</span> <span style="color:#981a1a">=</span> <span style="color:#000000">JwtUtils</span>.<span style="color:#000000">getClaims</span>(<span style="color:#000000">token</span>);
    <span style="color:#008855">Integer</span> <span style="color:#000000">id</span> <span style="color:#981a1a">=</span> (<span style="color:#008855">Integer</span>) <span style="color:#000000">claims</span>.<span style="color:#000000">get</span>(<span style="color:#aa1111">"id"</span>);
    <span style="color:#000000">userID</span> <span style="color:#981a1a">=</span> <span style="color:#008855">Long</span>.<span style="color:#000000">valueOf</span>(<span style="color:#000000">id</span>);
    <span style="color:#000000">userInfo</span>.<span style="color:#000000">setId</span>(<span style="color:#000000">UserHolder</span>.<span style="color:#000000">getUserId</span>());
    <span style="color:#000000">userInfoService</span>.<span style="color:#000000">update</span>(<span style="color:#000000">userInfo</span>);
    <span style="color:#770088">return</span> <span style="color:#000000">ResponseEntity</span>.<span style="color:#000000">ok</span>(<span style="color:#221199">null</span>);
}</span></span>           

UserInfoService

<span style="background-color:#f8f8f8"><span style="color:#333333"><span style="color:#aa5500">//更新</span>
<span style="color:#770088">public</span> <span style="color:#008855">void</span> <span style="color:#0000ff">update</span>(<span style="color:#000000">UserInfo</span> <span style="color:#000000">userInfo</span>) {
    <span style="color:#000000">userInfoApi</span>.<span style="color:#000000">update</span>(<span style="color:#000000">userInfo</span>);
}</span></span>           
<span style="background-color:#f8f8f8"><span style="color:#333333"><span style="color:#555555">@Override</span>
<span style="color:#770088">public</span> <span style="color:#008855">void</span> <span style="color:#0000ff">update</span>(<span style="color:#000000">UserInfo</span> <span style="color:#000000">userInfo</span>) {
    <span style="color:#000000">userInfoMapper</span>.<span style="color:#000000">updateById</span>(<span style="color:#000000">userInfo</span>);
}</span></span>