current_date如何模糊查询
时间: 2024-01-12 08:03:02 浏览: 152
如果您想使用当前日期(current_date)进行模糊查询,您可以使用数据库的模糊查询功能结合当前日期函数实现。
以下是一些常见的数据库系统的模糊查询语法示例:
1. MySQL:
```sql
SELECT * FROM your_table WHERE date_column LIKE CONCAT(CURRENT_DATE(), '%');
```
这将返回date_column字段以当前日期开头的所有记录。
2. PostgreSQL:
```sql
SELECT * FROM your_table WHERE date_column::text LIKE (CURRENT_DATE || '%');
```
这将返回date_column字段以当前日期开头的所有记录。
3. SQL Server:
```sql
SELECT * FROM your_table WHERE CONVERT(date, date_column, 101) LIKE CONVERT(date, GETDATE(), 101) + '%';
```
这将返回date_column字段以当前日期开头的所有记录。
请注意,具体的语法和用法可能因数据库系统而异。上述示例仅供参考,具体实现方式请参考您所使用的数据库的文档或教程。同时,也要注意不同数据库的日期函数和操作符可能会有所不同,需要根据具体情况进行调整。
相关问题
采用Spring+SpringMVC+Mybatis技术框架开发一个培训班学员信息管理模块,实现以下功能: (1)增删改查培训班信息,当培训班还有学习的学员时,不能删除培训班信息; (2)增删改查学员信息,能够上传学员照片; (3)按培训班名称查询培训班信息,支持培训班名称模糊查询和分页显示; (4)按学员名查询学员信息,支持学员名模糊查询和分页显示;代码
好的,下面是一个简单的培训班学员信息管理模块的代码示例。该示例使用Spring+SpringMVC+Mybatis技术框架进行开发,并实现了上述要求的所有功能。
1. 创建数据库表
首先,您需要创建两个数据库表,一个是"training_class"表,另一个是"student"表,用于存储培训班和学员的信息。"training_class"表中包含培训班的名称、开始时间、结束时间等信息。"student"表中包含学员的姓名、性别、年龄、联系方式、照片等信息,并且其中的培训班ID字段与"training_class"表中的ID字段关联。
2. 创建Java实体类
然后,您需要创建两个Java实体类,一个是"TrainingClass"类,另一个是"Student"类,分别对应上述两个数据库表。这里只展示了"TrainingClass"类的代码,"Student"类的代码类似。
```java
public class TrainingClass {
private int id;
private String name;
private Date startTime;
private Date endTime;
private List<Student> students;
// 省略getter和setter方法
}
```
3. 创建Mapper接口和XML文件
接下来,您需要创建两个Mapper接口,一个是"TrainingClassMapper"接口,另一个是"StudentMapper"接口,分别对应上述两个数据库表。在这些接口中,您需要定义一些基本的CURD操作,例如添加、删除、修改和查询培训班和学员信息的方法。然后,您需要创建两个对应的XML配置文件,分别与这些Mapper接口相关联,并在其中定义一些SQL语句来实现这些CURD操作。这里只展示了"TrainingClassMapper"接口和XML文件的代码,"StudentMapper"类似。
```java
public interface TrainingClassMapper {
void insertTrainingClass(TrainingClass trainingClass);
void deleteTrainingClassById(int id);
void updateTrainingClass(TrainingClass trainingClass);
TrainingClass selectTrainingClassById(int id);
List<TrainingClass> selectAllTrainingClasses();
List<TrainingClass> selectTrainingClassesByName(String name);
int countTrainingClasses();
List<TrainingClass> selectTrainingClassesByPage(@Param("start") int start, @Param("pageSize") int pageSize);
}
```
```xml
<mapper namespace="com.example.mapper.TrainingClassMapper">
<insert id="insertTrainingClass" parameterType="com.example.entity.TrainingClass">
insert into training_class (name, start_time, end_time) values (#{name}, #{startTime}, #{endTime})
</insert>
<delete id="deleteTrainingClassById" parameterType="int">
delete from training_class where id = #{id}
</delete>
<update id="updateTrainingClass" parameterType="com.example.entity.TrainingClass">
update training_class set name = #{name}, start_time = #{startTime}, end_time = #{endTime} where id = #{id}
</update>
<select id="selectTrainingClassById" parameterType="int" resultType="com.example.entity.TrainingClass">
select * from training_class where id = #{id}
</select>
<select id="selectAllTrainingClasses" resultType="com.example.entity.TrainingClass">
select * from training_class
</select>
<select id="selectTrainingClassesByName" parameterType="String" resultType="com.example.entity.TrainingClass">
select * from training_class where name like concat('%', #{name}, '%')
</select>
<select id="countTrainingClasses" resultType="int">
select count(*) from training_class
</select>
<select id="selectTrainingClassesByPage" parameterType="map" resultType="com.example.entity.TrainingClass">
select * from training_class limit #{start}, #{pageSize}
</select>
</mapper>
```
4. 创建Service类
接下来,您需要创建两个Service类,一个是"TrainingClassService"类,另一个是"StudentService"类,用于封装Mapper接口中定义的方法,并提供一些业务逻辑的处理。例如,在"TrainingClassService"类中,您需要编写一些业务逻辑代码,例如判断删除培训班信息时是否还有学员在学习,以及处理查询结果的分页显示等。这里只展示了"TrainingClassService"类的代码,"StudentService"类似。
```java
@Service
public class TrainingClassService {
@Autowired
private TrainingClassMapper trainingClassMapper;
public void insertTrainingClass(TrainingClass trainingClass) {
trainingClassMapper.insertTrainingClass(trainingClass);
}
public void deleteTrainingClassById(int id) throws Exception {
TrainingClass trainingClass = trainingClassMapper.selectTrainingClassById(id);
if (trainingClass != null && trainingClass.getStudents().size() > 0) {
throw new Exception("该培训班还有学员在学习,不能删除!");
}
trainingClassMapper.deleteTrainingClassById(id);
}
public void updateTrainingClass(TrainingClass trainingClass) {
trainingClassMapper.updateTrainingClass(trainingClass);
}
public TrainingClass selectTrainingClassById(int id) {
return trainingClassMapper.selectTrainingClassById(id);
}
public List<TrainingClass> selectAllTrainingClasses() {
return trainingClassMapper.selectAllTrainingClasses();
}
public List<TrainingClass> selectTrainingClassesByName(String name) {
return trainingClassMapper.selectTrainingClassesByName(name);
}
public int countTrainingClasses() {
return trainingClassMapper.countTrainingClasses();
}
public List<TrainingClass> selectTrainingClassesByPage(int currentPage, int pageSize) {
int start = (currentPage - 1) * pageSize;
return trainingClassMapper.selectTrainingClassesByPage(start, pageSize);
}
}
```
5. 创建Controller类
然后,您需要创建两个Controller类,一个是"TrainingClassController"类,另一个是"StudentController"类,用于处理HTTP请求,并调用相应的Service类中的方法。例如,在"TrainingClassController"类中,您需要编写一些处理增删改查培训班信息的方法,并将请求转发到相应的页面。这里只展示了"TrainingClassController"类的代码,"StudentController"类似。
```java
@Controller
@RequestMapping("/trainingClass")
public class TrainingClassController {
@Autowired
private TrainingClassService trainingClassService;
@RequestMapping("/list")
public String list(Model model, @RequestParam(required = false, defaultValue = "1") int currentPage,
@RequestParam(required = false, defaultValue = "5") int pageSize) {
List<TrainingClass> trainingClasses = trainingClassService.selectTrainingClassesByPage(currentPage, pageSize);
int totalCount = trainingClassService.countTrainingClasses();
int totalPages = totalCount % pageSize == 0 ? totalCount / pageSize : totalCount / pageSize + 1;
model.addAttribute("trainingClasses", trainingClasses);
model.addAttribute("totalCount", totalCount);
model.addAttribute("totalPages", totalPages);
model.addAttribute("currentPage", currentPage);
model.addAttribute("pageSize", pageSize);
return "trainingClassList";
}
@RequestMapping("/add")
public String add(Model model) {
model.addAttribute("trainingClass", new TrainingClass());
return "trainingClassForm";
}
@RequestMapping("/save")
public String save(TrainingClass trainingClass) {
if (trainingClass.getId() == 0) {
trainingClassService.insertTrainingClass(trainingClass);
} else {
trainingClassService.updateTrainingClass(trainingClass);
}
return "redirect:/trainingClass/list";
}
@RequestMapping("/delete/{id}")
public String delete(@PathVariable("id") int id, RedirectAttributes redirectAttributes) {
try {
trainingClassService.deleteTrainingClassById(id);
} catch (Exception e) {
redirectAttributes.addFlashAttribute("message", e.getMessage());
}
return "redirect:/trainingClass/list";
}
@RequestMapping("/edit/{id}")
public String edit(Model model, @PathVariable("id") int id) {
TrainingClass trainingClass = trainingClassService.selectTrainingClassById(id);
model.addAttribute("trainingClass", trainingClass);
return "trainingClassForm";
}
@RequestMapping("/search")
public String search(Model model, @RequestParam(required = false, defaultValue = "") String name,
@RequestParam(required = false, defaultValue = "1") int currentPage,
@RequestParam(required = false, defaultValue = "5") int pageSize) {
List<TrainingClass> trainingClasses = trainingClassService.selectTrainingClassesByName(name);
int totalCount = trainingClasses.size();
int totalPages = totalCount % pageSize == 0 ? totalCount / pageSize : totalCount / pageSize + 1;
int start = (currentPage - 1) * pageSize;
int end = Math.min(start + pageSize, totalCount);
model.addAttribute("trainingClasses", trainingClasses.subList(start, end));
model.addAttribute("totalCount", totalCount);
model.addAttribute("totalPages", totalPages);
model.addAttribute("currentPage", currentPage);
model.addAttribute("pageSize", pageSize);
model.addAttribute("name", name);
return "trainingClassList";
}
}
```
6. 创建JSP页面
最后,您需要创建一些JSP页面,用于展示培训班和学员的信息,并提供一些操作的界面。例如,您可以创建一个名为"trainingClassList.jsp"的页面,用于展示所有的培训班信息,并提供一些增删改查的操作按钮。另外,您还可以创建一个名为"studentList.jsp"的页面,用于展示所有的学员信息,并提供上传照片的功能。这里只展示了"trainingClassList.jsp"页面的代码。
```html
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>培训班列表</title>
</head>
<body>
<h1>培训班列表</h1>
<p>
<a href="${pageContext.request.contextPath}/trainingClass/add">添加培训班</a>
</p>
<form action="${pageContext.request.contextPath}/trainingClass/search" method="get">
<label>按培训班名称查询:</label>
<input type="text" name="name" value
用我给出的下列条件写出代码 技术要求: Springboot+vue+elementui+mysql+mybatis 完成以下功能: 1、创建新闻表。(自定义表结构) 2、列表展示(按照日期倒序排序)。 3、分页展示。 4、按照新闻作者模糊查询新闻。
以下是一个简单的实现代码,仅供参考:
后端代码:
1. 创建新闻表
在MySQL中创建名为news的表:
```sql
CREATE TABLE `news` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`title` varchar(255) NOT NULL,
`author` varchar(255) NOT NULL,
`content` text NOT NULL,
`release_date` datetime NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
```
2. DAO层接口
定义NewsDao.java接口:
```java
public interface NewsDao {
List<News> findAll();
List<News> findByAuthor(String author);
}
```
3. 新闻实体类
定义News.java实体类:
```java
public class News {
private Long id;
private String title;
private String author;
private String content;
private Date releaseDate;
// 省略getter和setter方法
}
```
4. Controller层接口
定义NewsController.java接口:
```java
@RestController
@RequestMapping("/api/news")
public class NewsController {
@Autowired
private NewsDao newsDao;
@GetMapping("/list")
public List<News> list() {
return newsDao.findAll();
}
@GetMapping("/search")
public List<News> search(@RequestParam String author) {
return newsDao.findByAuthor(author);
}
}
```
5. 分页功能实现
可以使用Mybatis分页插件PageHelper实现分页功能。在pom.xml文件中引入PageHelper依赖:
```xml
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.3.0</version>
</dependency>
```
在NewsDao.java接口中添加分页查询方法:
```java
public interface NewsDao {
List<News> findAll();
List<News> findByAuthor(String author);
List<News> findAllByPage(int pageNum, int pageSize);
}
```
在NewsController.java接口中实现分页查询:
```java
@GetMapping("/list")
public PageInfo<News> list(@RequestParam(defaultValue = "1") int pageNum,
@RequestParam(defaultValue = "10") int pageSize) {
PageHelper.startPage(pageNum, pageSize);
List<News> newsList = newsDao.findAll();
return new PageInfo<>(newsList);
}
```
前端代码:
1. 列表展示
使用ElementUI的Table组件展示新闻列表:
```html
<el-table :data="newsList" style="width: 100%" stripe>
<el-table-column prop="title" label="标题"></el-table-column>
<el-table-column prop="author" label="作者"></el-table-column>
<el-table-column prop="content" label="内容"></el-table-column>
<el-table-column prop="releaseDate" label="发布日期"></el-table-column>
</el-table>
```
2. 分页功能实现
使用ElementUI的Pagination组件实现分页功能:
```html
<el-pagination
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
:current-page="currentPage"
:page-sizes="[10, 20, 50, 100]"
:page-size="pageSize"
layout="total, sizes, prev, pager, next, jumper"
:total="total">
</el-pagination>
```
在Vue组件中实现相关方法:
```javascript
export default {
data() {
return {
newsList: [],
currentPage: 1,
pageSize: 10,
total: 0
}
},
methods: {
handleSizeChange(val) {
this.pageSize = val
this.fetchData()
},
handleCurrentChange(val) {
this.currentPage = val
this.fetchData()
},
fetchData() {
axios.get('/api/news/list', {
params: {
pageNum: this.currentPage,
pageSize: this.pageSize
}
}).then(res => {
this.newsList = res.data.list
this.total = res.data.total
})
}
}
}
```
3. 按照新闻作者模糊查询新闻
使用ElementUI的Input组件实现输入框,结合Button组件实现查询功能:
```html
<el-input placeholder="请输入作者" v-model="searchAuthor" style="width: 200px"></el-input>
<el-button type="primary" @click="handleSearch">搜索</el-button>
```
在Vue组件中实现相关方法:
```javascript
export default {
data() {
return {
searchAuthor: ''
}
},
methods: {
handleSearch() {
axios.get('/api/news/search', {
params: {
author: this.searchAuthor
}
}).then(res => {
this.newsList = res.data
})
}
}
}
```
阅读全文