在 Java 中,DAO(Data Access Object) 通常用于封装对数据库的访问。结合 注解(Annotation),可以大大简化 DAO 的编写,常见于 Spring + MyBatis / JPA(Hibernate) 等框架。
下面按常见框架分别说明 DAO 注解的使用方式。
使用 @Mapper 或 @Repository
@Mapper
public interface UserDao {
@Select("SELECT * FROM user WHERE id = #{id}")
User getUserById(Integer id);
@Insert("INSERT INTO user(name, age) VALUES(#{name}, #{age})")
int addUser(User user);
@Update("UPDATE user SET name=#{name} WHERE id=#{id}")
int updateUser(User user);
@Delete("DELETE FROM user WHERE id=#{id}")
int deleteUser(Integer id);
}
✅ 说明:
@Mapper:MyBatis 扫描接口生成实现@Select @Insert @Update @Delete#{}:防止 SQL 注入@SpringBootApplication
@MapperScan("com.example.dao")
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class);
}
}
@Entity
@Table(name = "user")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
@Column(name = "name")
private String name;
}
@Repository
public interface UserDao extends JpaRepository<User, Integer> {
List<User> findByName(String name);
}
✅ 常用注解:
@Entity:实体类@Table:表名@Id:主键@Repository:DAO 层组件@Repository
public class UserDaoImpl implements UserDao {
@Autowired
private JdbcTemplate jdbcTemplate;
}
常用注解:
@Repository:DAO 层@Autowired:依赖注入@Transactional:事务@Transactional
public void saveUser(User user) {
userDao.addUser(user);
}
| 框架 | DAO 注解 | SQL 方式 |
|---|---|---|
| MyBatis | @Mapper |
注解 / XML |
| JPA | @Repository |
方法名自动生成 |
| Spring | @Repository |
JDBC / Template |
如果你有 具体框架(MyBatis / JPA / 原生 JDBC) 或 示例代码,我可以给你更精准的写法。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。