-
Notifications
You must be signed in to change notification settings - Fork 2
Home
landawn edited this page Nov 5, 2022
·
4 revisions
abacus-common is a general programming library/framework in Java. It's simple, powerful and easy to use with concise APIs. To provide the unmatchable programming experiences and high performance solutions, We think the API design and implementation again and again. First, let's take a quick look:
- Most daily used methods: range/repeat/concat/stringOf/valueOf/as/...
int[] a = Array.range(1, 3);
int[] b = Array.rangeClosed(3, 7);
int[] c = N.concat(a, b);
String str = N.stringOf(c);
N.println(str); // [1, 2, 3, 4, 5, 6, 7]
int[] d = N.valueOf(str, int[].class);
assertTrue(N.equals(c, d));
List<String> list = N.asList("abc", "1", "2", "3");
Map<String, Integer> map = N.asMap("a", 1, "b", 2, "c", 3);
ImmutableSet<String> set = ImmutableSet.of("abc", "1", "2", "3");
- Lambda/Stream/Functional programming...
Stream.of("abc", "123", "ab123").filter(str -> str.startsWith("a")).forEach(N::println);
// abc
// ab123
List<String> strs = N.asList("Hello Java", "I LIKE Functional Programming");
// average length of words in the strings.
Stream.of(strs).flatMapp(str -> str.split(" ")).averageDouble(str -> str.length());
// 5.833333333333333
// count the characters in upper case.
Stream.of(strs).flatMapToChar(str -> CharStream.of(str)).filter(ch -> N.isUpperCase(ch)).count();
// 9
- SQLBuilder/Executor...
String sql_insert = insertInto(Account.class, N.asSet("id").sql();
// sql: INSERT INTO account (gui, first_name, last_name, last_update_time, create_time) VALUES (:gui, :firstName, :lastName, :lastUpdateTime, :createTime)
long id = sqlExecutor.insert(sql_insert, account);
// Read
String sql_getById = select("id", "gui", "firstName", "lastName").from("account").where("id = :id").sql();
// sql: SELECT id AS "id", gui AS "gui", first_name AS "firstName", last_name AS "lastName" FROM account WHERE id = :id
Account dbAccount = sqlExecutor.queryForEntity(Account.class, sql_getById, id);
//Update
dbAccount.setFirstName("newFirstName");
String sql_updateFirstNameById = update("account").set("firstName").where("id = :id").sql();
// sql: UPDATE account SET first_name = :firstName WHERE id = :id
sqlExecutor.update(sql_updateFirstNameById, dbAccount);
// Delete
String sql_deleteByFirstName = deleteFrom("account").where("firstName = :firstName").sql();
// sql: DELETE FROM account WHERE first_name = :firstName
sqlExecutor.update(sql_deleteByFirstName, dbAccount);
- XML/JSONParser...
String xml = xmlParser.serialize(account);
// XML: <account><id>0</id><gui>9d436ceb-a85f-40b2-86aa-20625a7d68b0</gui><firstName>3e37c0e9-96c3-40f3-99a2-bde3a384956c</firstName><lastName>38d19d46-6701-4f36-a112-924376154280</lastName><status>0</status><lastUpdateTime>1437609384633</lastUpdateTime><createTime>1437609384633</createTime></account>
Account account2 = xmlParser.deserialize(Account.class, xml);
String json = jsonParser.serialize(account);
// JSON: {id:0, gui:"edf40293-2e38-4c51-885b-e74638f7b7d2", firstName:"f063cb51-75f6-4810-a8e6-8e55d2db440f", lastName:"70e6f942-8400-4b84-9f17-02594d99ee2c", status:0, lastUpdateTime:1437609422217, createTime:1437609422217}
account2 = jsonParser.deserialize(Account.class, json);
- Code Generation: (Account.java)...
// prepare class with fields:
public class Account {
private String firstName;
private String lastName;
private Date birthdate;
private String email;
private String address;
private Map<String, List<Date>> attrs;
}
// Then just two lines to generate the mostly beautiful and well-formatted entity class:
File srcDir = new File("./src");
CodeGenerator.writeClassMethod(srcDir, Account.class);
- How to Learn/Use the APIs correctly and efficiently
- Programming in RDBMS with Jdbc/PreparedQuery/SQLExecutor/Mapper/Dao
- JSON/XML Parser
- SQLite Executor
- SQL Executor
- SQL Builder
- SQL Mapper
- DataSet
- JdbcUtil/CSVUtil
- IOUtil
- PrimitiveList
- Profiler
- Http Client
- Web Services
- Programming in Android
- Parse/Analyze/Operate (Big) Data (on N servers in parallel)
- Code Generation
- Introduction to JDBC
- Naming Convention
- Partitioning/Distribution
- SQL/NoSQL
- Model/Entity