diff --git "a/26\351\231\210\346\231\223\347\201\277/20240102 springmvc.md" "b/26\351\231\210\346\231\223\347\201\277/20240102 springmvc.md" new file mode 100644 index 0000000000000000000000000000000000000000..18b8abe4a8ac7cb90fb98b3d90317f10f743bc13 --- /dev/null +++ "b/26\351\231\210\346\231\223\347\201\277/20240102 springmvc.md" @@ -0,0 +1,307 @@ +# 笔记 + +```Java +//SpringMVC技术与Servlet技术功能等同,均属于web层开发技术和spring纯注解开发一样要定义一个配置类; +// @Controller 类注解用于设定SpringMVC的核心控制器bean +//@RequestMapping 方法注解或类注解用于设置当前控制器方法请求访问路径,如果设置在类上统一设置当前控制器方法请求访问路径前缀 +@RequestMapping("/save") +public void save(){ + System.out.println("user save ..."); +} +//@ResponseBody 方法注解或类注解 用于设置当前控制器方法或整个类下面的方法的返回值就是当前返回值 无需解析成页面 +//@RequestParam 形参注解绑定请求参数与处理器方法形参间的关系 如 传参的名字和形参无法对应这时需要使用该注解进行映射,集合类型会被当做处理方法 也需要该注解定义集合类型就是个参数 无需解析(集合保存普通参数:请求参数名与形参集合对象名相同且请求参数为多个,@RequestParam绑定参数关系)annotation.Componen +@RequestMapping("/save") +@ResponseBody +public String save(){ + System.out.println("user save ..."); + return "{'info':'springmvc'}"; +} +//同时需要加载Tomcat服务器 Tomcat需要一个控制类 继承 实现方法 旧方法繁杂 推荐使用新方法 +public class ServletContainersInitConfig extends AbstractAnnotationConfigDispatcherServletInitializer{ + protected Class[] getServletConfigClasses() { + return new Class[]{SpringMvcConfig.class}; + } + protected String[] getServletMappings() { + return new String[]{"/"}; + } + protected Class[] getRootConfigClasses() { + return new Class[]{SpringConfig.class}; + } +} + +``` + +# 作业 + +```java +package com.mdd.config; + +import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.Configuration; + +@Configuration +@ComponentScan("com.mdd") +public class SpringMvcConfig { +} + + +package com.mdd.config; + +import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer; +//让Tomcat容器加载这个webConfig +public class webConfig extends AbstractAnnotationConfigDispatcherServletInitializer { + @Override + protected Class[] getRootConfigClasses() { + return new Class[0]; + } + + @Override + protected Class[] getServletConfigClasses() { + return new Class[]{SpringMvcConfig.class}; + } + + @Override + protected String[] getServletMappings() { + return new String[]{"/"}; + } +} + + +package com.mdd.controller; +import com.mdd.domain.Book; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.ResponseBody; + +import java.lang.reflect.Array; +import java.util.Arrays; +import java.util.List; + +@Controller +@RequestMapping("/book") //所有方法的路径都带/book前缀 +@ResponseBody //所有方法,都直接返回结果 +public class BookController { + @RequestMapping("/find") + //@ResponseBody + //@RequestParam 形参注解,解决请求参数与形参不一样的情况 + public String findBook(@RequestParam("name") String bookName, String price){ + System.out.println("开始调用业务层,再调用数据层,找到了一本书===》"+bookName); + System.out.println("它的价格是"+price); + return "Find a book, its name:"+bookName+";its price:"+price; + } + @RequestMapping("/delete") + //@ResponseBody + public String deleteById (Integer id){ + return "delete a book by id:"+id; + } +// @RequestMapping("/findBook") +// public String findBook(Book book){ +// System.out.println("开始调用业务层,再调用数据层,找到了一本书===》"+book.getBookName()); +// System.out.println("它的价格是"+book.getPrice()); +// return "Find a book, its name:"+book.getBookName()+";its price:"+book.getPrice(); +// } + @RequestMapping("/findBook") + public String findBook(Book book){ + System.out.println(book); + return "Find a book,:"+book.toString(); + } + @RequestMapping("/hobby") + public String array(String[] hobby){ + System.out.println(hobby); + return "Find a Son,:"+ Arrays.toString(hobby); + } + @RequestMapping(value = "/list",produces = "text/html;charset=utf-8") + public String list(@RequestParam List list){ + System.out.println(list); + return "Find a full,:"+ list; + } +} +``` + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +d + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git "a/26\351\231\210\346\231\223\347\201\277/20240104springmvc2.md" "b/26\351\231\210\346\231\223\347\201\277/20240104springmvc2.md" new file mode 100644 index 0000000000000000000000000000000000000000..f8188783a1f5a903ca4bda8c475537bce9802325 --- /dev/null +++ "b/26\351\231\210\346\231\223\347\201\277/20240104springmvc2.md" @@ -0,0 +1,178 @@ +```java +笔记: + @RequestParam +@RequestParam注解一般与get请求一起使用。 +一个请求(一个方法中)可以有多个@RequestParam。 +@RequestParam 用来接收普通参数。 +那么问题来了,加@RequestParam和不加有什么区别呢?我们又该在什么时候用它呢? +(1)加@RequestParam注解 + + @RequestMapping("/user") +public String user(int userId) { +  return "user"; +} +(2)不加@RequestParam注解 + + @RequestMapping("/user") +public String user(@RequestParam("userId") int userId) { +  return "user"; +} +不添加该注解则参数为非必传,反之参数为必传。参数名为userId。 +通过注解中的参数required = false可以设置参数为非必传。required值默认为true。 +通过@RequestParam("userId")或者@RequestParam(value = "userId")指定参数名。 +通过参数defaultValue = "0"可以指定参数默认值。注意:当为require设置为false时才可以使用defaultValue。 +@RequestMapping("/user") +public String user(@RequestParam(value = "userId", defaultValue = "0", required = false) int userId) { +  return "user"; +} +@RequestBody(常用) +@RequestBody注解一般与post方法使用。 +一个请求中只能存在一个@RequestBody注解。 +@RequestBody 用于接收前端传递给后端的json字符串中的数据。(处理json格式的数据) +语法格式: + +(@RequestBody Map map) +(@RequestBody Object object) +# 作业 + +package com.mdd.config; + +import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.Configuration; +import org.springframework.web.servlet.config.annotation.EnableWebMvc; + +@Configuration +@ComponentScan("com.mdd") +@EnableWebMvc //开启json数据类型自动转换 +public class SpringMvcConfig { +} + + +package com.mdd.config; + +import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer; + +public class WebConfig extends AbstractAnnotationConfigDispatcherServletInitializer { + @Override + protected Class[] getRootConfigClasses() { + return new Class[0]; + } + + @Override + protected Class[] getServletConfigClasses() { + return new Class[]{SpringMvcConfig.class}; + } + + @Override + protected String[] getServletMappings() { + return new String[]{"/"}; + } +} + + +package com.mdd.controller; + +import com.mdd.domain.User; +import org.springframework.format.annotation.DateTimeFormat; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +import java.util.Date; +import java.util.List; + +@Controller +public class UserController { + @RequestMapping("/save") + @ResponseBody + public String save(@RequestBody List name){ + //@RequestBody 请求体注解 + //数组形式和集合形式的数据基本相同 + System.out.println("成功接受了json形式的数据"+ name); + return "ok"; + } + @RequestMapping("/user") + @ResponseBody + public User userJson(@RequestBody User user){ + System.out.println("接收到一个user对象"+user); + return user; + } + + @RequestMapping("/userList") + @ResponseBody + public List userListJson(@RequestBody List users){ + System.out.println("接收到一个user对象数组"+users); + return users; + } + + @RequestMapping("/sendDate") + @ResponseBody + public String userJson(Date date,@DateTimeFormat(pattern = "yyyy-MM-dd") Date date1,@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")Date date2){ + System.out.println("接收到一个日期"+date); + System.out.println("接收到一个新日期"+date1); + System.out.println("接收到另一个新日期"+date2); + return "ok"; + } +} + + +package com.mdd.controller; + +import com.mdd.domain.Book; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.*; + +import java.util.ArrayList; +import java.util.List; + +//@Controller +//@ResponseBody +@RestController +@RequestMapping(value = "/books") + +public class BookController { + //books 查询所有 + //@RequestMapping(method = RequestMethod.GET) + @GetMapping + public List getBooks(){ + ArrayList books = new ArrayList<>(); + books.add(new Book("三毛的书","666")); + books.add(new Book("四毛的书","666")); + books.add(new Book("五毛的书","666")); + books.add(new Book("六毛的书","666")); + return books; + } + //books 添加书本 + //@RequestMapping(method = RequestMethod.PUT) + @PostMapping + public Book addBooks(@RequestBody Book book){ + //手动模拟一个书本的集合 + System.out.println("接收到一个书本对象"+book); + System.out.println("保存成功"); + return book; + } + //books 修改书本 + @PutMapping + public Book editBooks(@RequestBody Book book){ + //手动模拟一个书本的集合 + System.out.println("接收到一个书本对象"+book); + book.setPassword("12345678"); + System.out.println("修改为"+book); + System.out.println("已修改成功"); + return book; + } + //books/1 查询id为1的书本 + @GetMapping("/{id}") + public Book getBooks(@PathVariable Integer id){ + System.out.println("接收到一个书本的ID"+id); + return new Book(id,"你猜是谁的书","66666"); + } + //books/1 删除id为1的书本 + @DeleteMapping("/{id}") + public String deleteBooks(@PathVariable Integer id){ + System.out.println("接收到一个书本的ID"+id); + return "delete ok"; + } +} +``` \ No newline at end of file diff --git "a/26\351\231\210\346\231\223\347\201\277/20240105 springmvc\351\205\215\347\275\256\347\261\273.md" "b/26\351\231\210\346\231\223\347\201\277/20240105 springmvc\351\205\215\347\275\256\347\261\273.md" new file mode 100644 index 0000000000000000000000000000000000000000..34827d9be1f93eadf7ae9cd1efc374d1de3258ca --- /dev/null +++ "b/26\351\231\210\346\231\223\347\201\277/20240105 springmvc\351\205\215\347\275\256\347\261\273.md" @@ -0,0 +1,179 @@ +```java +作业: +1.创建Maven的web项目,添加依赖 + 配置类 + +### 2.在java下面创建所需的项目包 + 1.domain: set() get() toString() 有参无参构造 + 2.config: 存放相关的配置类 + 3.controller:编写的是控制类 + 4.mapper : 使用Mapper接口代理方式,是数据层,编写SQL方法操作数据库 + 5.service : 使用Service接口代理方式,是业务层,要使用Mapper数据层 + impl目录存放的是Service实现类 + + +### 3.编写Config +//JdbcConfig +是一个 Spring 的配置类,用于配置数据库连接信息。其中使用了 @Bean 注解将返回的 DataSource 对象注册到 Spring 容器中 +public class JdbcConfig { + @Bean + public DataSource dataSource(){ + DruidDataSource ds = new DruidDataSource(); + ds.setDriverClassName("com.mysql.cj.jdbc.Driver"); + ds.setUrl("jdbc:mysql:///ssm"); + ds.setUsername("root"); + ds.setPassword("123456"); + return ds; + } +} + +//MybatisConfig +是一个 Spring 的配置类,用于配置 MyBatis 相关信息。其中使用了 @Bean 注解将返回的 SqlSessionFactoryBean 和 MapperScannerConfigurer 对象注册到 Spring 容器中 +public class MybatisConfig { + @Bean + public SqlSessionFactoryBean sqlSessionFactoryBean(DataSource dataSource){ + SqlSessionFactoryBean ssfb = new SqlSessionFactoryBean(); + ssfb.setTypeAliasesPackage("com.mdd.domain"); + ssfb.setDataSource(dataSource); + return ssfb; + } + @Bean + public MapperScannerConfigurer mapperScannerConfigurer(){ + MapperScannerConfigurer msc = new MapperScannerConfigurer(); + msc.setBasePackage("com.mdd.mapper"); + return msc; + } +} + +//SpringConfig +将业务逻辑层和数据访问层的组件注册到 Spring 容器中,并且配置好了数据库连接和 Mybatis 相关信息。这样在其他使用了这些组件的地方可以直接通过依赖注入的方式获取到它们的实例,并调用相应的方法完成业务操作。 +@Configuration +@ComponentScan({"com.mdd.service"}) +@Import({JdbcConfig.class,MyBatisConfig.class}) +public class SpringConfig { +} + +//SpringMvcConfig +将控制器组件注册到 Spring MVC 的容器中,并启用相关的配置。通过 @ComponentScan 注解指定了需要扫描的控制器所在的包路径,Spring MVC 会自动扫描这些控制器,并将其实例化并注册到 Spring 容器中。同时,通过 @EnableWebMvc 注解启用了 Spring MVC 相关的配置,包括处理请求和响应、视图解析等功能。这样,在其他地方使用了这些控制器的地方,可以直接通过依赖注入的方式获取到它们的实例,并处理相应的请求 +@Configuration +@ComponentScan("com.mdd.controller") +@EnableWebMvc +public class SpringMvcConfig { +} + +//WebConfig +用于配置 Spring MVC 相关信息 +public class WebConfig extends AbstractAnnotationConfigDispatcherServletInitializer { + //加载Spring配置类 + protected Class[] getRootConfigClasses() { + return new Class[]{SpringConfig.class}; + } + //加载SpringMVC配置类 + protected Class[] getServletConfigClasses() { + return new Class[]{SpringMvcConfig.class}; + } + //设置SpringMVC请求地址拦截规则 + protected String[] getServletMappings() { + return new String[]{"/"}; + } +} + + +### 4.编写controller控制类 + + +@RestController +//@RestController 注解实际上是 @Controller 和 @ResponseBody 注解的组合。@Controller 用于标识该类为控制器,而 @ResponseBody 则表示方法的返回值直接作为响应体返回。 +@RequestMapping("/books") +public class BookController { + //controller是表现层,要实现具体业务,就要调用业务层service + @Autowired + private BookService bookService; + //查询所有书籍 + @GetMapping + public R getAllBook(){ + List allBook = bookService.getAllBook(); + if (allBook != null) { + return R.success(200,allBook); + }else { + return R.failure(400,"查询失败,没数据"); + } + } + //其他方法... +} + + +### 5.mapper + + +//mapper是数据层,自己负责写SQL语句来操作数据库 +public interface BookMapper { + @Insert("insert into tb_book (book_name, author, publisher) values (#{bookName}, #{author}, #{publisher}) ") + Integer addBook(Book book); + + @Update("update tb_book set book_name = #{bookName},author=#{author},publisher=#{publisher} where id=#{id}") + Integer updateBook(Book book); + + @Select("select id, book_name as bookName, author, publisher from tb_book order by id desc;") + List getAllBook(); + + @Select("select id, book_name as bookName, author, publisher from tb_book where id = #{id};") + Book getBook(Integer id); + + @Delete("delete from tb_book where id= #{id};") + Integer delBook(Integer id); + +} + + +### 6.service + + +//定义一个 BookService 接口,包含了对图书进行增加、更新、查询和删除的方法 +public interface BookService { + Integer addBook(Book book); + + Integer updateBook(Book book); + + List getAllBook(); + + Book getBook(Integer id); + + Integer delBook(Integer id); + +} + + +BookServiceImpl + + +//直接调用了 BookMapper 的各种方法 +@Service +public class BookServiceImpl implements BookService { + //service是业务层,要操作数据库,要通过数据层mapper + @Autowired + private BookMapper bookMapper; + + public Integer addBook(Book book) { + return bookMapper.addBook(book); + } + + public Integer updateBook(Book book) { + return bookMapper.updateBook(book); + } + + public List getAllBook() { + return bookMapper.getAllBook(); + } + + public Book getBook(Integer id) { + return bookMapper.getBook(id); + } + + public Integer delBook(Integer id) { + return bookMapper.delBook(id); + } + +} +``` + diff --git "a/26\351\231\210\346\231\223\347\201\277/20240108 \345\244\215\344\271\2401.md" "b/26\351\231\210\346\231\223\347\201\277/20240108 \345\244\215\344\271\2401.md" new file mode 100644 index 0000000000000000000000000000000000000000..fbbca381ff3efee5cdae975860cffbfc8844402b --- /dev/null +++ "b/26\351\231\210\346\231\223\347\201\277/20240108 \345\244\215\344\271\2401.md" @@ -0,0 +1,347 @@ +## 复习: + +```java +package com.mdd.config; + +import com.alibaba.druid.pool.DruidDataSource; +import org.springframework.context.annotation.Bean; + +import javax.sql.DataSource; + +public class JdbcConfig { + @Bean + public DataSource dataSource(){ + DruidDataSource ds = new DruidDataSource(); + ds.setDriverClassName("com.mysql.cj.jdbc.Driver"); + ds.setUrl("jdbc:mysql:///ssm"); + ds.setUsername("root"); + ds.setPassword("1234"); + return ds; + } +} +package com.mdd.config; + +import com.alibaba.druid.pool.DruidDataSource; +import org.springframework.context.annotation.Bean; + +import javax.sql.DataSource; + +public class JdbcConfig { + @Bean + public DataSource dataSource(){ + DruidDataSource ds = new DruidDataSource(); + ds.setDriverClassName("com.mysql.cj.jdbc.Driver"); + ds.setUrl("jdbc:mysql:///ssm"); + ds.setUsername("root"); + ds.setPassword("1234"); + return ds; + } +} +package com.mdd.config; + +import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Import; + +@Configuration +@ComponentScan({"com.mdd.service", "com.mdd.mapper"}) +@Import({MybatisConfig.class, JdbcConfig.class}) +public class SpringConfig { +} +package com.mdd.config; + +import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.Configuration; +import org.springframework.web.servlet.config.annotation.EnableWebMvc; +import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; +import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; + +@Configuration +@ComponentScan("com.mdd.controller") +@EnableWebMvc +public class SpringMvcConfig implements WebMvcConfigurer { + @Override + public void addResourceHandlers(ResourceHandlerRegistry registry) { + registry.addResourceHandler("/index.html").addResourceLocations("/index.html"); + } +} +package com.mdd.config; + +import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer; + +public class WebConfig extends AbstractAnnotationConfigDispatcherServletInitializer { + protected Class[] getRootConfigClasses() { + return new Class[]{SpringConfig.class}; + } + + protected Class[] getServletConfigClasses() { + return new Class[]{SpringMvcConfig.class}; + } + + protected String[] getServletMappings() { + return new String[]{"/"}; + } +} +package com.mdd.controller; + +import com.mdd.domain.Book; +import com.mdd.service.BookService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +@RestController +@RequestMapping("/books") +public class BookController { + @Autowired + private BookService bookService; + //查所有 + @GetMapping + public R getAll(){ + List bookList=bookService.getAll(); + Integer code=bookList !=null? 2001:2000; + Object data=bookList !=null? bookList:"查询数据失败,可能没有数据!"; + return new R(code, data); + } + //添加 + @PostMapping + public R addBook(@RequestBody Book book){ + Boolean flat= bookService.addBook(book); + Integer code=flat ? 3001:3000; + Object data=flat ? "添加成功":"添加失败!"; + return new R(code, data); + } + //修改 + @PutMapping + public R updateBook(@RequestBody Book book){ + Boolean flat= bookService.updateBook(book); + Integer code=flat? 4001:4000; + Object data=flat ? "修改成功":"修改失败!"; + return new R(code,data); + } + ////根据id查询 + @GetMapping("/{id}") + public R getById(@PathVariable Integer id){ + Book book=bookService.getById(id); + Integer code=book !=null? 2001:2000; + Object data=book !=null? book:"查询数据失败,可能没有数据!"; + return new R(code,data); + } + //根据id删除 + @DeleteMapping("/{id}") + public R delById(@PathVariable Integer id){ + Boolean flat=bookService.delById(id); + Integer code=flat? 5001:5000; + Object data=flat ? "删除成功":"删除失败!"; + return new R(code,data); + } + + + +} +package com.mdd.controller; + +public class Code { + public static final Integer GET_OK =2001; + public static final Integer POST_OK =3001; + public static final Integer PUT_OK =4001; + public static final Integer DELETE_OK =5001; + + + public static final Integer GET_ERR =2000; + public static final Integer POST_ERR =3000; + public static final Integer PUT_ERR =4000; + public static final Integer DELETE_ERR =5000; + + +} +package com.mdd.controller; + +public class R { + private Integer code; + private String msg; + private Object data; + + public R() { + } + + public R(Integer code, String msg, Object data) { + this.code = code; + this.msg = msg; + this.data = data; + } + + public R(Integer code, Object data) { + this.code = code; + this.data = data; + } + + public R(Integer code, String msg) { + this.code = code; + this.msg = msg; + } + + public Integer getCode() { + return code; + } + + public void setCode(Integer code) { + this.code = code; + } + + public String getMsg() { + return msg; + } + + public void setMsg(String msg) { + this.msg = msg; + } + + public Object getData() { + return data; + } + + public void setData(Object data) { + this.data = data; + } +} +package com.mdd.domain; + +public class Book { + private Integer id; + private String bookName; + private String author; + private String publisher; + + public Book() { + } + + public Book(Integer id, String bookName, String author, String publisher) { + this.id = id; + this.bookName = bookName; + this.author = author; + this.publisher = publisher; + } + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public String getBookName() { + return bookName; + } + + public void setBookName(String bookName) { + this.bookName = bookName; + } + + public String getAuthor() { + return author; + } + + public void setAuthor(String author) { + this.author = author; + } + + public String getPublisher() { + return publisher; + } + + public void setPublisher(String publisher) { + this.publisher = publisher; + } + + @Override + public String toString() { + return "Book{" + + "id=" + id + + ", bookName='" + bookName + '\'' + + ", author='" + author + '\'' + + ", publisher='" + publisher + '\'' + + '}'; + } +} +package com.mdd.mapper; + +import com.mdd.domain.Book; +import org.apache.ibatis.annotations.Delete; +import org.apache.ibatis.annotations.Insert; +import org.apache.ibatis.annotations.Select; +import org.apache.ibatis.annotations.Update; + +import java.util.List; + +public interface BookMapper { + @Select("select id, book_name bookName, author, publisher from tb_book order by id desc; ") + List getAll(); + + @Insert("insert into tb_book(book_name, author, publisher) values (#{bookName}, #{author}, #{publisher})") + Integer addBook(Book book); + + @Update("update tb_book set book_name=#{bookName}, author=#{author}, publisher=#{publisher} where id=#{id}") + Integer updateBook(Book book); + + @Select("select id, book_name bookName, author, publisher from tb_book where id=#{id}") + Book getById(Integer id); + + @Delete("delete from tb_book where id=#{id}") + Integer delById(Integer id); +} +package com.mdd.service.impl; + +import com.mdd.domain.Book; +import com.mdd.mapper.BookMapper; +import com.mdd.service.BookService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; +@Service +public class BookServiceImpl implements BookService { + @Autowired + private BookMapper bookMapper; + + public List getAll() { + return bookMapper.getAll(); + } + + public boolean addBook(Book book) { + return bookMapper.addBook(book)>0; + } + + public Boolean updateBook(Book book) { + return bookMapper.updateBook(book)>0; + } + + public Book getById(Integer id) { + return bookMapper.getById(id); + } + + public Boolean delById(Integer id) { + return bookMapper.delById(id)>0; + } +} +package com.mdd.service; + +import com.mdd.domain.Book; + +import java.util.List; + +public interface BookService { + List getAll(); + + boolean addBook(Book book); + + Boolean updateBook(Book book); + + Book getById(Integer id); + + Boolean delById(Integer id); +} +``` + diff --git "a/26\351\231\210\346\231\223\347\201\277/20240109 \345\244\215\344\271\2402.md" "b/26\351\231\210\346\231\223\347\201\277/20240109 \345\244\215\344\271\2402.md" new file mode 100644 index 0000000000000000000000000000000000000000..fbbca381ff3efee5cdae975860cffbfc8844402b --- /dev/null +++ "b/26\351\231\210\346\231\223\347\201\277/20240109 \345\244\215\344\271\2402.md" @@ -0,0 +1,347 @@ +## 复习: + +```java +package com.mdd.config; + +import com.alibaba.druid.pool.DruidDataSource; +import org.springframework.context.annotation.Bean; + +import javax.sql.DataSource; + +public class JdbcConfig { + @Bean + public DataSource dataSource(){ + DruidDataSource ds = new DruidDataSource(); + ds.setDriverClassName("com.mysql.cj.jdbc.Driver"); + ds.setUrl("jdbc:mysql:///ssm"); + ds.setUsername("root"); + ds.setPassword("1234"); + return ds; + } +} +package com.mdd.config; + +import com.alibaba.druid.pool.DruidDataSource; +import org.springframework.context.annotation.Bean; + +import javax.sql.DataSource; + +public class JdbcConfig { + @Bean + public DataSource dataSource(){ + DruidDataSource ds = new DruidDataSource(); + ds.setDriverClassName("com.mysql.cj.jdbc.Driver"); + ds.setUrl("jdbc:mysql:///ssm"); + ds.setUsername("root"); + ds.setPassword("1234"); + return ds; + } +} +package com.mdd.config; + +import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Import; + +@Configuration +@ComponentScan({"com.mdd.service", "com.mdd.mapper"}) +@Import({MybatisConfig.class, JdbcConfig.class}) +public class SpringConfig { +} +package com.mdd.config; + +import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.Configuration; +import org.springframework.web.servlet.config.annotation.EnableWebMvc; +import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; +import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; + +@Configuration +@ComponentScan("com.mdd.controller") +@EnableWebMvc +public class SpringMvcConfig implements WebMvcConfigurer { + @Override + public void addResourceHandlers(ResourceHandlerRegistry registry) { + registry.addResourceHandler("/index.html").addResourceLocations("/index.html"); + } +} +package com.mdd.config; + +import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer; + +public class WebConfig extends AbstractAnnotationConfigDispatcherServletInitializer { + protected Class[] getRootConfigClasses() { + return new Class[]{SpringConfig.class}; + } + + protected Class[] getServletConfigClasses() { + return new Class[]{SpringMvcConfig.class}; + } + + protected String[] getServletMappings() { + return new String[]{"/"}; + } +} +package com.mdd.controller; + +import com.mdd.domain.Book; +import com.mdd.service.BookService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +@RestController +@RequestMapping("/books") +public class BookController { + @Autowired + private BookService bookService; + //查所有 + @GetMapping + public R getAll(){ + List bookList=bookService.getAll(); + Integer code=bookList !=null? 2001:2000; + Object data=bookList !=null? bookList:"查询数据失败,可能没有数据!"; + return new R(code, data); + } + //添加 + @PostMapping + public R addBook(@RequestBody Book book){ + Boolean flat= bookService.addBook(book); + Integer code=flat ? 3001:3000; + Object data=flat ? "添加成功":"添加失败!"; + return new R(code, data); + } + //修改 + @PutMapping + public R updateBook(@RequestBody Book book){ + Boolean flat= bookService.updateBook(book); + Integer code=flat? 4001:4000; + Object data=flat ? "修改成功":"修改失败!"; + return new R(code,data); + } + ////根据id查询 + @GetMapping("/{id}") + public R getById(@PathVariable Integer id){ + Book book=bookService.getById(id); + Integer code=book !=null? 2001:2000; + Object data=book !=null? book:"查询数据失败,可能没有数据!"; + return new R(code,data); + } + //根据id删除 + @DeleteMapping("/{id}") + public R delById(@PathVariable Integer id){ + Boolean flat=bookService.delById(id); + Integer code=flat? 5001:5000; + Object data=flat ? "删除成功":"删除失败!"; + return new R(code,data); + } + + + +} +package com.mdd.controller; + +public class Code { + public static final Integer GET_OK =2001; + public static final Integer POST_OK =3001; + public static final Integer PUT_OK =4001; + public static final Integer DELETE_OK =5001; + + + public static final Integer GET_ERR =2000; + public static final Integer POST_ERR =3000; + public static final Integer PUT_ERR =4000; + public static final Integer DELETE_ERR =5000; + + +} +package com.mdd.controller; + +public class R { + private Integer code; + private String msg; + private Object data; + + public R() { + } + + public R(Integer code, String msg, Object data) { + this.code = code; + this.msg = msg; + this.data = data; + } + + public R(Integer code, Object data) { + this.code = code; + this.data = data; + } + + public R(Integer code, String msg) { + this.code = code; + this.msg = msg; + } + + public Integer getCode() { + return code; + } + + public void setCode(Integer code) { + this.code = code; + } + + public String getMsg() { + return msg; + } + + public void setMsg(String msg) { + this.msg = msg; + } + + public Object getData() { + return data; + } + + public void setData(Object data) { + this.data = data; + } +} +package com.mdd.domain; + +public class Book { + private Integer id; + private String bookName; + private String author; + private String publisher; + + public Book() { + } + + public Book(Integer id, String bookName, String author, String publisher) { + this.id = id; + this.bookName = bookName; + this.author = author; + this.publisher = publisher; + } + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public String getBookName() { + return bookName; + } + + public void setBookName(String bookName) { + this.bookName = bookName; + } + + public String getAuthor() { + return author; + } + + public void setAuthor(String author) { + this.author = author; + } + + public String getPublisher() { + return publisher; + } + + public void setPublisher(String publisher) { + this.publisher = publisher; + } + + @Override + public String toString() { + return "Book{" + + "id=" + id + + ", bookName='" + bookName + '\'' + + ", author='" + author + '\'' + + ", publisher='" + publisher + '\'' + + '}'; + } +} +package com.mdd.mapper; + +import com.mdd.domain.Book; +import org.apache.ibatis.annotations.Delete; +import org.apache.ibatis.annotations.Insert; +import org.apache.ibatis.annotations.Select; +import org.apache.ibatis.annotations.Update; + +import java.util.List; + +public interface BookMapper { + @Select("select id, book_name bookName, author, publisher from tb_book order by id desc; ") + List getAll(); + + @Insert("insert into tb_book(book_name, author, publisher) values (#{bookName}, #{author}, #{publisher})") + Integer addBook(Book book); + + @Update("update tb_book set book_name=#{bookName}, author=#{author}, publisher=#{publisher} where id=#{id}") + Integer updateBook(Book book); + + @Select("select id, book_name bookName, author, publisher from tb_book where id=#{id}") + Book getById(Integer id); + + @Delete("delete from tb_book where id=#{id}") + Integer delById(Integer id); +} +package com.mdd.service.impl; + +import com.mdd.domain.Book; +import com.mdd.mapper.BookMapper; +import com.mdd.service.BookService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; +@Service +public class BookServiceImpl implements BookService { + @Autowired + private BookMapper bookMapper; + + public List getAll() { + return bookMapper.getAll(); + } + + public boolean addBook(Book book) { + return bookMapper.addBook(book)>0; + } + + public Boolean updateBook(Book book) { + return bookMapper.updateBook(book)>0; + } + + public Book getById(Integer id) { + return bookMapper.getById(id); + } + + public Boolean delById(Integer id) { + return bookMapper.delById(id)>0; + } +} +package com.mdd.service; + +import com.mdd.domain.Book; + +import java.util.List; + +public interface BookService { + List getAll(); + + boolean addBook(Book book); + + Boolean updateBook(Book book); + + Book getById(Integer id); + + Boolean delById(Integer id); +} +``` + diff --git "a/26\351\231\210\346\231\223\347\201\277/20240111 \345\244\215\344\271\2403.md" "b/26\351\231\210\346\231\223\347\201\277/20240111 \345\244\215\344\271\2403.md" new file mode 100644 index 0000000000000000000000000000000000000000..fbbca381ff3efee5cdae975860cffbfc8844402b --- /dev/null +++ "b/26\351\231\210\346\231\223\347\201\277/20240111 \345\244\215\344\271\2403.md" @@ -0,0 +1,347 @@ +## 复习: + +```java +package com.mdd.config; + +import com.alibaba.druid.pool.DruidDataSource; +import org.springframework.context.annotation.Bean; + +import javax.sql.DataSource; + +public class JdbcConfig { + @Bean + public DataSource dataSource(){ + DruidDataSource ds = new DruidDataSource(); + ds.setDriverClassName("com.mysql.cj.jdbc.Driver"); + ds.setUrl("jdbc:mysql:///ssm"); + ds.setUsername("root"); + ds.setPassword("1234"); + return ds; + } +} +package com.mdd.config; + +import com.alibaba.druid.pool.DruidDataSource; +import org.springframework.context.annotation.Bean; + +import javax.sql.DataSource; + +public class JdbcConfig { + @Bean + public DataSource dataSource(){ + DruidDataSource ds = new DruidDataSource(); + ds.setDriverClassName("com.mysql.cj.jdbc.Driver"); + ds.setUrl("jdbc:mysql:///ssm"); + ds.setUsername("root"); + ds.setPassword("1234"); + return ds; + } +} +package com.mdd.config; + +import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Import; + +@Configuration +@ComponentScan({"com.mdd.service", "com.mdd.mapper"}) +@Import({MybatisConfig.class, JdbcConfig.class}) +public class SpringConfig { +} +package com.mdd.config; + +import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.Configuration; +import org.springframework.web.servlet.config.annotation.EnableWebMvc; +import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; +import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; + +@Configuration +@ComponentScan("com.mdd.controller") +@EnableWebMvc +public class SpringMvcConfig implements WebMvcConfigurer { + @Override + public void addResourceHandlers(ResourceHandlerRegistry registry) { + registry.addResourceHandler("/index.html").addResourceLocations("/index.html"); + } +} +package com.mdd.config; + +import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer; + +public class WebConfig extends AbstractAnnotationConfigDispatcherServletInitializer { + protected Class[] getRootConfigClasses() { + return new Class[]{SpringConfig.class}; + } + + protected Class[] getServletConfigClasses() { + return new Class[]{SpringMvcConfig.class}; + } + + protected String[] getServletMappings() { + return new String[]{"/"}; + } +} +package com.mdd.controller; + +import com.mdd.domain.Book; +import com.mdd.service.BookService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +@RestController +@RequestMapping("/books") +public class BookController { + @Autowired + private BookService bookService; + //查所有 + @GetMapping + public R getAll(){ + List bookList=bookService.getAll(); + Integer code=bookList !=null? 2001:2000; + Object data=bookList !=null? bookList:"查询数据失败,可能没有数据!"; + return new R(code, data); + } + //添加 + @PostMapping + public R addBook(@RequestBody Book book){ + Boolean flat= bookService.addBook(book); + Integer code=flat ? 3001:3000; + Object data=flat ? "添加成功":"添加失败!"; + return new R(code, data); + } + //修改 + @PutMapping + public R updateBook(@RequestBody Book book){ + Boolean flat= bookService.updateBook(book); + Integer code=flat? 4001:4000; + Object data=flat ? "修改成功":"修改失败!"; + return new R(code,data); + } + ////根据id查询 + @GetMapping("/{id}") + public R getById(@PathVariable Integer id){ + Book book=bookService.getById(id); + Integer code=book !=null? 2001:2000; + Object data=book !=null? book:"查询数据失败,可能没有数据!"; + return new R(code,data); + } + //根据id删除 + @DeleteMapping("/{id}") + public R delById(@PathVariable Integer id){ + Boolean flat=bookService.delById(id); + Integer code=flat? 5001:5000; + Object data=flat ? "删除成功":"删除失败!"; + return new R(code,data); + } + + + +} +package com.mdd.controller; + +public class Code { + public static final Integer GET_OK =2001; + public static final Integer POST_OK =3001; + public static final Integer PUT_OK =4001; + public static final Integer DELETE_OK =5001; + + + public static final Integer GET_ERR =2000; + public static final Integer POST_ERR =3000; + public static final Integer PUT_ERR =4000; + public static final Integer DELETE_ERR =5000; + + +} +package com.mdd.controller; + +public class R { + private Integer code; + private String msg; + private Object data; + + public R() { + } + + public R(Integer code, String msg, Object data) { + this.code = code; + this.msg = msg; + this.data = data; + } + + public R(Integer code, Object data) { + this.code = code; + this.data = data; + } + + public R(Integer code, String msg) { + this.code = code; + this.msg = msg; + } + + public Integer getCode() { + return code; + } + + public void setCode(Integer code) { + this.code = code; + } + + public String getMsg() { + return msg; + } + + public void setMsg(String msg) { + this.msg = msg; + } + + public Object getData() { + return data; + } + + public void setData(Object data) { + this.data = data; + } +} +package com.mdd.domain; + +public class Book { + private Integer id; + private String bookName; + private String author; + private String publisher; + + public Book() { + } + + public Book(Integer id, String bookName, String author, String publisher) { + this.id = id; + this.bookName = bookName; + this.author = author; + this.publisher = publisher; + } + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public String getBookName() { + return bookName; + } + + public void setBookName(String bookName) { + this.bookName = bookName; + } + + public String getAuthor() { + return author; + } + + public void setAuthor(String author) { + this.author = author; + } + + public String getPublisher() { + return publisher; + } + + public void setPublisher(String publisher) { + this.publisher = publisher; + } + + @Override + public String toString() { + return "Book{" + + "id=" + id + + ", bookName='" + bookName + '\'' + + ", author='" + author + '\'' + + ", publisher='" + publisher + '\'' + + '}'; + } +} +package com.mdd.mapper; + +import com.mdd.domain.Book; +import org.apache.ibatis.annotations.Delete; +import org.apache.ibatis.annotations.Insert; +import org.apache.ibatis.annotations.Select; +import org.apache.ibatis.annotations.Update; + +import java.util.List; + +public interface BookMapper { + @Select("select id, book_name bookName, author, publisher from tb_book order by id desc; ") + List getAll(); + + @Insert("insert into tb_book(book_name, author, publisher) values (#{bookName}, #{author}, #{publisher})") + Integer addBook(Book book); + + @Update("update tb_book set book_name=#{bookName}, author=#{author}, publisher=#{publisher} where id=#{id}") + Integer updateBook(Book book); + + @Select("select id, book_name bookName, author, publisher from tb_book where id=#{id}") + Book getById(Integer id); + + @Delete("delete from tb_book where id=#{id}") + Integer delById(Integer id); +} +package com.mdd.service.impl; + +import com.mdd.domain.Book; +import com.mdd.mapper.BookMapper; +import com.mdd.service.BookService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; +@Service +public class BookServiceImpl implements BookService { + @Autowired + private BookMapper bookMapper; + + public List getAll() { + return bookMapper.getAll(); + } + + public boolean addBook(Book book) { + return bookMapper.addBook(book)>0; + } + + public Boolean updateBook(Book book) { + return bookMapper.updateBook(book)>0; + } + + public Book getById(Integer id) { + return bookMapper.getById(id); + } + + public Boolean delById(Integer id) { + return bookMapper.delById(id)>0; + } +} +package com.mdd.service; + +import com.mdd.domain.Book; + +import java.util.List; + +public interface BookService { + List getAll(); + + boolean addBook(Book book); + + Boolean updateBook(Book book); + + Book getById(Integer id); + + Boolean delById(Integer id); +} +``` +