前言:本文章主要内容为Springboot集成Mybatis,实现Mybatis用xml和注解两种方式查询数据
一、搭建SpringBoot框架
1、用IDEA的Spring Initializr创建SpringBoot项目
2、创建完成的pom文件
二、配置Mybatis
整个项目结构图
1、创建实体类
package com.jian.myspringboot.demo.model;
import lombok.Data;
/**
* @program: mySpringBoot
* @description: 用户信息
* @author: xiaoQian
* @create: 2021-11-22 20:11
**/
@Data
public class UserInfo {
private int id;
private String userName;
private String passWord;
}
2、创建Mapper接口
package com.jian.myspringboot.demo.dao;
import com.jian.myspringboot.demo.model.UserInfo;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import java.util.List;
public interface UserInfoMapper {
/**
* 按照id查询用户
* @param id
* @return
*/
@Select("select * from user_info where id= #{id}")
UserInfo queryUserById(@Param("id") Integer id);
/**
* 查询所有用户
* @return
*/
List<UserInfo> queryAllUser();
}
3、配置扫包(扫描Mapper文件),在启动类上面加上@MapperScan注解
4、创建mapperXML文件
<?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="com.jian.myspringboot.demo.dao.UserInfoMapper">
<select id="queryAllUser" resultType="UserInfo">
select
*
from
user_info
</select>
</mapper>
5、在application.properties文件中加入数据库连接、服务器端口和Mybatis配置
######################### 数据库连接配置
spring.datasource.url=jdbc:mysql://localhost:3307/myspringboot?useSSL=false&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&transformedBitIsBoolean=true&autoReconnect=true&failOverReadOnly=false
spring.datasource.username=root
#spring.datasource.password=123456
spring.datasource.password=wiztek2020.
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
########################### 服务器配置
# 端口号
server.port=8081
######################## mybatis
# 扫描mapper的xml文件(如果mapper文件夹下没有文件夹那就写classpath:mapper/*.xml)
mybatis.mapper-locations=classpath:mapper/**/*.xml
# 扫描pojo实体类(主要是xml的mapper文件使用,可以不写pojo类全限定名,只写类名)
# 如果不写这个在mapperXML文件中的resultType(返回结果类型)
mybatis.type-aliases-package=com.jian.myspringboot.*.model
# sql日志打印
mybatis.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
# 下划线转驼峰
mybatis.configuration.map-underscore-to-camel-case=true
6、创建service接口和实现
package com.jian.myspringboot.demo.service;
import com.jian.myspringboot.demo.model.UserInfo;
import java.util.List;
public interface IUserinfoService {
/**
* 根据id查询用户信息
* @param id
* @return
*/
UserInfo queryUserById(Integer id);
/**
* 查询所有用户
* @return
*/
List<UserInfo> queryAllUser();
}
package com.jian.myspringboot.demo.service.impl;
import com.jian.myspringboot.demo.dao.UserInfoMapper;
import com.jian.myspringboot.demo.model.UserInfo;
import com.jian.myspringboot.demo.service.IUserinfoService;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
/**
* @program: mySpringBoot
* @description: 业主信息Service
* @author: xiaoQian
* @create: 2021-11-22 20:39
**/
@Service
public class UserInfoService implements IUserinfoService {
@Resource
private UserInfoMapper userInfoMapper;
@Override
public UserInfo queryUserById(Integer id) {
return userInfoMapper.queryUserById(id);
}
@Override
public List<UserInfo> queryAllUser() {
return userInfoMapper.queryAllUser();
}
}
7、创建controller
package com.jian.myspringboot.demo.controller;
import com.jian.myspringboot.demo.model.UserInfo;
import com.jian.myspringboot.demo.service.IUserinfoService;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.util.List;
/**
* @program: mySpringBoot
* @description: 用户controller
* @author: xiaoQian
* @create: 2021-11-22 20:08
**/
@RestController
@RequestMapping("/user")
public class UserInfoController {
@Resource
private IUserinfoService userinfoService;
/**
* 根据id查询用户信息
* @param id
* @return
*/
@PostMapping("/queryUserById")
public UserInfo queryUserById(Integer id){
return userinfoService.queryUserById(id);
}
/**
* 查询所有用户信息
* @return
*/
@PostMapping("/queryAllUser")
public List<UserInfo> queryAllUser(){
return userinfoService.queryAllUser();
}
}
8、创建数据库
建表语句:
CREATE TABLE user_info (
id int(32) NOT NULL AUTO_INCREMENT,
user_name varchar(255) DEFAULT NULL,
PRIMARY KEY (id) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC;
数据:
INSERT INTO user_info VALUES (1, 'aa');
INSERT INTO user_info VALUES (2, 'bb');
三、测试
1、根据id查询接口
接口调用图片
sql日志打印图
2、查询所有用户接口
接口调用图片
sql日志打印图
四、总结
1、这次集成Mybatis用了两种查询方式
第一种:用的XML查询的方式,一个mapper接口搭配一个mapperXML文件实现数据库的操作。这种方式就要在application.properties文件里面写上mybatis.mapper-locations(扫描mapperXML文件)和mybatis.type-aliases-package(扫描pojo类,让xml的resultType(返回结果)不用写全限定名)这两个配置
第二种:注解方式查询,这种方式不用写mapperXML,所以在application.properties文件就用不着mybatis.mapper-locations(扫描mapperXML文件)和mybatis.type-aliases-package(扫描pojo类,让xml的resultType(返回结果)不用写全限定名)这两个配置
queryAllUser接口用的是xml查询的方式,queryUserById用的是注解的查询方式,详情可以看代码,后续会补充单表增删改、多表联合查询,多条件查询