目录
- <?xml version="1.0" encoding="UTF-8"?>
-
- <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0</modelVersion>
-
- <groupId>com.itheima</groupId>
- <artifactId>springmvc_08_ssm</artifactId>
- <version>1.0-SNAPSHOT</version>
- <packaging>war</packaging>
-
- <dependencies>
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-webmvc</artifactId>
- <version>5.2.10.RELEASE</version>
- </dependency>
-
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-jdbc</artifactId>
- <version>5.2.10.RELEASE</version>
- </dependency>
-
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-test</artifactId>
- <version>5.2.10.RELEASE</version>
- </dependency>
-
- <dependency>
- <groupId>org.mybatis</groupId>
- <artifactId>mybatis</artifactId>
- <version>3.5.6</version>
- </dependency>
-
- <dependency>
- <groupId>org.mybatis</groupId>
- <artifactId>mybatis-spring</artifactId>
- <version>1.3.0</version>
- </dependency>
-
- <dependency>
- <groupId>mysql</groupId>
- <artifactId>mysql-connector-java</artifactId>
- <version>5.1.47</version>
- </dependency>
-
- <dependency>
- <groupId>com.alibaba</groupId>
- <artifactId>druid</artifactId>
- <version>1.1.16</version>
- </dependency>
-
- <dependency>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
- <version>4.12</version>
- <scope>test</scope>
- </dependency>
-
- <dependency>
- <groupId>javax.servlet</groupId>
- <artifactId>javax.servlet-api</artifactId>
- <version>3.1.0</version>
- <scope>provided</scope>
- </dependency>
-
- <dependency>
- <groupId>com.fasterxml.jackson.core</groupId>
- <artifactId>jackson-databind</artifactId>
- <version>2.9.0</version>
- </dependency>
- </dependencies>
-
- <build>
- <plugins>
- <plugin>
- <groupId>org.apache.tomcat.maven</groupId>
- <artifactId>tomcat7-maven-plugin</artifactId>
- <version>2.1</version>
- <configuration>
- <port>80</port>
- <path>/</path>
- </configuration>
- </plugin>
- </plugins>
- </build>
- </project>
- import org.springframework.context.annotation.ComponentScan;
- import org.springframework.context.annotation.Configuration;
- import org.springframework.context.annotation.Import;
- import org.springframework.context.annotation.PropertySource;
- import org.springframework.transaction.annotation.EnableTransactionManagement;
-
- @Configuration
- @ComponentScan({"com.itheima.service"})
- @PropertySource("classpath:jdbc.properties")
- @Import({JdbcConfig.class,MyBatisConfig.class})
- @EnableTransactionManagement
- public class SpringConfig {
- }
- import org.mybatis.spring.SqlSessionFactoryBean;
- import org.mybatis.spring.mapper.MapperScannerConfigurer;
- import org.springframework.context.annotation.Bean;
-
- import javax.sql.DataSource;
-
- public class MyBatisConfig {
-
- @Bean
- public SqlSessionFactoryBean sqlSessionFactory(DataSource dataSource){
- SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean();
- factoryBean.setDataSource(dataSource);
- factoryBean.setTypeAliasesPackage("com.itheima.domain");
- return factoryBean;
- }
-
- @Bean
- public MapperScannerConfigurer mapperScannerConfigurer(){
- MapperScannerConfigurer msc = new MapperScannerConfigurer();
- msc.setBasePackage("com.itheima.dao");
- return msc;
- }
- }
- import com.alibaba.druid.pool.DruidDataSource;
- import org.springframework.beans.factory.annotation.Value;
- import org.springframework.context.annotation.Bean;
- import org.springframework.jdbc.datasource.DataSourceTransactionManager;
- import org.springframework.transaction.PlatformTransactionManager;
-
- import javax.sql.DataSource;
-
- public class JdbcConfig {
- @Value("${jdbc.driver}")
- private String driver;
- @Value("${jdbc.url}")
- private String url;
- @Value("${jdbc.username}")
- private String username;
- @Value("${jdbc.password}")
- private String password;
-
- @Bean
- public DataSource dataSource(){
- DruidDataSource dataSource = new DruidDataSource();
- dataSource.setDriverClassName(driver);
- dataSource.setUrl(url);
- dataSource.setUsername(username);
- dataSource.setPassword(password);
- return dataSource;
- }
-
- @Bean
- public PlatformTransactionManager transactionManager(DataSource dataSource){
- DataSourceTransactionManager ds = new DataSourceTransactionManager();
- ds.setDataSource(dataSource);
- return ds;
- }
- }
- jdbc.driver=com.mysql.jdbc.Driver
- jdbc.url=jdbc:mysql://localhost:3306/ssm_db
- jdbc.username=root
- jdbc.password=root
- import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;
-
- public class ServletConfig extends AbstractAnnotationConfigDispatcherServletInitializer {
- protected Class<?>[] getRootConfigClasses() {
- return new Class[]{SpringConfig.class};
- }
-
- protected Class<?>[] getServletConfigClasses() {
- return new Class[]{SpringMvcConfig.class};
- }
-
- protected String[] getServletMappings() {
- return new String[]{"/"};
- }
- }
- import org.springframework.context.annotation.ComponentScan;
- import org.springframework.context.annotation.Configuration;
- import org.springframework.web.servlet.config.annotation.EnableWebMvc;
-
- @Configuration
- @ComponentScan("com.itheima.controller")
- @EnableWebMvc
- public class SpringMvcConfig {
- }
- public class Book {
- private Integer id;
- private String type;
- private String name;
- private String description;
-
- @Override
- public String toString() {
- return "Book{" +
- "id=" + id +
- ", type='" + type + '\'' +
- ", name='" + name + '\'' +
- ", description='" + description + '\'' +
- '}';
- }
-
- public Integer getId() {
- return id;
- }
-
- public void setId(Integer id) {
- this.id = id;
- }
-
- public String getType() {
- return type;
- }
-
- public void setType(String type) {
- this.type = type;
- }
-
- public String getName() {
- return name;
- }
-
- public void setName(String name) {
- this.name = name;
- }
-
- public String getDescription() {
- return description;
- }
-
- public void setDescription(String description) {
- this.description = description;
- }
- }
- import com.itheima.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 BookDao {
-
- // 两种方法
- // @Insert("insert into tbl_book values(null,#{type},#{name},#{description})")
- @Insert("insert into tbl_book (type,name,description) values(#{type},#{name},#{description})")
- public void save(Book book);
-
- @Update("update tbl_book set type = #{type}, name = #{name}, description = #{description} where id = #{id}")
- public void update(Book book);
-
- @Delete("delete from tbl_book where id = #{id}")
- public void delete(Integer id);
-
- @Select("select * from tbl_book where id = #{id}")
- public Book getById(Integer id);
-
- @Select("select * from tbl_book")
- public List<Book> getAll();
- }
- import com.itheima.domain.Book;
- import org.springframework.transaction.annotation.Transactional;
-
- import java.util.List;
-
- @Transactional
- public interface BookService {
-
- /**
- * 保存
- * @param book
- * @return
- */
- public boolean save(Book book);
-
- /**
- * 修改
- * @param book
- * @return
- */
- public boolean update(Book book);
-
- /**
- * 按id删除
- * @param id
- * @return
- */
- public boolean delete(Integer id);
-
- /**
- * 按id查询
- * @param id
- * @return
- */
- public Book getById(Integer id);
-
- /**
- * 查询全部
- * @return
- */
- public List<Book> getAll();
- }
- import com.itheima.dao.BookDao;
- import com.itheima.domain.Book;
- import com.itheima.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 BookDao bookDao;
-
- public boolean save(Book book) {
- bookDao.save(book);
- return true;
- }
-
- public boolean update(Book book) {
- bookDao.update(book);
- return true;
- }
-
- public boolean delete(Integer id) {
- bookDao.delete(id);
- return true;
- }
-
- public Book getById(Integer id) {
- return bookDao.getById(id);
- }
-
- public List<Book> getAll() {
- return bookDao.getAll();
- }
- }
- import com.itheima.domain.Book;
- import com.itheima.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;
-
- @PostMapping
- public boolean save(@RequestBody Book book) {
- return bookService.save(book);
- }
-
- @PutMapping
- public boolean update(@RequestBody Book book) {
- return bookService.update(book);
- }
-
- @DeleteMapping("/{id}")
- public boolean delete(@PathVariable Integer id) {
- return bookService.delete(id);
- }
-
- @GetMapping("/{id}")
- public Book getById(@PathVariable Integer id) {
- return bookService.getById(id);
- }
-
- @GetMapping
- public List<Book> getAll() {
- return bookService.getAll();
- }
- }
- import com.itheima.config.SpringConfig;
- import com.itheima.domain.Book;
- import org.junit.Test;
- import org.junit.runner.RunWith;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.test.context.ContextConfiguration;
- import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
-
- import java.util.List;
-
- @RunWith(SpringJUnit4ClassRunner.class)
- @ContextConfiguration(classes = SpringConfig.class)
- public class BookServiceTest {
-
- @Autowired
- private BookService bookService;
-
- @Test
- public void testGetById(){
- Book book = bookService.getById(1);
- System.out.println(book);
- }
-
- @Test
- public void testGetAll(){
- List<Book> all = bookService.getAll();
- System.out.println(all);
- }
- }
测试结果
PostMan及MySQL变化
PostMan及MySQL变化
PostMan及MySQL变化
PostMan变化