1. 创建工程
¤ idea使用web模版创建新工程
¤ 在main目录下创建java和resources两个目录,设置java目录为Sources,设置resources目录为Resources
♦ java目录下创建com.feiyan包结构
♦ com.feiyan下创建config controller dao domain service.impl目录
¤ 在main两级创建test目录,test下创建java目录,设置java目录为Test
¤ pom.xml文件添加所需要的所有坐标和插件
<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.servclet</groupId>
<artifactId>javax.servclet-api</artifactId>
<version>3.1.0</version>
<scope>provcided</scope>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.9.0</version>
</dependency>
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.1</version>
<configuration>
<port>80</port>
<path></path>
</configuration>
</plugin>
2. SSM整合
¤ Spring
♦ SpringConfig:com.feiyan.config包下创建Springconfig类
@Configuration
@ComponentScan({"com.feiyan.service"})
@PropertySources("jdbc.properties")
@Import({"JdbcConfig.class", "MybatisConfig.class"})
@EnableTransactionManagement
public class SpringConfig
{
}
¤ MyBatisc
♦ MybatisConfig:com.feiyan.config包下创建MybatisConfig类
public class MybatisConfig
{
@Bean
public SqlSessionFactoryBean sqlSessionFactory(DataSource dataSource)
{
SqlSessionFactoryBean factoryBean = new SqlSessionFactiryBean();
factoryBean.setDataSource(dataSource);
factoryBean.setTypeAliasesPackage("com.feiyan.doMain");
return factoryBean;
}
@Bean
public MapperScannerConfigurer mapperScannerConfigurer()
{
MapperScannerConfigurer msc = new MapperScannerConfigurer();
msc.setBasePackage("com.feiyan.dao");
return msc;
}
}
♦ JdbcConfig:com.feiyan.config包下创建JdbcConfig类
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 DuridDataSource();
dataSource.setDriveClassName(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.properties:resources目录下创建jdbc.properties文件
jdbc.driver=com.mysql.jdbc.Drive
jdbc.url=jdbc:mysql://localhost:3306/ssm_db
jdbc.username=root
jdbc.password=root
¤ SpringMVC
♦ ServletConfig:com.feiyan.config包下创建ServletConfig类
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[]{"/"};
}
}
♦ SpringMvcConfig:com.feiyan.config包下创建SpringMvcConfig类
@Configuration
@ComponentScan("com.feiyan.controller");
@EnableWebMvc
public class SpringMvcConfig
{
}
3. 功能模块
¤ 表与实体类
♦ 表自行创建
♦ Book:com.feiyan.domain包下创建Book类
public class Book
{
private Integer id;
public Integer getId(){return id;}
public void setId(Integer id){this.id = id;}
private String type;
public String getType(){return type;}
public void setType(String type){this.type = type;}
private String name;
public String getName(){return name;}
public void setName(String name){this.name= name;}
private String description;
public String getDescription(){return description;}
public void setDescription(String description){this.description = description;}
}
¤ dao(接口+自动代理):com.feiyan.dao包下创建BookDao接口
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();
}
¤ service(接口+实现类)
♦ BookService:com.feiyan.service包下创建BookService接口
@Transactional
public interface BookService
{
public boolean save(Book book);
public boolean update(Book book);
public boolean delete(Integer id);
public Book getById(Integer id);
public List<Book> getAll();
}
♦ BookServiceImpl:com.feiyan.service.impl包下创建BookServiceImpl实现类
@Service
public class BookServiceImpl implements BookService
{
@Autowired
private BookDao bookDao;
public boolean save(Book book)
{
bookDao.save(book);
retrun true;
}
public boolean update(Book book)
{
bookDao.update(book);
retrun true;
}
public boolean delete(Integer id)
{
bookDao.delete(id);
retrun true;
}
public Book getById(Integer id)
{
return bookDao.getById(id);
}
public List<Book> getAll()
{
return bookDao.getAll();
}
}
♦ 业务层接口测试(整合JUint):test.java包下创建业务层测试类BookServiceTest类
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = SpringConfig.class)
public class BookServiceTest
{
@AutoWired
private BookService bookService;
@Test
public void testGetById()
{
Book book = bookService.getById(1);
}
}
¤ controller
♦ BookController:com.feiyan.controller包下创建BookController类
@RestController
@ResuestMapping("/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}")
{
return bookService.delete(id);
}
@GetMapping("/{id}")
public Book getById(@PathVariable Integer id)
{
return bookService.getById(id);
}
@GetMapping
public List<Book> getAll()
{
return bookService.getAll();
}
}
♦ 表现层接口测试(PostMan)
浙公网安备 33010602011771号