由于前段时间完成期末项目,在期末学科里也学到很多,但这里不书写接近2个月没有更新博客,
因为之前有过较为成熟的ssh框架运用以及理解的经验,我打算在寒假学习一下ssm,联合springboot,
学习内部采用的springmvc+spring+mybatis的springboot项目
直接省略了ssm本来繁多的xml配置,基本使用注解方式。
完成相同功能的代码更少,但是基本见不到太多的原理性的,仅适合快速开发与学习。
好开始吧。
环境准备:
idea2019-3.1+jdk8
maven3.6(已经配置完成)
目的:
创建一个ssm+springboot的项目。
**
**
1.new Project–>spring Initialzr出现:
2.然后在下面填写项目相关信息:
项目是基于maven的,
Group表示为你的包名:com…**.
web–》 spring–》web
web–》SQL–》mybatis
如图
第一次安装需要等待maven将jar包下载。{注意配maven的本地仓库位置}
**
**
首先是经典的mvc的目录创建方法。
包含:
dao
service
controller
bean(实体类)
其次含有ssm的
java源代码目录
资源目录(resources)
mapper.xml配置文件位置,
springboot配置文件位置,
其他目录
单元测试位置
工具包
pom.xml(maven依赖配置)
基于上述目录有:
实现对user的增删改查。
启动类:
package com.j.ssm;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.transaction.annotation.EnableTransactionManagement;
@SpringBootApplication
@EnableTransactionManagement //开启事务管理
@MapperScan("com.j.ssm.dao")
public class SsmApplication {
public static void main(String[] args) {
SpringApplication.run(SsmApplication.class, args);
}
}
UserBean实体类:
package com.j.ssm.bean;
/**
* user实体类
*
* @author joker
*/
public class UserBean {
public Integer id;
public String name;
public int age;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public UserBean() {
}
}
controller控制层
package com.j.ssm.controller;
import com.j.ssm.bean.UserBean;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
/**
* user控制层--使用springmvc
*
* @author joker
*/
//相当于@Controller+@ResponseBody两个注解的结合
//json交互--仅
@RestController
@RequestMapping("/U")
public class UserControl extends BaseControlImpl<UserBean> {
/**
* 保存user信息
*
* @return
*/
@Override
// ,produces = "application/json;charset=utf-8"
@RequestMapping(value = "/saveU", method = RequestMethod.POST)
public void save() {
super.save();
}
/**
* 删除user信息
*
* @return
*/
@Override
@RequestMapping(value = "/deleteU", method = RequestMethod.POST)
public void delete() {
super.delete();
}
/**
* 更新user信息
*
* @return
*/
@Override
@RequestMapping(value = "/updateU", method = RequestMethod.POST)
public void update() {
super.update();
}
}
service:
package com.j.ssm.serviceimpl;
import com.j.ssm.bean.UserBean;
import org.springframework.stereotype.Service;
/**
* userService层--使用mybatis
* @author joker
*/
@Service
public class UserServiceImpl extends BaseServiceImpl<UserBean>{
@Override
public String saveS() {
super.object=new UserBean();
return super.saveS();
}
@Override
public String deleteS(Integer idInteger) {
return super.deleteS(idInteger);
}
@Override
public String updateS(Integer idInteger) {
super.object=new UserBean();
return super.updateS(idInteger);
}
}
dao层:(基于注解)
否则仅需要借口方法与对于的mapper.xml,在下面有介绍。
package com.j.ssm.dao;
import com.j.ssm.bean.UserBean;
import org.apache.ibatis.annotations.*;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;
import java.util.List;
/**
* userDao层--使用mybatis
*
* @author joker
*/
//@MapperScan //声明是一个Mapper,与springbootApplication中的@MapperScan二选一写上即可
@Repository
public interface UserMapper extends BaseMapperImpl<UserBean> {
@Override
@Insert("INSERT INTO `tb_user` (`NAME`, `AGE`) VALUES (#{name},#{age})")
@ResultType(UserBean.class)
int saveD(UserBean userBean);
@Override
@Delete("DELETE FROM `tb_user` WHERE `ID`=#{id}")
int deleteD(Integer id);
@Override
@Update("UPDATE `tb_user` SET `NAME`=#{name}, `AGE`=#{age} WHERE `ID`=#{id}")
int updateD(UserBean userBean);
}
做测试dao层:
package com.j.ssm.dao;
import com.j.ssm.SsmApplication;
import com.j.ssm.bean.UserBean;
import org.junit.jupiter.api.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
//springboot测试
@RunWith(SpringRunner.class)
@SpringBootTest(classes = SsmApplication.class)
class UserMapperTest{
@Autowired
protected UserMapper userMapper;
/**
* 测试mapper--insert----xml方式----注解方式
*/
@Test
void saveD() {
System.out.println("start-mapper");
UserBean userBean=new UserBean();
userBean.setAge(21);
userBean.setName("test-注解");
int a=userMapper.saveD(userBean);
System.out.println("test-mapper-success---------"+a);
}
}
然后是mapper.xml配置(插入)–可选
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.j.ssm.dao.UserMapper">
<!-- <select id="save" resultType="com.j.ssm.bean.UserBean">-->
<!-- SELECT id,name,age FROM student WHERE id=#{id}-->
<!-- </select>-->
<!-- 程序id-*-*-主键-自增-->
<!-- parameterType="com.j.ssm.bean.UserBean"-->
<!-- parameterType="com.j.ssm.bean.UserBean"-->
<insert id="saveD" statementType="PREPARED"
keyProperty="id" useGeneratedKeys="true">
INSERT INTO `tb_user` (`NAME`, `AGE`) VALUES (#{name},#{age});
</insert>
</mapper>
application.properties(完成对mybatis,内置tomcat配置)
#数据库连接
spring.datasource.url=jdbc:mysql://localhost:3306/ssmsp?serverTimezone=GMT%2B8
spring.datasource.username=root
spring.datasource.password=123456
#这已经过时了。 新的驱动程序类是‘ com.mysql.cj.jdbc.driver'。 驱动程序通过 spi 自动注册,手动加载驱动程序类通常是不必要的。
spring.datasource.driverClassName=com.mysql.jdbc.Driver
spring.jpa.database = mysql
##日志配置
#logging.level.org.springframework=DEBUG
#spring.output.ansi.enabled=DETECT
##logging.path=E:\warehouse
#logging.pattern.console=%d{yyyy/MM/dd-HH:mm:ss} [%thread] %-5level %logger- %msg%n
#logging.pattern.file=%d{yyyy/MM/dd-HH:mm} [%thread] %-5level %logger- %msg%n
#tomcat配置
server.port=8080
#server.context-path=/springboot
#spring.resources.static-locations=classpath:/templates/
#server.servlet-path=/springboot
#mybatis配置
#mybatis.mapper-locations=classpath*:mapper/*.xml #选择注解模式。
mybatis.type-aliases-package=com.j.ssm.bean
web.xml
这是springmvc在某些非controller三层的地方获取request的方法
<listener>
<listener-class>
org.springframework.web.context.request.RequestContextListener
</listener-class>
</listener>
封装的方法
/**
* 获取request
*
* @return HttpServletRequest
*/
public static HttpServletRequest myGetRequest() {
ServletRequestAttributes requestAttributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
return requestAttributes.getRequest();
}
/**
* 获取response
*
* @return HttpServletResponse
*/
public static HttpServletResponse myGetResponse() {
ServletRequestAttributes requestAttributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
return requestAttributes.getResponse();
}
还有泛型类的编写,放到下篇文章写。