zoukankan      html  css  js  c++  java
  • SpringBoot+Mybatis框架搭建(二)----数据库语句分离为xml/多条件联合查询

    背景:1框架搭建(一)未将mapper语句与方法分离,可将语句配置成xml;

               2.(且语句可支持多条件联合查询)

    项目路径如下:

    1.在原框架基础上application.yml里添加mapper和实体类配置

    mybatis: #mybatis配置
    mapper-locations: classpath:mapper/*.xml //数据库语句路径
    type-aliases-package: Class4.entity //实体路径

    server:
    port: 8080 //本地端口

    spring:
    datasource:
    driverClassName: com.mysql.jdbc.Driver
    url: jdbc:mysql://xxx:xxx/qqzw_resource_manage_dev //数据库
    username: admin //用户名
    password: Hanyu@2021 //密码

    2.resources下新建UserMapper.xml

    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE mapper
    PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
    "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

    <mapper namespace="Class4.mapper.UserinfoMapper">
    <resultMap id="ResultMap" type="Class4.entity.UserInfo">
    <id column="id" property="id" />
    <id column="age" property="age" />
    <id column="info" property="info" />
    <id column="name" property="name" />
    </resultMap>

    <!--多条件组合查询,id!=null的条件是id不为int类型,需要设置为Interger-->
    <select id="selectById" resultMap="ResultMap">
    select id, age,name, info from test_user_info where 1=1
    <if test="id != null">
    and id = #{id,jdbcType=TINYINT}
    </if>
    <if test="name != null and name != ''">
    and name = #{name,jdbcType=VARCHAR}
    </if>

    </select>

    <insert id="insert" >
    insert into test_user_info
    values(#{id,jdbcType=TINYINT},#{age,jdbcType=INTEGER},#{name,jdbcType=VARCHAR},#{info,jdbcType=VARCHAR})
    </insert>

    <insert id="update" >
    update test_user_info set name='jiangger' where id= #{id,jdbcType=TINYINT}
    </insert>

    </mapper>

    3.mapper/UserinfoMapper简化

    package Class4.mapper;
    
    import Class4.entity.UserInfo;
    import org.apache.ibatis.annotations.*;
    import org.apache.ibatis.type.JdbcType;
    import org.springframework.stereotype.Repository;
    
    import java.util.List;
    
    /**
     * @author grjiang
     * @description:mapper
     * @date 2021-07-02 18:47
     */
        @Mapper
        public interface UserinfoMapper {
           List<UserInfo> selectById(Integer  id);//springMVC 不接收基本数据类型为空,id 应该为改为Integer 
          int insert(Integer id, int age,String name,String info); int update(int id); }

    4.控制层controller/MysqlController, 修改注解

    package Class4.controller;
    
    import Class4.entity.UserInfo;
    import Class4.mapper.UserinfoMapper;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.*;
    
    import javax.annotation.Resource;
    import javax.xml.ws.ResponseWrapper;
    import java.util.List;
    
    /**
     * @author grjiang
     * @description:实现
     * @date 2021-07-02 19:01
     */
    @Controller
    @RequestMapping("/test")
    public class MysqlController {
    
        @Resource   //注解变更
        UserinfoMapper userinfoMapper;
    
    
        @RequestMapping(value="/select",method= RequestMethod.GET)
        @ResponseBody    //springMVC 不接收基本数据类型为空,id 改为Integer ,多条件下可以将所有条件参数全部写上,@RequesParam可写可不写
        public List<UserInfo> select(String name,Integer id){
            return userinfoMapper.selectById(id,name);
        }
    
        @RequestMapping(value="/insert",method= RequestMethod.GET)
        @ResponseBody
        public int add(@RequestParam Integer id, int age,String name,String info){
           return userinfoMapper.insert(id,age,name,info);
        }
    
        @RequestMapping(value="/update",method= RequestMethod.GET)
        @ResponseBody
        public int add(@RequestParam Integer id){
            return userinfoMapper.update(id);
        }
    
    
    }
    

      

  • 相关阅读:
    【美团技术团队文章--学习笔记】之 Java动态追踪技术探究
    mq
    为啥要读写分离
    算法 数据结构
    对扩展开放,对修改关闭
    redis 事务
    准实时数仓设计方案
    Scala Puzzlers 系列(一):占位符的使用
    【面试题】大数据开发岗位
    Hive 分区和分桶
  • 原文地址:https://www.cnblogs.com/jiangger/p/14971801.html
Copyright © 2011-2022 走看看