springboot 使用 mybatis + mapper
首先引入相关pom
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>2.0.1</version> </dependency> <dependency> <groupId>tk.mybatis</groupId> <artifactId>mapper-spring-boot-starter</artifactId> <version>2.1.5</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.16</version> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid-spring-boot-starter</artifactId> <version>1.1.16</version> </dependency>
新建MyMapper类
package com.chao.notify.mapper.base; import tk.mybatis.mapper.common.Mapper; import tk.mybatis.mapper.common.MySqlMapper; public interface MyMapper<T> extends Mapper<T>, MySqlMapper<T> { }
新建UUIdGenId 用于uuid主键
public class UUIdGenId implements GenId<String> { @Override public String genId(String s, String s1) { return UUID.randomUUID().toString().replace("-",""); } }
新建model类
@Table(name = "t_user") public class TUser { @Id @KeySql(genId = UUIdGenId.class) private String id; @Column(unique = true) private String username; private String password; private String salt; private String name; /** * 0 未知 * 1 男 * 2 女 */ private Integer sex; private String phone; private String address; private String notes; /** * 停用状态 * true 停用 * false 启用 */ private Boolean disabled; /** * 用户角色 * admin 管理员 * public 普通用户 */ private String role; /** * 创建时间 */ private Date at; /** * 登录时间 */ private Date loginAt; public String getId() { return id; } public void setId(String id) { this.id = id; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String getSalt() { return salt; } public void setSalt(String salt) { this.salt = salt; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getSex() { return sex; } public void setSex(Integer sex) { this.sex = sex; } public String getPhone() { return phone; } public void setPhone(String phone) { this.phone = phone; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } public String getNotes() { return notes; } public void setNotes(String notes) { this.notes = notes; } public Boolean getDisabled() { return disabled; } public void setDisabled(Boolean disabled) { this.disabled = disabled; } public String getRole() { return role; } public void setRole(String role) { this.role = role; } public Date getAt() { return at; } public void setAt(Date at) { this.at = at; } public Date getLoginAt() { return loginAt; } public void setLoginAt(Date loginAt) { this.loginAt = loginAt; } }
新建UserMapper类
@Mapper public interface UserMapper extends MyMapper<TUser> { }
application.properties配置
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver spring.datasource.url=jdbc:mysql://127.0.0.1:3306/test?serverTimezone=Asia/Shanghai&useSSL=false spring.datasource.username=root spring.datasource.password=root spring.datasource.type=com.alibaba.druid.pool.DruidDataSource #初始化链接数 最小空闲链接数 最大链接数 spring.datasource.druid.initial-size=5 spring.datasource.druid.min-idle=5 spring.datasource.druid.max-active=20 #获取连接的超时时间 单位毫秒 spring.datasource.druid.max-wait=60000 #配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 spring.datasource.druid.time-between-eviction-runs-millis=60000 mybatis.type-aliases-package=com.chao.notify.model mapper.mappers=com.chao.notify.mapper.base.MyMapper
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端
2018-06-13 ios wkwebview同步cookie ajax请求偶尔异常问题