рдПрдВрдбреНрд░реЙрдЗрдб рдХреЗ рд▓рд┐рдП рдПрдХ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╡рд┐рдХрд╕рд┐рдд рдХрд░рддреЗ рд╕рдордп, рд╣рдо рдЕрдХреНрд╕рд░ рд╕рд░реНрдХрд┐рдЯ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рд╣рд╛рдереЛрдВ рд╕реЗ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд┐рдЦрддреЗ рд╣реИрдВред
рд╕рдм рдХреБрдЫ рдареАрдХ рд╣реЛ рдЬрд╛рдПрдЧрд╛ рдЬрдм рдЖрдкрдХреЛ рдПрдХ рдмрд╛рд░ рдРрд╕рд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рд▓реЗрдХрд┐рди рдЬрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╡рд┐рдХрд╕рд┐рдд рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдЕрдХреНрд╕рд░ рдбреЗрдЯрд╛рдмреЗрд╕ рдмрджрд▓рдирд╛ рдкрдбрд╝рддрд╛ рд╣реИред
рдФрд░ рдЬрдм рдпрд╣ рдХрдИ рд╡рд░реНрдЧреЛрдВ рдореЗрдВ рдлреИрд▓рд╛ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реЛрддреА рд╣реИрдВ, рдХрд╣реАрдВ рдореИрдВ рдПрдХ рдХреЙрд▓рдо рдЬреЛрдбрд╝рдиреЗ / рдирд┐рдХрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рднреВрд▓ рдЧрдпрд╛, рдкреНрд░рдХрд╛рд░ рдмрджрд▓реВрдВ рдФрд░ рдЗрддрдиреЗ рдкрд░ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХреЙрдкреА-рдкреЗрд╕реНрдЯ "рдорджрдж": рдПрдХ рдХреЙрд▓рдо рдЬреЛрдбрд╝рд╛ - рдПрдХ рдЕрд▓реНрдкрд╡рд┐рд░рд╛рдо рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рднреВрд▓ рдЧрдпрд╛ред
рдмрд╕ рдЗрди рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рдЖрд╡рд┐рд╖реНрдХрд╛рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рдПрдиреЛрдЯреЗрдЯреЗрдбрдПрд╕рдХреНрдпреВ рдПрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╣реИ рдЬреЛ рдПрдиреЛрдЯреЗрд╢рди рдбреЗрдЯрд╛рдмреЗрд╕ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдб рдЙрддреНрдкрдиреНрди рдХрд░реЗрдЧрд╛ред рдПрдиреЛрдЯреЗрд╢рди
рд░рдирдЯрд╛рдЗрдо рдирд╣реАрдВ рд╣реИ , рд▓реЗрдХрд┐рди рд╕рдВрдХрд▓рди рд╕рдордп рдкрд░ рдкреНрд░реАрдкреНрд░реЛрд╕реЗрд╕рд░ рджреНрд╡рд╛рд░рд╛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╣рдо рдкрд░рд┐рдпреЛрдЬрдирд╛ рдФрд░ рдЕрдВрддрд┐рдо apk рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред
рджрд░рдЕрд╕рд▓, рд▓рд┐рдм рдореЗрдВ рджреЛ рдЯреБрдХрдбрд╝реЗ рд╣реЛрддреЗ рд╣реИрдВ: рдПрдиреЛрдЯреЗрд╢рди рдФрд░ рдкреНрд░реАрдкреНрд░реЛрд╕реЗрд╕рд░ рд╡рд╛рд▓рд╛ рдЬрд╛рд░ред
рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ libs рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рд╡реНрдпрд╛рдЦреНрдпрд╛рдПрдБред
рдЦреИрд░, рдкреНрд░реАрдкреНрд░реЛрд╕реЗрд╕рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЖрдИрдбреАрдИ рдФрд░ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреА рд╡рд┐рдзрд┐ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред
рдпрджрд┐ рдЖрдк
рдЧреНрд░рд╣рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдкреНрд▓рдЧ рдЗрди рдкреНрд▓рдЧрд┐рди рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдХреЙрдкреА рдХрд░реЗрдВ рдФрд░ рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ рддреЛ рдЧреНрд░рд╣рдг рдХреЛ рдкреБрдирд░рд╛рд░рдВрдн рдХрд░реЗрдВред рдлрд┐рд░ рд╣рдо
рдЬрд╛рд╡рд╛ рдХрдВрдкрд╛рдЗрд▓рд░ -> рдПрдиреЛрдЯреЗрд╢рди рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреА рд╕реЗрдЯрд┐рдВрдЧ рдореЗрдВ рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рдЙрд╕ рдлреЛрд▓реНрдбрд░ рдХреЛ рдЪреБрдирддреЗ рд╣реИрдВ рдЬрд╣рд╛рдВ рдкрд░ рдХреЛрдб рдЬреЗрдирд░реЗрдЯ рдХрд░рдирд╛ рд╣реИред рдЬрд╛рд╣рд┐рд░ рд╣реИ рдЖрдкрдХреЛ рдорд╛рдирдХ
рдЬреАрди рдлрд╝реЛрд▓реНрдбрд░ рдбрд╛рд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдмрд╛рдж,
Factory Path рдкрд░ рдЬрд╛рдПрдВ рдФрд░ рд╣рдорд╛рд░реЗ рдкреНрд▓рдЧрдЗрди рдХрд╛ рдЪрдпрди рдХрд░реЗрдВред рдЦреИрд░ рдпрд╣ рд╕рдм рд╣реИред
рдЖрдИрдбреАрдИрдП рдХреЗ рд▓рд┐рдП рдкреНрд▓рдЧ-рдЗрди рдПрдХрддреНрд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛, рдХреВрдбрд╝реЗ
рдЪреАрдВрдЯреА рдХреЗ рд╕рд╛рде рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП - рдЖрдкрдХреЛ рдмрд╕ рдХреНрд▓рд╛рд╕рдкреИрде рдореЗрдВ рдПрдХ рдкреНрд░реАрдкреНрд░реЛрд╕реЗрд╕рд░ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ, рд╣рдо рдЗрд╕реЗ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдХрд░рддреЗ рд╣реИрдВ
ant clean release -cp ../com.annotatedsql.AnnotatedSQL_1.0.12.jar
рдХреЗ рдЙрдкрдпреЛрдЧ
рдЕрдзрд┐рдХ рддрдХрдиреАрдХреА рдЪреАрдЬреЛрдВ рдкрд░ рдЪрд▓рддреЗ рд╣реИрдВред рддреЛ рд╣рдо рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рд▓рд┐рдм рдХреЛ рдХреИрд╕реЗ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдП, рд▓реЗрдХрд┐рди рдпрд╣ рдХреНрдпрд╛ рдХрд░рддрд╛ рд╣реИ?
рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рд╣реА рдХрд╣рд╛ рд╣реИ, рдпрд╣ рдПрдиреЛрдЯреЗрд╢рди рд╕реЗ рдПрдХ рдбреЗрдЯрд╛рдмреЗрд╕ рдмрдирд╛рддрд╛ рд╣реИ, рдпрд╛ рдмрд▓реНрдХрд┐, рдПрдХ рд╡рд░реНрдЧ рдмрдирд╛рддрд╛ рд╣реИ рдЬрд┐рд╕рдХреА рдорджрдж рд╕реЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдЙрддреНрдкрдиреНрди рд╣реЛрдЧрд╛ред
рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣, рдХреЛрдб рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП, рд╣рдо рдкреНрд▓реЗрдЯреЛрдВ рдХреЛ рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рдирд╛рдо рдФрд░ рдЗрд╕рдореЗрдВ рд╕реНрддрдВрднреЛрдВ рдХреЗ рд╕рд╛рде рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдХрд░рддреЗ рд╣реИрдВред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╣реЛрдЧрд╛ рдЬреЛ рдЦреЗрд▓ рдкреНрд░рддрд┐рдпреЛрдЧрд┐рддрд╛рдУрдВ рдХреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдкрд░ рдбреЗрдЯрд╛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдЧрд╛ред рдЕрднреА рдХреЗ рд▓рд┐рдП рдПрдХ рдлреБрдЯрдмреЙрд▓ рдореИрдЪ рд▓реЗ рд▓реЛред
рдЬрд╛рд╣рд┐рд░ рд╣реИ, рд╣рдореЗрдВ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдХрдИ рдЯреИрдЧ рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдПред рдпрд╣ рдПрдХ рдЯреАрдо, рдкрд░рд┐рдгрд╛рдо рдФрд░ рдЪреИрдореНрдкрд┐рдпрдирд╢рд┐рдк рд╣реИред рд╣рдо рдЙрдирдХрд╛ рд╡рд░реНрдгрди рдХрд░реЗрдВрдЧреЗред
рдореИрдВ рдЖрдорддреМрд░ рдкрд░ рдПрдХ рд╡рд░реНрдЧ рдХреЗ рднреАрддрд░ рд╕рднреА рдЗрдВрдЯрд░рдлреЗрд╕ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реВрдВ, рдЪрд▓реЛ рдЗрд╕реЗ FStore рдХрд╣рддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдПред рдЧреЛрд▓рд┐рдпреЛрдВ рдХреЗ рд╡рд┐рд╡рд░рдг рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЗрд╕рдореЗрдВ рдбреЗрдЯрд╛рдмреЗрд╕ рдХрд╛ рдирд╛рдо, рдЗрд╕рдХрд╛ рд╕рдВрд╕реНрдХрд░рдг рдФрд░ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреА рдПрдХ рдЬреЛрдбрд╝реА рд╢рд╛рдорд┐рд▓ рд╣реИред
public class FStore { public static final String DB_NAME = "fmanager"; public static final int DB_VERSION = 34; .......... public static interface TeamTable{ String TABLE_NAME = "team_table"; String ID = "_id"; String TITLE = "title"; String CHEMP_ID = "chemp_id"; String IS_FAV = "is_fav"; } public static interface ChempTable{ String TABLE_NAME = "chemp_table"; String CONTENT_PATH = "chemps"; String ID = "_id"; String TITLE = "title"; } public static interface ResultsTable{ String CONTENT_PATH = "results"; String PATH_VIEW = "results_view"; String TABLE_NAME = "result_table"; String ID = "_id"; String TEAM_ID = "team_id"; String POINTS = "points"; String CHEMP_ID = "chemp_id"; String GAMES = "games"; String WINS = "wins"; String TIE = "tie"; String LOSE = "lose"; String BALLS = "balls"; String GOALS = "goals"; } ........ }
рдЬрдмрдХрд┐ рд╣рдо CONTENT_PATH рдФрд░ рд╕рднреА рдкреНрд░рдХрд╛рд░ рдХреЗ PATH_VIEW рдкрд░ рдзреНрдпрд╛рди рдирд╣реАрдВ рджреЗрддреЗ рд╣реИрдВред рдпреЗ рдХрдВрдЯреЗрдВрдЯ рдкреНрд░реЛрд╡рд╛рдЗрдбрд░ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рд░рдВрддрд░ рд╣реИрдВред
рдЗрд╕рд▓рд┐рдП, рд╣рдо рд╕рд░реНрдХрд┐рдЯ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдореИрдиреБрдЕрд▓ рдХрд╛рдо рдХреА рдорд╛рддреНрд░рд╛ рдкреНрд░рд╕реНрддреБрдд рдХрд░рддреЗ рд╣реИрдВред
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдПрдХ рдкрдардиреАрдп рд░реВрдк рдореЗрдВ рдкрд░рд┐рдгрд╛рдо рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдкреНрд▓реЗрдЯреЛрдВ рдХреЛ рдПрдХ-рджреВрд╕рд░реЗ рд╕реЗ рдЬреБрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрд╣ рд╕рд╛рдордЧреНрд░реА рдкреНрд░рджрд╛рддрд╛ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ
рд╡реНрдпреВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реВрдВ, рдпрд╣рд╛рдВ рд▓реЗрдЦрди рдХреЗ рд▓рд┐рдП рдПрдХ рдФрд░ рдмрдбрд╝рд╛ рд╡рд░реНрдЧ рдЯреБрдХрдбрд╝рд╛ рд╣реИред
рд╣рдорд╛рд░реЗ рдХрд╛рдо рдХреЛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдкрд░рд┐рд╡рд╛рдж рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рдерд╛ред рддреЛ рдЪрд▓рд┐рдП рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред
рдпреЛрдЬрдирд╛
FStore - рдПрдиреЛрдЯреЗрд╢рди
рд╕реНрдХреАрдорд╛ ("SqlSchema") рдХреЗ рд╕рд╛рде рдЪрд┐рд╣реНрдирд┐рдд рдХрд░реЗрдВ рдФрд░ рдЙрд╕ рд╡рд░реНрдЧ рдХрд╛ рдирд╛рдо рд╕реЗрдЯ рдХрд░реЗрдВ рдЬрд┐рд╕рдореЗрдВ рдХреЛрдб рд╣реЛрдЧрд╛ред рд╡рд░реНрдЧ рдЙрд╕реА рдкреИрдХреЗрдЬ рдореЗрдВ рдЙрддреНрдкрдиреНрди рд╣реЛрдЧрд╛ рдЬрд╣рд╛рдБ FStore рдЭреВрда рд╣реИ
@Schema("SqlSchema") public class FStore {
рдЯреЗрдмрд▓, рдЗрдВрдбреЗрдХреНрд╕, рдкреНрд░рд╛рдЗрдорд░реАрдХреЗ
рд▓реЗрдмрд▓ рд╡рд┐рд╡рд░рдг
рддрд╛рд▓рд┐рдХрд╛ рдПрдиреЛрдЯреЗрд╢рди рдФрд░ рд╕реЗрдЯ рдЯреЗрдмрд▓ рдирд╛рдо рдХреЗ рд╕рд╛рде рдЪрд┐рд╣реНрдирд┐рдд рд╣реИ
@Table(ChempTable.TABLE_NAME) public static interface ChempTable{ ................ @Table(TeamTable.TABLE_NAME) public static interface TeamTable{ ............... @Table(ResultsTable.TABLE_NAME) @Index(name = "chemp_index", columns = ResultsTable.CHEMP_ID) @PrimaryKey(collumns = {ResultsTable.TEAM_ID, ResultsTable.CHEMP_ID}) public static interface ResultsTable{
рдЬреИрд╕рд╛ рдХрд┐ рд╣рдо рдореЗрдЬ рдкрд░ рджреЗрдЦрддреЗ рд╣реИрдВ, рд╣рдо рдПрдХ рд╕реВрдЪрдХрд╛рдВрдХ, рдФрд░ рдПрдХ рдЬрдЯрд┐рд▓ рдХреБрдВрдЬреА рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЛ рд▓рдЯрдХрд╛ рд╕рдХрддреЗ рд╣реИрдВред рд╕рдм рдХреБрдЫ рд╕рд░рд▓ рд▓рдЧрддрд╛ рд╣реИ рдФрд░ рдХрд┐рд╕реА рднреА рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред
рдХреЙрд▓рдо, рдкреНрд░рд╛рдЗрдорд░реАрдХреЗрдп, рдСрдЯреЛрдЗрдирдХреНрд░реАрдореЗрдВрдЯ, рдиреЛрдЯрдирд▓
рдпреЗ рдПрдиреЛрдЯреЗрд╢рди рдЦреЗрддреЛрдВ рдХреЗ рд▓рд┐рдП рд╣реИрдВ, рдФрд░ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдкрд╖реНрдЯ рд╣реИрдВред
@Table(TeamTable.TABLE_NAME) public static interface TeamTable{ String TABLE_NAME = "team_table"; @PrimaryKey @Column(type = Type.INTEGER) String ID = "_id"; @NotNull @Column(type = Type.TEXT) String TITLE = "title"; @Column(type = Type.INTEGER) @NotNull String CHEMP_ID = "chemp_id"; @Column(type = Type.INTEGER, defVal="0") String IS_FAV = "is_fav"; }
SimpleView
рдФрд░ рдЕрдВрддрд┐рдо, рдмрд╣реБрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг, рд╕рд┐рд╕реНрдЯрдо рдХрд╛ рддрддреНрд╡ рдФрд░ рдХрд╛рдлреА рддреБрдЪреНрдЫ рдирд╣реАрдВ
SimpleView рд╣реИ ред
рдпрд╣ рд╕рд░рд▓ рджреГрд╢реНрдп рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдмреБрдирд┐рдпрд╛рджреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдЕрднреА рднреА рдПрдХ ININ JOIN рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рджреВрд╕рд░реЛрдВ рдХреЛ рдЬреЛрдбрд╝реВрдВрдЧрд╛ред
@SimpleView(ResultView.VIEW_NAME) public static interface ResultView{ String VIEW_NAME = "result_view"; @From(ResultsTable.TABLE_NAME) String TABLE_RESULT = "table_result"; @Join(srcTable = TeamTable.TABLE_NAME, srcColumn = TeamTable.ID, destTable = ResultView.TABLE_RESULT, destColumn = ResultsTable.TEAM_ID) String TABLE_TEAM = "table_team"; @Join(srcTable = ChempTable.TABLE_NAME, srcColumn = ChempTable.ID, destTable = ResultView.TABLE_RESULT, destColumn = ResultsTable.CHEMP_ID) String TABLE_CHEMP = "table_chemp"; }
рд╣рдорд╛рд░реЗ рд╡рд┐рдЪрд╛рд░ рдХреЗ рдЕрдВрджрд░ рдПрдиреЛрдЯреЗрд╢рди рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:
рд╕реЗ - рдпрд╣ рд╡рд╣ рдЯреИрдмрд▓реЗрдЯ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╕реЗ рд╣рдо :) рдХрд░реЗрдВрдЧреЗ - рдорд╣рддреНрд╡рдкреВрд░реНрдг - рдЖрдЧреЗ, рд╢рд╛рдорд┐рд▓ рд╣реЛрдиреЗ рдкрд░, рдЖрдкрдХреЛ рддрд╛рд▓рд┐рдХрд╛ рдирд╛рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рдпрд╣ рдирд┐рд░рдВрддрд░ рд╣реИред
рд╕рдореНрдорд┐рд▓рд┐рдд рд╣реЛрдВ - рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЬреБрдбрд╝рдиреЗ рдХреА рддрд╛рд▓рд┐рдХрд╛ред рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЯреАрдо рдФрд░ рдЪреИрдВрдкрд┐рдпрдирд╢рд┐рдк рдХреА рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛрдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред
srcTable рд╕реНрд░реЛрдд рддрд╛рд▓рд┐рдХрд╛ рд╣реИред
рдбреЗрд╕реНрдЯрдЯреЗрдмрд▓ рд╡реНрдпреВ рдореЗрдВ рд╕реЗ / рдЬреНрд╡рд╛рдЗрди рдЯреЗрдмрд▓ рдХреЗ рд▓рд┐рдП рдирдпрд╛ рдирд╛рдо рд╣реИред рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ
String TABLE_RESULT = "table_result";
рдПрдХ рдФрд░
рдмрд╣реБрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд┐рдВрджреБ - рджреГрд╢реНрдп рдореЗрдВ, рдлрд╝реАрд▓реНрдб рдирд╛рдо рдирд┐рдореНрди рдкреИрдЯрд░реНрди рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдЙрддреНрдкрдиреНрди рд╣реЛрддреЗ рд╣реИрдВ:
<variable_name>_<column_name>
рдЕрдкрд╡рд╛рдж рддрд╛рд▓рд┐рдХрд╛ рд╕реЗ
_id рдлрд╝реАрд▓реНрдб рд╣реИ, рдЬреЛ рдПрдбрд╛рдкреНрдЯрд░ рдореЗрдВ рдХрд░реНрд╕рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдЧрд╛ред
рдЗрд╕рд▓рд┐рдП, рдХреЙрд▓рдо рдЗрдВрдбреЗрдХреНрд╕ рдХреЛ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдХреБрдЫ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ
columnPoints = cursor.getColumnIndex(ResultView.TABLE_RESULT + "_" + ResultsTable.POINTS);
рдереЛрдбрд╝рд╛ рдЕрд╕рд╣рдЬ, рд▓реЗрдХрд┐рди рдпрд╣ рдПрдХ рдмрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ
public void changeCursor(Cursor cursor) {
рдЖрдк рдЕрднреА рднреА рдРрд╕реЗ рд╕рд╣рд╛рдпрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ
public class ColumnMappingHelper { private HashMap<String, HashMap<String, Integer>> indexes = new HashMap<String, HashMap<String, Integer>>(); public int getColumn(Cursor c, String table, String column){ HashMap<String, Integer> columns = indexes.get(table); if(columns != null){ Integer index = columns.get(column); if(index != null) return index; } if(columns == null){ columns = new HashMap<String, Integer>(); indexes.put(table, columns); } int index = c.getColumnIndex(table + "_" + column); columns.put(column, index); return index; } }
рдФрд░ рдЗрд╕ рддрд░рд╣ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ
mappingHelper.getColumn(cursor, ResultView.TABLE_RESULT, ResultsTable.POINTS);
рдкрд░рд┐рдгрд╛рдо
рдЬрдирд░реЗрдЯ рдХреА рдЧрдИ рдлрд╝рд╛рдЗрд▓
SqlSchema.java public class SqlSchema{ private static final String SQL_CREATE_RESULT_TABLE = "create table result_table( balls INTEGER, chemp_id INTEGER NOT NULL, games INTEGER NOT NULL, goals INTEGER, _id INTEGER, lose INTEGER, points INTEGER NOT NULL, team_id INTEGER NOT NULL, tie INTEGER, wins INTEGER, PRIMARY KEY( team_id, chemp_id))"; private static final String SQL_CREATE_CHEMP_TABLE = "create table chemp_table( _id INTEGER PRIMARY KEY, title TEXT)"; private static final String SQL_CREATE_TEAM_TABLE = "create table team_table( chemp_id INTEGER NOT NULL, _id INTEGER PRIMARY KEY, is_fav INTEGER DEFAULT (0), title TEXT NOT NULL)"; private static final String SQL_CREATE_CHEMP_INDEX = "create index idx_chemp_index on result_table( chemp_id)"; private static final String SQL_CREATE_RESULT_VIEW = "CREATE VIEW result_view AS SELECT table_chemp._id as table_chemp__id, table_chemp.title as table_chemp_title, table_result.balls as table_result_balls, table_result.chemp_id as table_result_chemp_id, table_result.games as table_result_games, table_result.goals as table_result_goals, table_result._id, table_result.lose as table_result_lose, table_result.points as table_result_points, table_result.team_id as table_result_team_id, table_result.tie as table_result_tie, table_result.wins as table_result_wins, table_team.chemp_id as table_team_chemp_id, table_team._id as table_team__id, table_team.is_fav as table_team_is_fav, table_team.title as table_team_title FROM result_table AS table_result JOIN chemp_table AS table_chemp ON table_chemp._id = table_result.chemp_id JOIN team_table AS table_team ON table_team._id = table_result.team_id"; public static void onCreate(final SQLiteDatabase db) { db.execSQL(SQL_CREATE_RESULT_TABLE); db.execSQL(SQL_CREATE_CHEMP_TABLE); db.execSQL(SQL_CREATE_TEAM_TABLE); db.execSQL(SQL_CREATE_SCORE_TABLE); db.execSQL(SQL_CREATE_CHEMP_INDEX); db.execSQL(SQL_CREATE_RESULT_VIEW); db.execSQL(SQL_CREATE_SCORE_VIEW); } public static void onDrop(final SQLiteDatabase db){ db.execSQL("drop table if exists result_table"); db.execSQL("drop table if exists chemp_table"); db.execSQL("drop table if exists team_table"); db.execSQL("drop table if exists score_table"); db.execSQL("drop view if exists result_view"); db.execSQL("drop view if exists score_view"); } }
рджреЗрдЦреЗрдВ result_view рдХреЗ рд░реВрдк рдореЗрдВ рдЪрдпрди table_chemp__id, table_chemp_title рд░реВрдк table_chemp.title, table_result_balls рд░реВрдк table_result.balls, table_result_chemp_id рд░реВрдк table_result.chemp_id, table_result_games рд░реВрдк table_result.games, table_result_goals рд░реВрдк table_result.goals, table_result рд░реВрдк table_chemp._idред public class SqlSchema{ private static final String SQL_CREATE_RESULT_TABLE = "create table result_table( balls INTEGER, chemp_id INTEGER NOT NULL, games INTEGER NOT NULL, goals INTEGER, _id INTEGER, lose INTEGER, points INTEGER NOT NULL, team_id INTEGER NOT NULL, tie INTEGER, wins INTEGER, PRIMARY KEY( team_id, chemp_id))"; private static final String SQL_CREATE_CHEMP_TABLE = "create table chemp_table( _id INTEGER PRIMARY KEY, title TEXT)"; private static final String SQL_CREATE_TEAM_TABLE = "create table team_table( chemp_id INTEGER NOT NULL, _id INTEGER PRIMARY KEY, is_fav INTEGER DEFAULT (0), title TEXT NOT NULL)"; private static final String SQL_CREATE_CHEMP_INDEX = "create index idx_chemp_index on result_table( chemp_id)"; private static final String SQL_CREATE_RESULT_VIEW = "CREATE VIEW result_view AS SELECT table_chemp._id as table_chemp__id, table_chemp.title as table_chemp_title, table_result.balls as table_result_balls, table_result.chemp_id as table_result_chemp_id, table_result.games as table_result_games, table_result.goals as table_result_goals, table_result._id, table_result.lose as table_result_lose, table_result.points as table_result_points, table_result.team_id as table_result_team_id, table_result.tie as table_result_tie, table_result.wins as table_result_wins, table_team.chemp_id as table_team_chemp_id, table_team._id as table_team__id, table_team.is_fav as table_team_is_fav, table_team.title as table_team_title FROM result_table AS table_result JOIN chemp_table AS table_chemp ON table_chemp._id = table_result.chemp_id JOIN team_table AS table_team ON table_team._id = table_result.team_id"; public static void onCreate(final SQLiteDatabase db) { db.execSQL(SQL_CREATE_RESULT_TABLE); db.execSQL(SQL_CREATE_CHEMP_TABLE); db.execSQL(SQL_CREATE_TEAM_TABLE); db.execSQL(SQL_CREATE_SCORE_TABLE); db.execSQL(SQL_CREATE_CHEMP_INDEX); db.execSQL(SQL_CREATE_RESULT_VIEW); db.execSQL(SQL_CREATE_SCORE_VIEW); } public static void onDrop(final SQLiteDatabase db){ db.execSQL("drop table if exists result_table"); db.execSQL("drop table if exists chemp_table"); db.execSQL("drop table if exists team_table"); db.execSQL("drop table if exists score_table"); db.execSQL("drop view if exists result_view"); db.execSQL("drop view if exists score_view"); } }
table_team_is_fav рд░реВрдк table_result_wins рд░реВрдк table_result_tie рд░реВрдк table_result_points, table_result_team_id рд░реВрдк table_result.team_id, table_result.tie, table_result.wins, table_team_chemp_id рд░реВрдк table_team.chemp_id, table_team__id рд░реВрдк table_team._id, table_team.is_fav, public class SqlSchema{ private static final String SQL_CREATE_RESULT_TABLE = "create table result_table( balls INTEGER, chemp_id INTEGER NOT NULL, games INTEGER NOT NULL, goals INTEGER, _id INTEGER, lose INTEGER, points INTEGER NOT NULL, team_id INTEGER NOT NULL, tie INTEGER, wins INTEGER, PRIMARY KEY( team_id, chemp_id))"; private static final String SQL_CREATE_CHEMP_TABLE = "create table chemp_table( _id INTEGER PRIMARY KEY, title TEXT)"; private static final String SQL_CREATE_TEAM_TABLE = "create table team_table( chemp_id INTEGER NOT NULL, _id INTEGER PRIMARY KEY, is_fav INTEGER DEFAULT (0), title TEXT NOT NULL)"; private static final String SQL_CREATE_CHEMP_INDEX = "create index idx_chemp_index on result_table( chemp_id)"; private static final String SQL_CREATE_RESULT_VIEW = "CREATE VIEW result_view AS SELECT table_chemp._id as table_chemp__id, table_chemp.title as table_chemp_title, table_result.balls as table_result_balls, table_result.chemp_id as table_result_chemp_id, table_result.games as table_result_games, table_result.goals as table_result_goals, table_result._id, table_result.lose as table_result_lose, table_result.points as table_result_points, table_result.team_id as table_result_team_id, table_result.tie as table_result_tie, table_result.wins as table_result_wins, table_team.chemp_id as table_team_chemp_id, table_team._id as table_team__id, table_team.is_fav as table_team_is_fav, table_team.title as table_team_title FROM result_table AS table_result JOIN chemp_table AS table_chemp ON table_chemp._id = table_result.chemp_id JOIN team_table AS table_team ON table_team._id = table_result.team_id"; public static void onCreate(final SQLiteDatabase db) { db.execSQL(SQL_CREATE_RESULT_TABLE); db.execSQL(SQL_CREATE_CHEMP_TABLE); db.execSQL(SQL_CREATE_TEAM_TABLE); db.execSQL(SQL_CREATE_SCORE_TABLE); db.execSQL(SQL_CREATE_CHEMP_INDEX); db.execSQL(SQL_CREATE_RESULT_VIEW); db.execSQL(SQL_CREATE_SCORE_VIEW); } public static void onDrop(final SQLiteDatabase db){ db.execSQL("drop table if exists result_table"); db.execSQL("drop table if exists chemp_table"); db.execSQL("drop table if exists team_table"); db.execSQL("drop table if exists score_table"); db.execSQL("drop view if exists result_view"); db.execSQL("drop view if exists score_view"); } }
рдкреНрд▓реЗрдЯреЛрдВ рдХреЗ рд╡рд┐рд╡рд░рдг рд╕реЗ рд╕реНрдерд┐рд░рд╛рдВрдХ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдлрд╝рд╛рдЗрд▓ рдЬрдирд░реЗрдЯ рдХреА рдЧрдИ рд╣реИ рдФрд░ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ рдХрд┐ рдЖрдкрдиреЗ рдЯреЗрдмрд▓ рдШреЛрд╖рдгрд╛ рдореЗрдВ рдХреНрдпрд╛ рд▓рд┐рдЦрд╛ рд╣реИ
SqlSchema рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛
private class AnnotationSql extends SQLiteOpenHelper { public AnnotationSql(Context context) { super(context, FStore.DB_NAME, null, FStore.DB_VERSION); } @Override public void onCreate(SQLiteDatabase db) { SqlSchema.onCreate(db); init(db); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { SqlSchema.onDrop(db); onCreate(db); } }
рдпреЛрдЬрдирд╛рдУрдВ
1. рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░ рдХреЗ рдЬреЛрдбрд╝ рд▓рдЧрд╛рдПрдВ
2. рдХреЗрд╡рд▓ рдЖрд╡рд╢реНрдпрдХ рдлрд╝реАрд▓реНрдб рд░реЗрдХ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП
рдХреЙрд▓рдо рдПрдиреЛрдЯреЗрд╢рди рдЬреЛрдбрд╝реЗрдВ
рд╕рдВрджрд░реНрдн
рдмрд╛рдпрдиреЗрд░рд┐рдЬрд╝:
github.com/hamsterksu/Android-AnnotatedSQL-binariesрд╕реНрд░реЛрдд:
github.com/hamsterksu/Android-AnnotatedSQLрд▓рд╛рдЗрд╕реЗрдВрд╕: MIT
рдЖрдк рд╕рднреА рдХреЛ рдзрдиреНрдпрд╡рд╛рдж!
# 1 рдЕрджреНрдпрддрди рдХрд░реЗрдВ: рд╕реНрдХреАрдорд╛ рдХреЛ рдЕрджреНрдпрддрди рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ
рдореИрдВ OpenHelper рдЙрддреНрдкрдиреНрди рдирд╣реАрдВ рдХрд░рддрд╛, рдЖрдк рдЗрд╕реЗ рд╕реНрд╡рдпрдВ рд▓рд┐рдЦрддреЗ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП рдХреЛрдИ рднреА рдЬрдЯрд┐рд▓ рддрд░реНрдХ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реЗрд╢рд╛рди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдЙрддреНрдкрдиреНрди рд╕реНрдХреНрд░рд┐рдкреНрдЯ
рдСрдирдХреНрд░рд┐рдПрдЯ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░реЗрдЧреАред
OnUpgrad рдореЗрдВ, рдЖрдк рдлрд╝реАрд▓реНрдбреНрд╕ рдХреЛ рдмрд╣реБрдд рд╣реА рд╕рд░рд▓рддрд╛ рд╕реЗ рдЬреЛрдбрд╝ / рд╣рдЯрд╛ / рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ - рдЖрдкрдХреЗ рдкрд╛рд╕ рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдФрд░ рдлрд╝реАрд▓реНрдб рдХреЗ рдирд╛рдо рд╣реИрдВред
рдЖрд░реЗрдЦ рдореЗрдВ, рдореИрдВ рд╕рджрд╕реНрдпреЛрдВ рдХреЛ рдЦреБрд▓рд╛ рдХрд░ рджреВрдВрдЧрд╛ - рдлрд┐рд░ рдЖрдк рдЙрдиреНрд╣реЗрдВ рдПрдХреНрд╕реЗрд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рдмрд╛рдж рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ