package com.cy.pj.sys.pojo;
public class SysNotice {
/** 公告ID */
private Long id;
/** 公告标题 */
private String title;
/** 公告类型(1通知 2公告) */
private String type;
/** 公告内容 */
private String content;
/** 公告状态(0正常 1关闭) */
private String status;
/** 备注*/
private String remark;
/** 创建时间 */
private Date createdTime;
/** 修改时间*/
private Date modifiedTime;
/** 创建用户 */
private String createdUser;
/** 修改用户*/
private String modifiedUser;
//自己添加set/get/toString方法
}
第一步:定义通告业务数据层接口及业务方法。借助此类型的对象基于MyBatis技术实现与数据库的交互。
package com.cy.pj.notice.dao;
@Mapper
public interface SysNoticeDao {
/**
-
基于条件查询公告信息
-
@param notice 用于封装查询参数
-
@return 基于查询条件查询到结果
*/
List selectNotices(SysNotice notice);
/**
-
基于id删除公告信息
-
@param id
-
@return 删除了几行
-
说明:在jdk8之前,对于接口方法,假如参数有多个或者参数是数组,是不可以
-
直接在sql映射文件中使用参数名的,需要通过@Param这个注解定义参数名,然后
-
在sql映射语句中使用@Param注解中的名字获取参数数据。对于数组而言在sql映射
-
中可以直接使用array进行接收也可以。
*/
int deleteById(@Param(“ids”) Long… id);//array
/**
-
持久化notice对象数据
-
@param notice (封装了要写入的数据)
-
@return 返回写入的行数。
*/
int insertNotice(SysNotice notice);
/**
-
基于id查询notice对象
-
@param id 公告唯一标识id
-
@return 基于id查询到结果
-
建议:简单sql映射语句可以直接写到接口方法上,复杂sql还是推荐写到xml映射文件
*/
@Select(“select * from sys_notices where id=#{id}”)
SysNotice selectById(Long id);
/**
-
持久化notice对象数据
-
@param notice (封装了要更新的数据)
-
@return 返回更新的行数。
*/
int updateNotice(SysNotice notice);
}
其中:@Mapper是由MyBatis框架中定义的一个描述数据层接口的的注解(所有的注解只起到一个描述性的作用),用于告诉Spring框架此接口的实现由mybatis创建,并将其实现类对象存储到spring容器。当系统启动时,会对启动类所在包以及子包中的类进行扫描,假如发现接口上有@Mapper注解(mybatis提供),系统底层会基于接口创建其实现类(借助反射包中Proxy类进行创建),在实现类的内部,底层会又基于sqlsession对象实现数据访问和操作。
第二步:创建SysNoticeDao接口对应的SQL映射文件,名字为SysNoticeMapper.xml,存储在resources/mapper/sys目录下,同时定义xml文件头以及根元素,代码如下:
<?xml version="1.0" encoding="UTF-8" ?>第三步:在映射文件中添加insertNotice方法对应的Sql映射,关键代码如下:
insert into sys_notices
(title,type,content,status,remark,
createdTime,modifiedTime,createdUser,modifiedUser)
values
(#{title},#{type},#{content},#{status},#{remark},
now(),now(),#{createdUser},#{modifiedUser})
第四步:在映射文件中定义更新公告对应的SQL映射,关键代码如下:
update sys_notices
set title=#{title},
content=#{content},
type=#{type},
status=#{status},
remark=#{remark},
modifiedTime=now(),
modifiedUser=#{modifiedUser}
where id=#{id}
第五步:在映射文件中添加基于条件的SQL查询映射,关键代码如下:
<select id=“selectNotices”
parameterType=“com.cy.pj.sys.pojo.SysNotice”
resultType=“com.cy.pj.sys.pojo.SysNotice”>
select *
from sys_notices
type=#{type}
and title like concat(“%”,#{title},“%”)
and modifiedUser like concat(“%”,#{modifiedUser},“%”)
order by createdTime desc
第六步:在映射文件中定义删除操作对应的SQL映射,关键代码如下:
delete from sys_notices
id in
#{id}
or 1=2
第一步:在src/java/test目录下定义测试类,对NoticeDao对象进行应用测试。
package com.cy.pj.sys.dao;
@SpringBootTest
public class SysNoticeDaoTests {
@Autowired
private SysNoticeDao sysNoticeDao;
….
}
第二步:在单元测试类中添加insert操作的单元测试方法,代码如下:
@Test
void testInsertNotice(){
//创建SysNotice对象,通过此对象封装要写入到数据库的数据
SysNotice notice=new SysNotice();
notice.setTitle(“CGB2011结课时间”);
notice.setContent(“2021/3/20正式结课”);
notice.setStatus(“0”);
notice.setType(“1”);
notice.setCreatedUser(“tony”);
notice.setModifiedUser(“tony”);
//将SysNotice对象持久化到数据库
sysNoticeDao.insertNotice(notice);
//此方法的实现内部会通过SQLSession向表中写数据。
}
第三步:定义基于id进行查询的单元测试方法,代码如下:
@Test
void testSelectById(){
SysNotice notice=sysNoticeDao.selectById(1L);
System.out.println(notice);
}
第四步:定义基于id执行修改的单元测试方法,代码如下:
@Test
void testUpdateNotice(){
//基于id查询通知对象
SysNotice notice=sysNoticeDao.selectById(1L);
notice.setType(“2”);
notice.setContent(“2021/07/09 春节假期”);
notice.setModifiedUser(“json”);
//将更新以后的内容持久化到数据库
sysNoticeDao.updateNotice(notice);
}
小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数初中级Java工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年最新Java开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频
如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注Java)
最后
针对最近很多人都在面试,我这边也整理了相当多的面试专题资料,也有其他大厂的面经。希望可以帮助到大家。
最新整理面试题
上述的面试题答案都整理成文档笔记。也还整理了一些面试资料&最新2021收集的一些大厂的面试真题
最新整理电子书
最新整理大厂面试文档
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
80154)]
[外链图片转存中…(img-E0DGtGW6-1711268080154)]
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频
如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注Java)
[外链图片转存中…(img-KljIWtbV-1711268080155)]
最后
针对最近很多人都在面试,我这边也整理了相当多的面试专题资料,也有其他大厂的面经。希望可以帮助到大家。
最新整理面试题
[外链图片转存中…(img-RwKPSPWP-1711268080155)]
上述的面试题答案都整理成文档笔记。也还整理了一些面试资料&最新2021收集的一些大厂的面试真题
最新整理电子书
[外链图片转存中…(img-YsZtle4B-1711268080155)]
最新整理大厂面试文档
[外链图片转存中…(img-yKE6Tdvl-1711268080156)]
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。