springboot 整合mybatis
项目地址:
https://github.com/sevenyoungairye/spring-boot-study/tree/main/springboot-mybatis-05
pom文件
<!--整合mybatis-->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.3</version>
</dependency>
<!-- druid数据源 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.21</version>
</dependency>
<!-- 官方提供 jdbc用来连接数据库 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<!-- springboot 集成mvc -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- 连接数据库的mysql驱动 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<!--lombok 用于实体类的set/get 构造方法-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
mvc 架构
- 实体类
package cn.bitqian.entity;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @author echo lovely
* @date 2020/10/25 10:11
*/
@Data // set/get
@NoArgsConstructor // 无参
@AllArgsConstructor // 有参
public class Users {
private Integer userId;
private String userName;
private String userPassword;
}
- 基本的curd
package cn.bitqian.mapper;
import cn.bitqian.entity.Users;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Repository;
import java.util.List;
/**
* user mapper
* @author echo lovely
* @date 2020/10/25 10:18
*/
@Mapper // mybatis映射类
@Repository
public interface UsersMapper {
List<Users> queryAllUsers();
Users queryUserById(int userId);
void addUser(Users users);
void updateUser(Users users);
void deleteUserById(int usersId);
}
- usersMapper
<?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="cn.bitqian.mapper.UsersMapper">
<select id="queryAllUsers" resultType="Users">
select * from users1
</select>
<select id="queryUserById" resultType="Users" parameterType="int">
select * from users1 where userId = #{userId}
</select>
<insert id="addUser" parameterType="Users">
insert into users1 (userId, userName, userPassword) values (null, #{userName}, #{userPassword})
</insert>
<update id="updateUser" parameterType="Users">
update users1 set userName = #{userName}, userPassword = #{userPassword} where userId = #{userId}
</update>
<delete id="deleteUserById" parameterType="Users">
delete from users1 where userId = #{userId}
</delete>
</mapper>
- controller接口 restful风~
package cn.bitqian.controller;
import cn.bitqian.entity.Users;
import cn.bitqian.mapper.UsersMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
/**
* @author echo lovely
* @date 2020/10/25 11:00
*/
@RestController
public class UsersController {
@Autowired
private UsersMapper usersMapper;
@GetMapping(value = "/users")
public List<Users> queryAllUsers() {
return usersMapper.queryAllUsers();
}
@GetMapping(value = "/user/{id}")
public Users queryOneUser(@PathVariable(value = "id") Integer id) {
return usersMapper.queryUserById(id);
}
@GetMapping(value = "/add")
public String addUser() {
Users users = new Users(null, "abcdefghi", "abc");
usersMapper.addUser(users);
return "ok";
}
@GetMapping(value = "/upd/{id}/{userName}/{userPassword}")
public String updateUser(@PathVariable(value = "id") Integer id,
@PathVariable(value = "userName") String userName,
@PathVariable(value = "userPassword") String userPassword) {
Users users = new Users(id, userName, userPassword);
usersMapper.updateUser(users);
return "ok";
}
@GetMapping(value = "/del/{id}")
public String deleteUser(@PathVariable(value = "id") Integer id) {
usersMapper.deleteUserById(id);
return "ok";
}
}
application.properties 扩展配置,druid配置类
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.url=jdbc:mysql://localhost:3306/mybatis_study?serverTimezone=GMT
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.filters=wall
# mybatis 配置
# 别名
mybatis.type-aliases-package=cn.bitqian.entity
# mybatis 配置文件 要扫描的路径
mybatis.mapper-locations=classpath:mapper/*.xml
package cn.bitqian.config;
import com.alibaba.druid.pool.DruidDataSource;
import com.alibaba.druid.support.http.StatViewServlet;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.web.servlet.ServletRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import javax.sql.DataSource;
import javax.xml.crypto.Data;
import java.util.HashMap;
import java.util.Map;
/**
* @author echo lovely
* @date 2020/10/25 11:26
*/
@Configuration
public class DruidConfig {
// 自动装配
@ConfigurationProperties(value = "spring.datasource")
@Bean
public DruidDataSource druidDataSource() {
return new DruidDataSource();
}
// 注册 druid监控bean
@Bean
public ServletRegistrationBean druidServlet() {
ServletRegistrationBean bean = new ServletRegistrationBean(new StatViewServlet(), "/druid/*");
Map<String, String> initParameters = new HashMap<>();
initParameters.put("loginUserName", "admin");
initParameters.put("loginPassword", "123");
initParameters.put("allow", "127.0.0.1");
bean.setInitParameters(initParameters);
return bean;
}
}
更新,fork我的代码,使用git bash,git bash here, git clone 项目地址。