Problem with logic of book store application in java EE

I’m making book store and so far i only have 3 tables.

Book: - id:(int) primary key, autoincrement, not null, - title:(varchar) not null, - price: (decimal) not null  Cart: -id:(int) primary key, autoincrement, not null  

and

Article: - id:(int) primary key, autoincrement, not null, - title:(varchar) not null, - price: (decimal) not null, - cart_id:(int) foreign key referencing cart 

For me it’s logical when user clicks on "add to cart" button to check if cart already exist, if exist i will return that cart if not create new. And user will put multiple articles in one cart. This is my class for inserting Cart in db:

public class CartDAO {  private static DataSource dataSource; private static int autoIncKey = -1;  public static void insertCart() {     Connection conn = null;     ResultSet rs = null;          try {         InitialContext ctx = new InitialContext();         dataSource = (DataSource) ctx.lookup("jdbc/NemkeDB");         conn = dataSource.getConnection();                      String insert = "insert into cart() values()";             PreparedStatement ps = conn.prepareStatement(insert, RETURN_GENERATED_KEYS);             ps.executeUpdate();             rs = ps.getGeneratedKeys();             if (rs.next()) {                 autoIncKeyFromApi = rs.getInt(1);             } catch(Exception e){             System.err.println(e);            } 

In CartDAO i want to have that check, something like this:

if(cart == null){ 'insert into cart()values()' }else{ // if cart exist i want to return that cart id} 

i don’t know how to do that with GeneratedKeys.

Below is the class where i’m passing the id from cart in ArticleDAO

public class ArticleDAO {  private static DataSource dataSource; private static ArrayList<Article> articleList = new ArrayList<>();  public static void insertArticle(String title, double price) {     Connection conn = null;     Statement st = null;     ResultSet rs = null;     try {         InitialContext ctx = new InitialContext();         dataSource = (DataSource) ctx.lookup("jdbc/NemkeDB");         conn = dataSource.getConnection();         st = conn.createStatement();         CartDAO.insertCart(); // Here is where i call(insert) Cart         String insert = "insert into article(title,price,cart_id) values(?,?,?)";         PreparedStatement ps = conn.prepareStatement(insert);         ps.setString(1, title);          ps.setDouble(2, price);;         ps.setInt(3, CartDAO.getAutoIncKey()); // Here i pass that id         ps.executeUpdate();         rs = st.executeQuery("select * from artical");         while (rs.next()) {             String articalTitle = rs.getString("title");             double articalPrice = rs.getDouble("price");             Artical artical = new Artical(articalTitle, articalPrice);             articalList.add(artical);         }     } catch (Exception e) {         System.err.println(e);     } 

My question is what is the proper way to make that check? Maybe with session? And how to return id if cart exist? I know it’s a long question but i think it’s easy for anyone with any working experience with java. Thanks everyone who invested time to read and reply this problem.

Add Comment
0 Answer(s)

Your Answer

By posting your answer, you agree to the privacy policy and terms of service.