1. 注意:
- 首先因为需要添加的数据有文字,也有图片,所以封装前端传来的参数只能用HttpServletRequest
- 因为有图片上传,所以需要导包
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.3.3</version>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.10.0</version>
</dependency>
- 需要的类
2. controller
@Controller
@RequestMapping("/ads")
public class AdController {
@Resource
private IAdService adService;
@RequestMapping("/addAd.action")
@ResponseBody
public R addAd(HttpServletRequest request) throws Exception{
adService.addAd(request);
return R.ok();
}
}
3. service
@Service
@Slf4j
public class AdServiceImpl implements IAdService {
@Resource
private IAdDAO adDAO;
@Resource
private IAdTypeDAO adTypeDAO;
public void setAdTypeDAO(IAdTypeDAO adTypeDAO) {
this.adTypeDAO = adTypeDAO;
}
public void setAdDAO(IAdDAO adDAO) {
this.adDAO = adDAO;
}
@Override
public void addAd(HttpServletRequest request) throws Exception{
Ad ad = getAd(request);
adDAO.addAd(request);
}
private Ad getAd(HttpServletRequest request) throws Exception {
DiskFileItemFactory diskFileItemFactory = new DiskFileItemFactory();
diskFileItemFactory.setSizeThreshold(8192);
ServletFileUpload fileUpload = new ServletFileUpload(diskFileItemFactory);
List<FileItem> fileItems = fileUpload.parseRequest(request);
String adDetails = "";
String adDescribe = "";
int adType = 0;
String adPhoto = "";
Integer adId = 0;
String adImages = "";
for (FileItem fileItem : fileItems){
if (fileItem.isFormField()){
if (fileItem.getFieldName().equals("adDetails")){
adDetails = fileItem.getString("UTF-8");
}else if (fileItem.getFieldName().equals("adDescribe")){
adDescribe = fileItem.getString("UTF-8");
}else if (fileItem.getFieldName().equals(adType)){
adType=Integer.parseInt(fileItem.getString("UTF-8"));
}else if(fileItem.getFieldName().equals("adId")){
adId=Integer.parseInt(fileItem.getString("UTF-8"));
} else if(fileItem.getFieldName().equals("adImages")){
adImages=fileItem.getString("UTF-8");
}
}else {
if (fileItem.getFieldName().equals("file")){
InputStream fileItemInputStream = fileItem.getInputStream();
String fileName = FileNameUtils.getFileName();
adImages = uploadFileToOSS(fileItemInputStream,fileName);
}
}
}
Ad ad = new Ad();
ad.setAdType(adType);
ad.setAdDescribe(adDescribe);
ad.setAdDetails(adDetails);
ad.setAdId(adId);
AdType adTypeSelect = adTypeDAO.findAdTypeById(adType);
ad.setAdTypeName(adTypeSelect.getAdTypeName());
ad.setAdImages(adImages);
return ad;
}
private String uploadFileToOSS(InputStream fileItemInputStream, String fileName) {
return "https://img2.baidu.com/it/u=1395980100,2999837177&fm=253&fmt=auto&app=120&f=JPEG?w=1200&h=675";
}
}
4. dao
4.1 广告类型的
@Component
public class AdTypeDAO implements IAdTypeDAO {
@Resource
private JdbcUtils jdbcUtils;
public void setJdbcUtils(JdbcUtils jdbcUtils) {
this.jdbcUtils = jdbcUtils;
}
@Override
public AdType findAdTypeById(Integer adTypeId) throws Exception {
return jdbcUtils.queryRunner().query(ConnectionThreadLocal.getThreadLocal().get(),
"select * from t_adtype where adTypeId=?",
new BeanHandler<AdType>(AdType.class),
adTypeId);
}
}
4.2 添加广告的
@Override
public void insert(Ad ad) throws Exception {
jdbcUtils.queryRunner().update(
ConnectionThreadLocal.getThreadLocal().get(),
"insert into t_ad(adImages,adType,adDescribe,adDetails,adTypeName) values(?,?,?,?,?)",
ad.getAdImages(),ad.getAdType(),ad.getAdDescribe(),ad.getAdDetails(),ad.getAdTypeName()
);
}