微信小程序——个人相册(后端)
微信小程序——个人相册(后端)1. 项目创建新建Maven项目,其中Archettype选择“webapp”,以下是项目结构添加项目所需依赖,在pom.xml添加以下内容:<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:sch
微信小程序——个人相册(后端)
1. 项目创建
-
新建Maven项目,其中
Archettype选择“webapp”,以下是项目结构
-
添加项目所需依赖,在pom.xml添加以下内容:
<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/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.hniu</groupId>
<artifactId>myhome</artifactId>
<packaging>war</packaging>
<version>1.0-SNAPSHOT</version>
<name>myhome Maven Webapp</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<java.version>1.8</java.version>
<spring.version>5.3.16</spring.version>
<mysql.version>8.0.28</mysql.version>
<mybatis.version>3.5.2</mybatis.version>
<mybatis.spring.version>2.1.1</mybatis.spring.version>
<servlet.version>3.1.0</servlet.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>${mybatis.version}</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>${mybatis.spring.version}</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysql.version}</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.14</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<!--jackson依赖-->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.11.0</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.11.0</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>2.11.0</version>
</dependency>
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.4</version>
</dependency>
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>5.3.2</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<!--以下是插件版tomcat7-->
<!-- <groupId>org.apache.tomcat.maven</groupId>-->
<!-- <artifactId>tomcat7-maven-plugin</artifactId>-->
<!-- <version>2.2</version>-->
<!-- <configuration>-->
<!-- <charset>utf-8</charset>-->
<!-- <port>8089</port>-->
<!-- <path>/myhome</path>-->
<!-- </configuration>-->
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>3.3.1</version>
<!--要在下面添加以下配置-->
<configuration>
<failOnMissingWebXml>false</failOnMissingWebXml>
</configuration>
</plugin>
</plugins>
</build>
</project>
-
建议使用tomcat8~9版本,版本太高或低容易报错,以下配置
tomcat
①:选择正确路径的Tomcat
②:选择对应项目JDK的JRE版本
③:选择没有被其他程序占用的端口,默认是8080


-
配置application.properties,以下代码:
附:
获取小程序的appid和appsecret
进入到小程序的管理控制台(公众平台),选择“开发”——“开发管理”,切换到“开发设置”
db.driver=com.mysql.cj.jdbc.Driver
db.url=jdbc:mysql://localhost:3306/myphoto
db.username=root
#修改为你的MySQL密码
db.password=123456
#添加小程序的appid和appsecret
wx.appid=
wx.secret=
#file.savePath修改为本机实际保存路径
file.savePath=D:\\myhome\\photo\\
#file.accessUrl:访问路径
file.accessUrl=/photo/
2. 项目代码
-
创建package com.hniu.myphone.comm.config,config包下创建以下配置类:
GlobalConfiguration和Properties
package com.hniu.myphone.comm.config;
import com.github.pagehelper.PageInterceptor;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.SqlSessionTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.Resource;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import org.springframework.http.converter.HttpMessageConverter;
import org.springframework.http.converter.StringHttpMessageConverter;
import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
import org.springframework.jdbc.datasource.DriverManagerDataSource;
import org.springframework.web.multipart.commons.CommonsMultipartResolver;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport;
import javax.sql.DataSource;
import java.io.IOException;
import java.util.List;
import java.util.Objects;
/**
* 全局配置文件
*/
@Configuration
public class GlobalConfiguration extends WebMvcConfigurationSupport {
@Autowired
private Properties props; //全局配置参数
/**
* 注册数据源
* @return
*/
@Bean
public DataSource dataSource(){
DriverManagerDataSource ds = new DriverManagerDataSource();
ds.setDriverClassName(props.getDbDrivce());
ds.setUrl(props.getDbUrl());
ds.setUsername(props.getDbUsername());
ds.setPassword(props.getDbPasswrod());
return ds;
}
/**
* 注册mybatis会话工厂
* @return
* @throws IOException
*/
@Bean
public SqlSessionFactoryBean sessionFactory() throws IOException {
SqlSessionFactoryBean sessionBean = new SqlSessionFactoryBean();
sessionBean.setDataSource(dataSource()); //数据源
sessionBean.setTypeAliasesPackage("com.hniu.myphone.mapper"); //实体别名
PathMatchingResourcePatternResolver sourceResolver = new PathMatchingResourcePatternResolver();
//Mapper.xml
Resource[] rs = sourceResolver.getResources("classpath:mapper/*Mapper.xml");
sessionBean.setMapperLocations(rs);
PageInterceptor interceptor =new PageInterceptor();
sessionBean.setPlugins(interceptor);
return sessionBean;
}
/**
* 注册mybatis操作模板
* @return
* @throws Exception
*/
@Bean
public SqlSessionTemplate sessionTemplate() throws Exception {
SqlSessionTemplate template = new SqlSessionTemplate(Objects.requireNonNull(sessionFactory().getObject()));
return template;
}
/**
* 注册消息转换器,把返回的对象转换成JSON
* @param converters
*/
protected void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
// put the jackson converter to the front of the list so that application/json content-type strings will be treated as JSON
converters.add(new MappingJackson2HttpMessageConverter());
// and probably needs a string converter too for text/plain content-type strings to be properly handled
converters.add(new StringHttpMessageConverter());
}
@Override
protected void addResourceHandlers(ResourceHandlerRegistry registry){
registry.addResourceHandler(props.getAccessUrl()+"**").addResourceLocations("file:"+props.getSavePath());
}
@Bean
public CommonsMultipartResolver multipartResolver(){
CommonsMultipartResolver resolver=new CommonsMultipartResolver();
return resolver;
}
}
package com.hniu.myphone.comm.config;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.PropertySource;
import org.springframework.stereotype.Component;
@Component
@PropertySource("classpath:application.properties")
public class Properties {
@Value("${db.driver}")
private String dbDrivce;
@Value("${db.url}")
private String dbUrl;
@Value("${db.username}")
private String dbUsername;
@Value("${db.password}")
private String dbPasswrod;
@Value("${wx.appid}")
private String appid;
@Value("${wx.secret}")
private String secret;
@Value("${file.savePath}")
private String savePath;
@Value("${file.accessUrl}")
private String accessUrl;
// 此处忽略了getter和setter
}
-
在package com.hniu.myphone下创建mapper包,mapper包下创建实体类:
Account、Cover、Photo
package com.hniu.myphone.mapper;
public class Account {
private String accId;
private String openid;
private String nickName;
private String avatarUrl;
// 此处忽略了getter和setter
}
package com.hniu.myphone.mapper;
public class Cover {
private String coverId;
private String accId;
private String accessUrl;
private String photoId;
// 此处忽略了getter和setter
}
package com.hniu.myphone.mapper;
import java.util.Date;
public class Photo {
private String photoId;
private Long photoSize;
private Date uploadTimestamp;
private String photoSavePath;
private String photoAccessUrl;
private Account account;
// 此处忽略了getter和setter
}
-
在package com.hniu.myphone.comm下创建WXUtils,WXUtils包下创建以下微信工具类:
package com.hniu.myphone.comm.WXUtils;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.hniu.myphone.comm.config.Properties;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.util.EntityUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.io.IOException;
import java.util.Map;
@Component
public class WXUtils {
private static final String WX_LOGIN_SERVICE = "https://api.weixin.qq.com/sns/jscode2session";
@Autowired
private Properties props;
public String getOpenId(String code) throws IOException {
String url = String.format(WX_LOGIN_SERVICE + "?appid=%s&secret=%s&js_code=%s&grant_type=authorization_code", props.getAppid(), props.getSecret(), code);
HttpClient client = HttpClientBuilder.create().build();
HttpGet get=new HttpGet(url);
HttpResponse res=client.execute(get);
String result= EntityUtils.toString(res.getEntity());
ObjectMapper om=new ObjectMapper();
Map<String,Object> map=om.readValue(result,Map.class);
String openId= (String)map.get("openid");
return openId;
}
}
-
在package com.hniu.myphone下创建controller包,controller包下创建控制器类:
AccountController、CoverController、PhotoController
package com.hniu.myphone.controller;
import com.hniu.myphone.comm.WXUtils.WXUtils;
import com.hniu.myphone.comm.config.Properties;
import com.hniu.myphone.mapper.Account;
import com.hniu.myphone.service.AccountService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import java.io.File;
import java.io.IOException;
import java.util.UUID;
@RestController
@RequestMapping("/account")
public class AccountController {
@Autowired
private AccountService accountService;
@Autowired
private WXUtils wxUtils;
@Autowired
private Properties pros;
@GetMapping("/getUserInfo")
public Account getUserInfo(String code){
try{
String openId=wxUtils.getOpenId(code);
Account account=accountService.selectByOpenId(openId);
return account;
} catch (IOException e) {
throw new RuntimeException(e);
}
// return null;
}
@PostMapping("/save")
public String save(Account account, String code){
try{
String openId=wxUtils.getOpenId(code);
account.setOpenid(openId);
accountService.saveAccount(account);
} catch (IOException e) {
throw new RuntimeException(e);
}
return account.getAccId();
}
@PostMapping("/modifyNickName")
public String modifyNickName(Account account){
accountService.uploadAccount(account);
return "1";
}
@PostMapping("/uploadAvatar")
public String uploadAvatar(@RequestPart MultipartFile avatar,Account account){
String uploadRoot=pros.getSavePath()+account.getAccId()+ File.separator;
File root=new File(uploadRoot);
if (!root.exists()){
root.mkdirs();
}
String oldFileName=avatar.getOriginalFilename();
String suffx=oldFileName.substring(oldFileName.lastIndexOf("."));
String newFileName= UUID.randomUUID().toString()+suffx;
try{
avatar.transferTo(new File(uploadRoot+newFileName));
String accessUrl=pros.getAccessUrl()+account.getAccId()+"/"+newFileName;
account.setAvatarUrl(accessUrl);
accountService.uploadAccount(account);
return accessUrl;
} catch (IOException e) {
throw new RuntimeException(e);
}
}
}
package com.hniu.myphone.controller;
import com.hniu.myphone.mapper.Cover;
import com.hniu.myphone.service.CoverService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
import java.util.UUID;
@RestController
@RequestMapping("/cover")
public class CoverController {
@Autowired
private CoverService coverService;
@GetMapping("/list")
public List<Cover> list(String accId){
return coverService.list(accId);
}
@GetMapping("/getOne")
public Cover selectOne(String accId,String photoId){
return coverService.selectOne(accId, photoId);
}
@GetMapping("/delete")
public void delete(String coverId){
coverService.delete(coverId);
}
@PostMapping("/save")
public String save(Cover cover){
String coverId = UUID.randomUUID().toString().replaceAll("-","");
cover.setCoverId(coverId);
return coverService.save(cover);
}
}
import com.hniu.myphone.comm.config.Properties;
import com.hniu.myphone.mapper.Account;
import com.hniu.myphone.mapper.Photo;
import com.hniu.myphone.service.PhotoService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import java.io.File;
import java.io.IOException;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
import java.util.UUID;
@RestController
@RequestMapping("/photo")
public class PhotoController {
@Autowired
private final PhotoService photoService;
@Autowired
private Properties pros;
public PhotoController(PhotoService photoService) {
this.photoService = photoService;
}
@PostMapping("/upload")
public String uploadPhoto(@RequestPart MultipartFile file,String accId) {
Photo photo = new Photo();
Account account = new Account();
account.setAccId(accId);
photo.setAccount(account);
long size = file.getSize();
String oldFileName = file.getOriginalFilename();
String suffx = oldFileName.substring(oldFileName.lastIndexOf("."));
String newFileName = UUID.randomUUID().toString()+suffx;
photo.setPhotoSize(size);
try {
String uploadRoot = pros.getSavePath()+"\\"+accId+ File.separator;
File root = new File(uploadRoot);
if(!root.exists()){
root.mkdirs();
}
photo.setPhotoSavePath(uploadRoot);
file.transferTo(new File(uploadRoot+newFileName));
String accessUrl = pros.getAccessUrl()+accId+"/"+newFileName;
photo.setPhotoAccessUrl(accessUrl);
photoService.savePhoto(photo);
} catch (IOException e) {
e.printStackTrace();
return "";
}
return "1";
}
@GetMapping("/list")
public List<Photo> list(String accId,Integer pageNum){
if (pageNum==null){
pageNum=1;
}
return photoService.selectList(accId,pageNum,5);
}
@GetMapping("/delete")
public void deletePhoto(String[] photoIds){
System.out.println(Arrays.toString(photoIds));
photoService.deletePhoto(photoIds);
}
}
-
在package com.hniu.myphone下创建dao包,dao包下创建接口:
AccountMapper、CoverMapper、PhotoMapper
package com.hniu.myphone.dao;
import com.hniu.myphone.mapper.Account;
import java.util.List;
import java.util.Map;
/**
*
*/
public interface AccountMapper {
public List<Map<String,Object>> selectAll();
// public Map<String,Object> selectByOpenId(String openId);
public Account selectByOpenId(String openId);
void saveAccount(Account account);
void uploadAccount(Account account);
}
package com.hniu.myphone.dao;
import com.hniu.myphone.mapper.Cover;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
import java.util.List;
@Repository
public interface CoverMapper {
public List<Cover> selectCover(String accId);
public void deleteByCoverId(String coverId);
public Cover selectAccIdAndPhotoId(@Param("accId") String accId, @Param("photoId") String photoId);
public int insertCover(Cover cover);
}
package com.hniu.myphone.dao;
import com.hniu.myphone.mapper.Account;
import com.hniu.myphone.mapper.Photo;
import java.util.List;
public interface PhotoMapper {
public void savePhoto(Photo photo);
public void deleteByPhotoIds(String[] photoIds);
List<Photo> selectList(String accId,int startNum,int endNum);
}
-
在package com.hniu.myphone下创建service包,service包下创建服务类:
AccountService、CoverService、PhotoService
package com.hniu.myphone.service;
import com.hniu.myphone.dao.AccountMapper;
import com.hniu.myphone.mapper.Account;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.stereotype.Service;
import java.util.UUID;
@Controller
@Service
public class AccountService {
@Autowired
private AccountMapper accountMapper;
// public List<Map<String,Object>> selectAll(){
// return accountMapper.selectAll();
// }
// public Map<String,Object> selectByOpenId(String openId){
// return accountMapper.selectByOpenId(openId);
// }
public Account selectByOpenId(String openId){
return accountMapper.selectByOpenId(openId);
}
public void saveAccount(Account account){
String accId= UUID.randomUUID().toString().replaceAll("-","");
account.setAccId(accId);
accountMapper.saveAccount(account);
}
public void uploadAccount(Account account){
accountMapper.uploadAccount(account);
}
}
package com.hniu.myphone.service;
import com.hniu.myphone.dao.CoverMapper;
import com.hniu.myphone.mapper.Cover;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class CoverService {
@Autowired
private CoverMapper coverMapper;
public List<Cover> list(String accId){
return coverMapper.selectCover(accId);
}
public Cover selectOne(String accId,String photoId){
Cover cover = coverMapper.selectAccIdAndPhotoId(accId, photoId);
if (cover == null){
return null;
}else {
return cover;
}
}
public void delete(String coverId){
coverMapper.deleteByCoverId(coverId);
}
public String save(Cover cover){
int i = coverMapper.insertCover(cover);
if (i>0){
return "1";
}else {
return null;
}
}
}
package com.hniu.myphone.service;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.hniu.myphone.dao.PhotoMapper;
import com.hniu.myphone.mapper.Photo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.sql.Timestamp;
import java.util.Date;
import java.util.List;
import java.util.UUID;
@Service
public class PhotoService {
@Autowired
private PhotoMapper photoMapper;
public void savePhoto(Photo photo){
// //使用UUID生成主键,并赋值给photoID
// String photoID= UUID.randomUUID().toString();
// photo.setPhotoId(photoID);
// //获取当前时间,赋值给uploadTimestamp
// Timestamp uploadTimestamp=new Timestamp(System.currentTimeMillis());
// photo.setUploadTimestamp(uploadTimestamp);
// //调用PhotoMapper接口中的方法实现照片信息的保存
// photoMapper.savePhoto(photo);
String uuid = UUID.randomUUID().toString().replaceAll("-","");
Date date = new Date();
photo.setPhotoId(uuid);
photo.setUploadTimestamp(date);
photoMapper.savePhoto(photo);
}
public List<Photo> selectList(String accId,int pageNum,int pageSize){
return photoMapper.selectList(accId,(pageNum-1)*pageSize,pageNum*pageSize);
}
public void deletePhoto(String[] photoIds){
photoMapper.deleteByPhotoIds(photoIds);
}
}
-
在package com.hniu.myphone下创建
Application类
package com.hniu.myphone;
import org.mybatis.spring.annotation.MapperScan;
import org.mybatis.spring.annotation.MapperScans;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.web.WebApplicationInitializer;
import org.springframework.web.context.support.AnnotationConfigWebApplicationContext;
import org.springframework.web.filter.CharacterEncodingFilter;
import org.springframework.web.servlet.DispatcherServlet;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import javax.servlet.DispatcherType;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import java.util.EnumSet;
@EnableWebMvc
@ComponentScan
@MapperScans(@MapperScan("com.hniu.myphone.dao"))
public class Application implements WebApplicationInitializer {
// filter.setEncoding("utf-8");
public void onStartup(ServletContext servletContext) throws ServletException {
AnnotationConfigWebApplicationContext context = new AnnotationConfigWebApplicationContext();
DispatcherServlet servlet = new DispatcherServlet();
servlet.setApplicationContext(context);
servletContext.addServlet("ds",servlet).addMapping("/");
context.setServletContext(servletContext);
context.register(Application.class);
context.refresh();
context.start();
CharacterEncodingFilter filter=new CharacterEncodingFilter();
filter.setEncoding("UTF-8");
servletContext.addFilter("cef",filter).addMappingForUrlPatterns(EnumSet.of(DispatcherType.REQUEST),true,"/*");
}
}
-
在
resources下创建mapper目录,在mapper目录下新建以下xml文件:AccountMapper.xml、CoverMapper.xml、PhotoMapper.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.6//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.hniu.myphone.dao.AccountMapper">
<resultMap id="accountMap" type="Account">
<id column="acc_id" property="accId"></id>
<result column="openid" property="openid"></result>
<result column="nickName" property="nickName"></result>
<result column="avatarUrl" property="avatarUrl"></result>
</resultMap>
<select id="selectByOpenId" parameterType="string" resultMap="accountMap">
SELECT * FROM t_account WHERE openid = #{openid};
</select>
<insert id="saveAccount" parameterType="Account">
INSERT INTO t_account (acc_id, openid, nickName, avatarUrl) VALUES (#{accId},#{openid}, #{nickName}, #{avatarUrl})
</insert>
<update id="uploadAccount" parameterType="Account">
update t_account
<set>
<if test="nickName != null and nickName.trim() != ''">
nickname=#{nickName}
</if>
<if test="avatarUrl != null and avatarUrl.trim() != ''">
avatarUrl = #{avatarUrl}
</if>
</set>
where acc_id=#{accId};
</update>
</mapper>
<?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.hniu.myphone.dao.CoverMapper">
<resultMap id="result" type="com.hniu.myphone.mapper.Cover">
<id column="cover_id" property="coverId"/>
<result column="acc_id" property="accId"/>
<result column="photo_accessUrl" property="accessUrl"/>
<result column="photo_id" property="photoId"/>
</resultMap>
<insert id="insertCover">
insert into t_cover(cover_id, acc_id, photo_accessUrl, photo_id) values (#{coverId},#{accId},#{accessUrl},#{photoId})
</insert>
<delete id="deleteByCoverId">
delete from t_cover where cover_id = #{coverId}
</delete>
<select id="selectCover" resultMap="result">
select * from t_cover where acc_id = #{accId}
</select>
<select id="selectAccIdAndPhotoId" resultMap="result">
select * from t_cover where acc_id = #{accId} and photo_id = #{photoId}
</select>
</mapper>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.6//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.hniu.myphone.dao.PhotoMapper">
<resultMap id="result" type="com.hniu.myphone.mapper.Photo">
<id property="photoId" column="photo_id"/>
<result property="photoSize" column="photo_size"/>
<result property="uploadTimestamp" column="upload_timestamp"/>
<result property="photoSavePath" column="photo_savePath"/>
<result property="photoAccessUrl" column="photo_accesUrl"/>
<association property="account">
<id property="accId" column="acc_id"/>
<!-- Add other account properties here -->
</association>
</resultMap>
<insert id="savePhoto" parameterType="com.hniu.myphone.mapper.Photo">
INSERT INTO t_photo(photo_id, photo_size, upload_timestamp, photo_savePath, photo_accesUrl, acc_id)
VALUES(#{photoId}, #{photoSize}, #{uploadTimestamp}, #{photoSavePath}, #{photoAccessUrl}, #{account.accId});
</insert>
<delete id="deleteByPhotoIds">
delete from t_photo where photo_id in
<foreach collection="array" index="index" open="(" close=")" item="item" separator=",">
#{item}
</foreach>
</delete>
<!-- <select id="selectList" resultMap="result" parameterType="string">-->
<!-- SELECT * FROM t_photo WHERE acc_id = #{account.accId} ORDER BY upload_timestamp DESC;-->
<!-- </select>-->
<select id="selectList" resultMap="result">
select * from t_photo where acc_id = #{arg0} order by upload_timestamp desc limit #{arg1},#{arg2}
</select>
</mapper>
源码:个人相册后端
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐

所有评论(0)