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);
    }


}

  

 

posted on 2021-07-05 11:52  jiangger  阅读(176)  评论(0编辑  收藏  举报