1.建立结构
java包
utils 工具层 entity 实体类 dao(impl 实现包 ) jdbc(访问数据层) 全称为data access object,属于一种比较底层,比较基础的操作,具体到对于某个表、某个实体的增删改查 service(impl 实现包 ) 业务逻辑层 被称为服务,肯定是相比之下比较高层次的一层结构,相当于将几种操作封装起来 servlet servlet
Service是业务层,Dao是数据访问层,这样的分层是基于MVC架构来说的。
具体起来,Dao的作用是封装对数据库的访问:增删改查,不涉及业务逻辑,只是达到按某个条件获得指定数据的要求; 而Service,则是专注业务逻辑,对于其中需要的数据库操作,都通过Dao去实现。
简单来说就是Dao层是底层,具体到某一张表的增删查改,可以理解为有多少张表就有多少个Dao层,而Service成可以理解为是Dao层的 “上司”,通过Service层来控制Dao层。
resources层
db.properties
url=jdbc:mysql://localhost:3306/school username=root password=1998929jia driver=com.mysql.jdbc.Driver
web层
JSP,HTML文件
2.导入依赖
<dependencies> <dependency> <groupId>org.junit.jupiter</groupId> <artifactId>junit-jupiter-api</artifactId> <version>5.6.2</version> </dependency> <!--数据库--> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.30</version> </dependency> <!--通用增删改查的工具类依赖--> <!-- https://mvnrepository.com/artifact/commons-dbutils/commons-dbutils --> <dependency> <groupId>commons-dbutils</groupId> <artifactId>commons-dbutils</artifactId> <version>1.6</version> </dependency> <!--jstl 页面使用 servlet--> <!-- https://mvnrepository.com/artifact/javax.servlet/jstl --> <dependency> <groupId>javax.servlet</groupId> <artifactId>jstl</artifactId> <version>1.2</version> </dependency> <!--连接池--> <!-- https://mvnrepository.com/artifact/com.alibaba/druid --> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.1.9</version> </dependency> </dependencies>
3.链接数据库
3.1编写JDBCUtils类
public class JDBCUtils { //DruidDataSource数据连接池 private static DruidDataSource dataSource; static { Properties properties=new Properties(); //读取配置文件 InputStream inputStream= JDBCUtils.class.getClassLoader().getResourceAsStream("db.properties"); //从流中加载数据 try { //导入 properties.load(inputStream); //创建 数据库连接池 dataSource=(DruidDataSource) DruidDataSourceFactory.createDataSource(properties); } catch (Exception e) { e.printStackTrace(); } } /** * 获取数据库连接池的连接 * @return 如果返回null,说明获取连接失败<br/>有值就是获取连接成功 */ public static Connection getConnection(){ Connection conn=null; try { conn=dataSource.getConnection(); } catch (SQLException e) { e.printStackTrace(); } return conn; } public static void closeConn(Connection connection){ if (connection!=null){ try { connection.close(); } catch (SQLException e) { e.printStackTrace(); } } } }
4.编写dao层
4.1 BaseDao类
public class BaseDao { //它是由DBUtils包提供的一个工具类,需要引入 commons-dbutils 依赖。 //它与JdbcTemplate功能类似,该类简单化了SQL查询 QueryRunner runner=new QueryRunner(); /*通用的增删改的方法*/ public int update(String sql,Object...args){