无服务器探索之路(初级):AWS Lambda服务应用场景实践之一(七)

删除模块

项目目录结构

目录结构
1、新建maven工程

Group Id:org.apache.maven.archetypes
Artifact Id:maven-archetype-quickstart
Version:1.1

2、引入依赖
pom.xml:

<groupId>pers.zhentao</groupId>
    <artifactId>DeleteRecord</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>DeleteRecord</name>
    <url>http://maven.apache.org</url>
    <packaging>jar</packaging>
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.6.0</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                    <encoding>UTF-8</encoding>
                    <forceJavacCompilerUse>true</forceJavacCompilerUse>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-shade-plugin</artifactId>
                <version>2.3</version>
                <configuration>
                    <createDependencyReducedPom>false</createDependencyReducedPom>
                </configuration>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>shade</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>3.8.1</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>com.amazonaws</groupId>
            <artifactId>aws-lambda-java-core</artifactId>
            <version>1.1.0</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/com.alibaba/fastjson -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.38</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>6.0.6</version>
        </dependency>
    </dependencies>

3、lambda函数输入POJO
Record.java

/**
 * 通讯录实体类
 *
 * @author zhangzhentao1995@163.com
 *         2017-10-30
 */
public class Record {
    private Integer addressBookId;
    private String name;
    private String phoneNumber;
    private String address;
    private String telephoneNumber;
    private String note;
    private Date createTime;
    private Integer createdBy;

    //getters and setters...
}

4、lambda函数输出POJO
ResponseData.java

/**
 * 返回消息
 *
 * @author zhangzhentao1995@163.com 
 *         2017-10-30
 */
public class ResponseData {
    public static final Integer RESPONSE_CODE_SUCCESS = 1000;
    public static final Integer RESPONSE_CODE_ERROR = 1001;
    public static final Integer RESPONSE_CODE_SYS_EXCEPTION = 1002;

    private Integer code;
    private String message;
    private List<Record> rows;
    private Map<Object, Object> map;

    public ResponseData(Integer code, String message) {
        this.code = code;
        this.message = message;
    }

    public ResponseData(Integer code, List<Record> rows) {
        this.rows = rows;
        this.code = code;
    }

    //getters and setters...
}

5、lambda处理程序
LambdaFunctionHandler.java

/**
 * lambda处理程序
 *
 * @author zhangzhentao1995@163.com
 *         2017-10-30
 */
public class LambdaFunctionHandler implements RequestHandler<Integer, ResponseData> {

    public ResponseData handleRequest(Integer input, Context context) {
        LambdaLogger logger = context.getLogger();
        logger.log("[" + new Date() + "]id:" + input);
        IDeleteRecordService service = new DeleteRecordServiceImpl();
        try {
            service.deleteRecord(input);
        } catch (DeleteRecordException e) {
            return new ResponseData(ResponseData.RESPONSE_CODE_SYS_EXCEPTION, e.getMsg());
        }
        return new ResponseData(ResponseData.RESPONSE_CODE_SUCCESS, "delete success.");
    }

}

6、service接口
IDeleteRecordService.java

/**
 * 删除服务接口
 *
 * @author zhangzhentao1995@163.com
 *         2017-10-30
 */
public interface IDeleteRecordService {
    /**
     * 删除记录接口
     * @param id 记录id
     * @throws DeleteRecordException
     */
    public void deleteRecord(Integer id) throws DeleteRecordException;
}

7、接口实现类
DeleteRecordServiceImpl.java

public class DeleteRecordServiceImpl implements IDeleteRecordService {

    /**
     * RDS数据库配置信息
     */
    private final String driver = "com.mysql.cj.jdbc.Driver";
    private String url = null;
    private String username = null;
    private String password = null;
    private final String DELETE_SQL = "delete from address_book where address_book_id=?";

    public void deleteRecord(Integer id) throws DeleteRecordException {
        url = System.getenv("DB_URL");
        username = System.getenv("USERNAME");
        password = System.getenv("PASSWORD");
        if(url == null || username == null || password == null) {
            throw new DeleteRecordException(DeleteRecordException.SYS_ERROR_CODE, "db config is null.");
        }
        try {
            Class.forName(driver);
        } catch (ClassNotFoundException e) {
            throw new DeleteRecordException(DeleteRecordException.SYS_ERROR_CODE, "mysql driver not found.");
        }
        Connection conn;
        try {
            conn = DriverManager.getConnection(url, username, password);
            PreparedStatement statement = conn.prepareStatement(DELETE_SQL);
            statement.setInt(1, id);
            int count = statement.executeUpdate();
            conn.close();
            if (count != 1) {
                throw new DeleteRecordException(DeleteRecordException.DB_ERROR_CODE, "delete record failed.");
            }
        } catch (SQLException e) {
            throw new DeleteRecordException(DeleteRecordException.DB_ERROR_CODE, e.getMessage());
        }

    }

}

8、异常类
DeleteRecordException.java

/**
 * 删除异常类
 *
 * @author zhangzhentao1995@163.com
 *         2017-10-30
 */
public class DeleteRecordException extends Exception {

    private static final long serialVersionUID = 193641359947124206L;

    public static final Integer INFO_ERROR_CODE = 1001;
    public static final Integer SYS_ERROR_CODE = 2001;
    public static final Integer DB_ERROR_CODE = 2002;

    private Integer code;
    private String msg;

    public DeleteRecordException(String message) {
        super(message);
    }

    public DeleteRecordException(Integer code, String msg) {
        this.code = code;
        this.msg = msg;
    }

    //getters and setters...
}

9、maven打包
在项目根目录下,打开命令行,执行命令:

mvn package

执行完成后,项目target文件夹下会出现jar包:XXXX-0.0.1-SNAPSHOT.jar
10、创建Lambda函数,配置处理程序路径,配置环境变量,上传jar包
环境变量
11、配置测试事件
测试事件
12、测试结果
测试结果


至此,删除模块完成。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值