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);
}
}
浙公网安备 33010602011771号