选择应用: https://github.com/mysql-otp/mysql-otp-poolboy
- OTP框架结构,适合当前开发的服务框架
- 使用的基础库mysql-otp,使用者较多,作者为emysql的用户之一,比较靠谱
两种引用方式:
- my own supervisor:即添加到项目的监控树下,效果如图:
没有启动新的application。
- 通过配置文件和服务依赖启动,效果如图:
选择独立服务启动,原因是,独立引用,互不干涉,方便更新和维护。
数据交互模型
表:user
属性:id , name , age
mysql:
输入支持binary和list两种格式:[<<"id">>,<<"name">>, ... ...] OR ["id", "name", ...]
输出格式为binary:{ok, [<<"id">>, <<"name">>, <<"age">>, ... ...], [[<<"">>, <<"">>, ...], [<<"">>, <<"">>, ...], ... ...]
erlang:
model_table.erl
create(Model) ->
DbData = transform_to_sql_data(Model),
%% insert to mysql.
get(Index or Id) ->
[DbData] = select from mysql,
Model = transform_to_model(DbData),
%% return Model
get_list(Index or others) ->
DbDatas = select from mysql,
ModelList = transform_to_model()
%% return ModelList
Model = {user, <<"id">>, <<"name">>, ...}
DbData = [<<"id">>, <<"name">>, ...]
是否检查record与mysql表结构的关系?
1.插入时,使用INSERT INTO table (id, name, ...) VALUES (?,?,?) 显式指定字段名称;取代 INSERT INTO table VALUES (?,?,?)的用法
2.查询时,返回Keys=[<<"id">>,<<"name">>,...]对比record_info(table)定义:[id, name, ...]
编码问题:统一使用utf8编码啊,erlang中使用的json库,已兼容编码。