### Question:
SelectBuilder { public <P> SelectBuilder literal(Class<P> paramClass, P param) { if (paramClass == null) { throw new DomaNullPointerException("paramClass"); } return appendParam(paramClass, param, true); } private  SelectBuilder(Config config); private  SelectBuilder(
      Config config, BuildingHelper builder, SqlSelectQuery query, ParamIndex parameterIndex); static SelectBuilder newInstance(Config config); SelectBuilder sql(String sql); SelectBuilder removeLast(); SelectBuilder param(Class<P> paramClass, P param); SelectBuilder params(Class<E> elementClass, List<E> params); SelectBuilder literal(Class<P> paramClass, P param); SelectBuilder literals(Class<E> elementClass, List<E> params); RESULT getEntitySingleResult(Class<RESULT> resultClass); Optional<RESULT> getOptionalEntitySingleResult(Class<RESULT> resultClass); @SuppressWarnings({"unchecked", "rawtypes"}) RESULT getScalarSingleResult(Class<RESULT> resultClass); @SuppressWarnings({"unchecked", "rawtypes"}) Optional<RESULT> getOptionalScalarSingleResult(Class<RESULT> resultClass); Map<String, Object> getMapSingleResult(MapKeyNamingType mapKeyNamingType); Optional<Map<String, Object>> getOptionalMapSingleResult(
      MapKeyNamingType mapKeyNamingType); List<ELEMENT> getEntityResultList(Class<ELEMENT> elementClass); @SuppressWarnings({"unchecked", "rawtypes"}) List<ELEMENT> getScalarResultList(Class<ELEMENT> elementClass); @SuppressWarnings({"unchecked", "rawtypes"}) List<Optional<ELEMENT>> getOptionalScalarResultList(
      Class<ELEMENT> elementClass); List<Map<String, Object>> getMapResultList(MapKeyNamingType mapKeyNamingType); Stream<TARGET> streamEntity(Class<TARGET> targetClass); RESULT streamEntity(
      Class<TARGET> targetClass, Function<Stream<TARGET>, RESULT> mapper); Stream<TARGET> streamScalar(Class<TARGET> targetClass); RESULT streamScalar(
      Class<TARGET> targetClass, Function<Stream<TARGET>, RESULT> mapper); Stream<Optional<TARGET>> streamOptionalScalar(Class<TARGET> targetClass); RESULT streamOptionalScalar(
      Class<TARGET> targetClass, Function<Stream<Optional<TARGET>>, RESULT> mapper); Stream<Map<String, Object>> streamMap(MapKeyNamingType mapKeyNamingType); RESULT streamMap(
      MapKeyNamingType mapKeyNamingType, Function<Stream<Map<String, Object>>, RESULT> mapper); void ensureResult(boolean ensureResult); void ensureResultMapping(boolean ensureResultMapping); void fetch(FetchType fetchType); void fetchSize(int fetchSize); void maxRows(int maxRows); void queryTimeout(int queryTimeout); void sqlLogType(SqlLogType sqlLogType); void callerClassName(String className); void callerMethodName(String methodName); void options(SelectOptions options); Sql<?> getSql();  }### Answer:
@Test public void testLiteral() { SelectBuilder builder = SelectBuilder.newInstance(new MockConfig()); builder.sql("select"); builder.sql("id").sql(","); builder.sql("name").sql(","); builder.sql("salary"); builder.sql("from Emp"); builder.sql("where"); builder.sql("name = ").literal(String.class, "aaa"); builder.sql("and"); builder.sql("age > ").param(int.class, 20); String sql = String.format( "select%n" + "id,%n" + "name,%n" + "salary%n" + "from Emp%n" + "where%n" + "name = 'aaa'%n" + "and%n" + "age > ?"); assertEquals(sql, builder.getSql().getRawSql()); }