表白墙再升级(MySQL实现持久化)
文章目录
- 【JavaEE】表白墙再升级(MySQL实现持久化)
- 1. 后端引入JDBC的依赖
- 2. 建库建表
- 3. 编写数据库代码(JDBC)
- 3.1 doGet方法改写
- 3.1.1 构建本地数据源
- 3.1.2 用本地数据源构造连接器
- 3.1.3 连接器将sql语句转化为“蓄势待发的状态”
- 3.1.4 一触即发!
- 3.2 doPost方法
- 3.2.1 构建本地数据源并构造连接器
- 3.2.2 Love对象转化为sql语句
- 3.2.3 用Love对象的属性将通配符替换掉
- 3.2.4 一触即发!
- 4. 测试以及小结
在最初的表白墙版本中,页面已刷新,“甜言蜜语”就会丢失:
而在第二版本的表白墙,我们实现了页面刷新,“甜言蜜语”不会丢失,但是服务器刷新,“甜言蜜语”也会丢失:
而这第三版本的表白墙,我们通过MySQL实现持久化,紧接着就是我们本篇文章了!
有了依赖,才能使用JDBC~
我选择的是5.1.49,复制依赖~
粘贴到后端pom.xml里
必须得用数据库和数据表才行呀
感兴趣的可以依照以下写法(模板)去实现1操作:
建表:
jdbc:mysql://127.0.0.1:3306/Loves/characterEncoding=utf8&useSSL=false
Connection connection = dataSource.getConnection();
String sql = "select * from message;";
PreparedStatement preparedStatement = connection.prepareStatement(sql);
给Love类添加构造方法:
class Love {
public String from;
public String to;
public String love;
@Override
public String toString() {
return "Love{" +
"from='" + from + '\'' +
", to='" + to + '\'' +
", love='" + love + '\'' +
'}';
}
public Love() {
//没有这个一定不行!!!
//因为后续json构建Love对象需要用到无参的构造方法
}
public Love(String from, String to, String love) {
this.from = from;
this.to = to;
this.love = love;
}
}
List<Love> list = new ArrayList<>();
while(set.next()) {
String from = set.getString("from");
String to = set.getString("to");
String love = set.getString("love");
list.add(new Love(from, to, love));
}
set.close();
preparedStatement.close();
connection.close();
return list;
DataSource dataSource = new MysqlDataSource();
((MysqlDataSource)dataSource).setUrl("jdbc:mysql://127.0.0.1:3306/Loves/characterEncoding=utf8&useSSL=false");
((MysqlDataSource)dataSource).setUser("root");
((MysqlDataSource)dataSource).setPassword("mmsszsd666");//这是俺的微信号,欢迎添加,相互学习!
Connection connection = dataSource.getConnection();
服务器跑异常了!
- 经典错误:
String sql = "insert into message values(?, ?, ?);";
PreparedStatement preparedStatement = connection.prepareStatement(sql);
preparedStatement.setString(1, love.from);
preparedStatement.setString(2, love.to);
preparedStatement.setString(3, love.love);
preparedStatement.executeUpdate();
preparedStatement.close();
connection.close();
启动服务器,打开客户端:
- 可能是调用doXXX的方法里没有throws这个异常,所以用catch比较合适
输入测试:
- 可能是你的DataSource和Connection是jdbc的,我们要的是java的,换一换~
- 可能是你Love的无参构造方法没有定义
- 可能是你sql语句有误,或者单词拼写错误…
用连着电脑热点的手机测试:
刷新浏览器,刷新服务器测试:
通过上述代码,我们已经完成了一个简单的网站了!
而我们写更复杂的网站,都依靠这一样的逻辑:
文章到此结束!谢谢观看
可以叫我 小马,我可能写的不好或者有错误,但是一起加油鸭!表白墙后续会再次优化(如登录与注册,“甜言蜜语”的显示优化…),敬请期待!