1.创建一个maven的java工程
2.引入依赖的jar包
<dependencies> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.2.8</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.30</version> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.24</version> </dependency> </dependencies>
3.创建数据源的属性文件
driverClassName=com.mysql.cj.jdbc.Driver url=jdbc:mysql://localhost:3306/1suo username=root password=12345678
上面的属性文件就是用来连接数据库的,换成自己的数据库就行了
4.创建Dbutil工具类
package com.ls.util;
import com.alibaba.druid.pool.DruidDataSourceFactory;
import com.mysql.cj.protocol.Resultset;
import javax.sql.DataSource;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Properties;
/**
* @program: shousichijiuceng
* @description:
* @author: 1suo
* @create: 2024-07-02 09:24
**/
public class DbUtil {
//数据源对象
private static DataSource dataSource;
//静态代码块 只执行一次
static {
try {
//创建一个属性对象
Properties properties =new Properties();
//加载属性文件
InputStream is=DbUtil.class.getClassLoader().getResourceAsStream("db.properties");
properties.load(is);
//获取连接池对象
dataSource= DruidDataSourceFactory.createDataSource(properties);
} catch (Exception e){
e.printStackTrace();;
}
}
//获取连接对象
public static Connection getConnection() throws Exception{
Connection conn=dataSource.getConnection();
return conn;
}
//释放资源
public static void closeAll(Connection conn, PreparedStatement ps, ResultSet rs){
if (rs!=null){
try {
rs.close();
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
if (ps !=null){
try {
ps.close();
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
if (conn!=null){
try {
conn.close();
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
}
}
5.实体类的创建
![](https://img-blog.csdnimg.cn/direct/003579cc7239440e81eb7ac1f5e5a0ad.png)
package com.ls.entity;
import java.io.Serializable;
import com.ls.annotation.TableField;
import com.ls.annotation.TableId;
import com.ls.annotation.TableName;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
*
* @TableName user
*/
@Data //简单来说就是简写了get,set方法
@NoArgsConstructor//无参构造
@AllArgsConstructor//有参构造
@TableName(value = "user")//这个就是自行创建的自定义注解 作用:为了为数据库的表名一致,如果是一致的则不用写,我这一致但也写了
public class User{
@TableId //用来找到主键
private Integer id;
private String account;
private String password;
private String tel;
@TableField(value = "true_name") //用来和数据库的列名一致,如果一致则不用写
private String trueName;
}
6.自定义注解
6.1 TableField:专门用于属性的注解
package com.ls.annotation;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
public @interface TableField {
String value();
}
6.2 TableId:专门用于找到主键
package com.ls.annotation;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.FIELD)
public @interface TableId {
String value() default "id";
}
6.3 TableName:专门用于得到表的名称
package com.ls.annotation;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
public @interface TableName {
String value();
}
7.创建对应实体类的Dao
注:只用来继承BaseDao
package com.ls.dao;
import com.ls.entity.User;
/**
* @program: shousichijiuceng
* @description:
* @author: 1suo
* @create: 2024-07-02 16:45
**/
public class UserDao extends BaseDao<User> {
}