使用注解的方式,实现对虚拟数据表 news(id(int),title(varcha(100)),author(varchar(50)),content(text),pubdate(date)) 进行操作的三层结构,写出测试程序
时间: 2023-11-13 13:03:55 浏览: 99
注解方式的三层结构包括:实体类、数据访问层(DAO)、业务逻辑层(Service)。以下是对应的代码示例:
实体类 News:
```java
public class News {
private int id;
private String title;
private String author;
private String content;
private Date pubdate;
public News() {}
public News(int id, String title, String author, String content, Date pubdate) {
this.id = id;
this.title = title;
this.author = author;
this.content = content;
this.pubdate = pubdate;
}
// getter and setter methods
}
```
数据访问层 NewsDAO:
```java
public interface NewsDAO {
@Select("SELECT * FROM news WHERE id=#{id}")
News findById(int id);
@Select("SELECT * FROM news ORDER BY pubdate DESC")
List<News> findAll();
@Insert("INSERT INTO news (title, author, content, pubdate) VALUES (#{title}, #{author}, #{content}, #{pubdate})")
int addNews(News news);
@Update("UPDATE news SET title=#{title}, author=#{author}, content=#{content}, pubdate=#{pubdate} WHERE id=#{id}")
int updateNews(News news);
@Delete("DELETE FROM news WHERE id=#{id}")
int deleteNews(int id);
}
```
业务逻辑层 NewsService:
```java
@Service
public class NewsService {
@Autowired
private NewsDAO newsDAO;
public News getNewsById(int id) {
return newsDAO.findById(id);
}
public List<News> getAllNews() {
return newsDAO.findAll();
}
public void addNews(News news) {
newsDAO.addNews(news);
}
public void updateNews(News news) {
newsDAO.updateNews(news);
}
public void deleteNews(int id) {
newsDAO.deleteNews(id);
}
}
```
测试程序 NewsTest:
```java
@RunWith(SpringRunner.class)
@SpringBootTest
public class NewsTest {
@Autowired
private NewsService newsService;
@Test
public void testCRUD() {
// 添加新闻
News news = new News(1, "Java 从入门到精通", "张三", "Java 是一门很好的语言", new Date());
newsService.addNews(news);
assertThat(news.getId()).isGreaterThan(0);
// 查询新闻
News savedNews = newsService.getNewsById(news.getId());
assertThat(savedNews.getTitle()).isEqualTo("Java 从入门到精通");
// 更新新闻
savedNews.setTitle("Java 从入门到放弃");
newsService.updateNews(savedNews);
News updatedNews = newsService.getNewsById(savedNews.getId());
assertThat(updatedNews.getTitle()).isEqualTo("Java 从入门到放弃");
// 删除新闻
newsService.deleteNews(updatedNews.getId());
News deletedNews = newsService.getNewsById(updatedNews.getId());
assertThat(deletedNews).isNull();
}
}
```
以上代码示例使用了 Spring Boot 和 MyBatis 框架,可根据实际情况进行调整。
阅读全文
相关推荐
![application/x-rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![text/x-c](https://img-home.csdnimg.cn/images/20250102104920.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![doc](https://img-home.csdnimg.cn/images/20241231044833.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![txt](https://img-home.csdnimg.cn/images/20241231045021.png)
![text/x-c](https://img-home.csdnimg.cn/images/20250102104920.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)