from t_admin
and id = #{id}
and username = #{username}
and password = #{password}
and name = #{name}
and sex = #{sex}
limit #{pageable.offset}, #{pageable.pageSize}
select count(1)
from t_admin
and id = #{id}
and username = #{username}
and password = #{password}
and name = #{name}
and sex = #{sex}
insert into t_admin(username, password, name, sex)
values (#{username}, #{password}, #{name}, #{sex})
insert into t_admin(username, password, name, sex)
values
(#{entity.username}, #{entity.password}, #{entity.name}, #{entity.sex})
insert into t_admin(username, password, name, sex)
values
(#{entity.username}, #{entity.password}, #{entity.name}, #{entity.sex})
on duplicate key update
username = values(username),
password = values(password),
name = values(name),
sex = values(sex)
update t_admin
username = #{username},
password = #{password},
name = #{name},
sex = #{sex},
where id = #{id}
delete from t_admin where id = #{id}
5、自动生成的dao层
**
-
(TAdmin)表数据库访问层
-
@author 程序员小王
-
@since 2021-12-26 21:07:15
*/
public interface TAdminDao {
/**
-
通过ID查询单条数据
-
@param id 主键
-
@return 实例对象
*/
TAdmin queryById(Integer id);
/**
-
统计总行数
-
@param tAdmin 查询条件
-
@return 总行数
*/
long count(TAdmin tAdmin);
/**
-
新增数据
-
@param tAdmin 实例对象
-
@return 影响行数
*/
int insert(TAdmin tAdmin);
/**
-
批量新增数据(MyBatis原生foreach方法)
-
@param entities List 实例对象列表
-
@return 影响行数
*/
int insertBatch(@Param(“entities”) List entities);
/**
-
批量新增或按主键更新数据(MyBatis原生foreach方法)
-
@param entities List 实例对象列表
-
@return 影响行数
-
@throws org.springframework.jdbc.BadSqlGrammarException 入参是空List的时候会抛SQL语句错误的异常,请自行校验入参
*/
int insertOrUpdateBatch(@Param(“entities”) List entities);
/**
-
修改数据
-
@param tAdmin 实例对象
-
@return 影响行数
*/
int update(TAdmin tAdmin);
/**
-
通过主键删除数据
-
@param id 主键
-
@return 影响行数
*/
int deleteById(Integer id);
}
6、自动生成的业务层
/**
-
(TAdmin)表服务实现类
-
@author 程序员小王
-
@since 2021-12-26 21:07:18
*/
@Service(“tAdminService”)
public class TAdminServiceImpl implements TAdminService {
@Resource
private TAdminDao tAdminDao;
/**
-
通过ID查询单条数据
-
@param id 主键
-
@return 实例对象
*/
@Override
public TAdmin queryById(Integer id) {
return this.tAdminDao.queryById(id);
}
/**
-
新增数据
-
@param tAdmin 实例对象
-
@return 实例对象
*/
@Override
public TAdmin insert(TAdmin tAdmin) {
this.tAdminDao.insert(tAdmin);
return tAdmin;
}
/**
-
修改数据
-
@param tAdmin 实例对象
-
@return 实例对象
*/
@Override
public TAdmin update(TAdmin tAdmin) {
this.tAdminDao.update(tAdmin);
return this.queryById(tAdmin.getId());
}
/**
-
通过主键删除数据
-
@param id 主键
-
@return 是否成功
*/
@Override
public boolean deleteById(Integer id) {
return this.tAdminDao.deleteById(id) > 0;
}
}
7、访问数据库
- 数据库数据
- 前端访问数据库
===============================================================================
1、LomBok解决的问题及缺点
(1)优点
lombok主要解决实体类层的get,set方法,构造器,异常处理;I/O流的关闭操作等等,这些代码没有什么技术含量,又影响着代码的美观,Lombok插件接收解决这些问题的
(2)缺点
但是企业开发中有些公司不使用lomBok,因为只要有一个人使用了lombok,整个项目组都需要使用lombok
2、Lombok的使用
(1)SpringBoot和IDEA官方有推荐使用
-
Idea已经内置了LomBok插件
-
SpringBoot2.1x之后的版本已经内置了LomBok的相关依赖
(2)引入相关的依赖
org.projectlombok
lombok
1.16.18
provided
注意:Lombok的scope=provided
,说明它只在编译阶段生效,不需要打入包中。事实正是如此,Lombok在编译期将带Lombok注解的Java文件正确编译为完整的Class文件。
(3)IDEA对LomBok的支持
- 点击File-- Settings设置界面,开启 AnnocationProcessors:
开启该项是为了让Lombok注解在编译阶段起到作用
(4)LomBok相关注解的使用
- 没使用Lombok之前
public class TAdmin implements Serializable {
private static final long serialVersionUID = -81568151678905514L;
private Integer id;
private String username;
private String password;
private String name;
private String sex;
public Integer getId() {
return id;
}
public void setId(Integer 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 getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
}
- 使用Lombok之后
@Setter
@Getter //生成所有成员变量的getter/setter方法;作用于成员变量上
@ToString //覆盖默认的toString()方法
@NoArgsConstructor //生成无参构造器
@AllArgsConstructor //生成全参构造器
public class TAdmin implements Serializable {
private static final long serialVersionUID = -81568151678905514L;
private Integer id;
private String username;
private String password;
private String name;
private String sex;
}
3、Lombok实现原理
javac就支持“JSR 269 Pluggable Annotation Processing API
”规范,只要程序实现了该API,就能在javac运行的时候得到调用。
-
javac对源码进行分析,生成一棵抽象语法树(
AST
) -
javac编译过程中调用实现了JSR 269的Lombok程序
-
此时Lombok就对第一步骤得到的AST进行处理,找到Lombok注解所在类对应的语法树 (AST),然后修改该语法树(AST),增加Lombok注解定义的相应树节点
-
javac使用修改后的抽象语法树(AST)生成字节码文件
4、Lombok里面的相关注解
(1)@Getter/@Setter:
- 作用类上,生成所有成员变量的
getter/setter方法
;作用于成员变量上,生成该成员变量的getter/setter方法。可以设定访问权限及是否懒加载等。
@Getter
@Setter
public class Emp implements Serializable {
private static final long serialVersionUID = 1L;
private Integer id;
private String name;
private Double salary;
private Integer age;
}
(2)@ToString:
- 作用于类,覆盖默认的toString()方法,可以通过of属性 限定显示某些字段,通过exclude属性 排除某些字段。
@Getter
@Setter
@ToString(of={“name”,“salary”},exclude = {“age”})
@AllArgsConstructor
public class Emp implements Serializable {
private static final long serialVersionUID = 1L;
private Integer id;
private String name;
private Double salary;
private Integer age;
}
(3)生成构造函数相关的注解
@NoArgsConstructor, @RequiredArgsConstructor, @AllArgsConstructor:
作用于类上,用于生成构造函数。有staticName、access等属性。
staticName属性一旦设定,将采用静态方法的方式生成实例,access属性可以限定访问权限。
@NoArgsConstructor
:生成无参构造器;
@RequiredArgsConstructor
:生成包含final和@NonNull注解的成员变量的构造器;
@AllArgsConstructor
:生成全参构造器
@Getter
@Setter
@ToString(of={“name”,“salary”},exclude = {“age”})
@AllArgsConstructor //全参构造器
@NoArgsConstructor //无参构造器
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)
最后
终极手撕架构师的学习笔记:分布式+微服务+开源框架+性能优化
《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!
@NoArgsConstructor //无参构造器
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。[外链图片转存中…(img-URx5iArB-1713342637671)]
[外链图片转存中…(img-LzNk96ft-1713342637671)]
[外链图片转存中…(img-llWTdnlJ-1713342637671)]
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)
最后
终极手撕架构师的学习笔记:分布式+微服务+开源框架+性能优化
[外链图片转存中…(img-ByYZNBzG-1713342637671)]
《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!