下面是讲解Java的Spring框架中DAO数据访问对象的使用示例的完整攻略。
什么是DAO模式?
DAO,即Data Access Object(数据访问对象),是一种数据持久化技术的最常见的设计模式之一,用于将应用程序的业务逻辑和底层数据存储之间的交互从彼此分离。DAO模式的主要目的是提供一种通用的API来访问底层数据存储和操作数据对象。
什么是Spring框架中DAO?
在Spring框架中,DAO主要被用来访问和操作底层数据存储,包括关系数据库和NoSQL数据库。Spring框架的DAO模块为我们提供了一个可以轻松集成各种数据库的通用数据访问框架,而不必担心配置和管理连接池、连接管理等繁琐的操作。
下面是使用Spring框架中DAO的几个示例:
示例1:使用Hibernate实现DAO
Hibernate是一种最流行的ORM(对象关系映射)框架之一,它允许开发人员通过Java对象来访问数据库,而不必写SQL语句。使用Hibernate实现DAO模式的步骤如下:
- 在pom.xml文件中导入Hibernate和Spring的相关依赖:
<dependencies>
<!-- Hibernate ORM framework -->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>5.4.25.Final</version>
</dependency>
<!-- Spring Core -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>5.3.4</version>
</dependency>
<!-- Spring ORM -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-orm</artifactId>
<version>5.3.4</version>
</dependency>
</dependencies>
- 创建一个Hibernate会话工厂的Bean,用于创建Session对象,该对象用于与数据库进行交互:
<bean id="sessionFactory"
class="org.springframework.orm.hibernate5.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="packagesToScan" value="com.example.demo.entity"/>
<property name="hibernateProperties">
<props>
<prop key="hibernate.hbm2ddl.auto">create-drop</prop>
<prop key="hibernate.dialect">org.hibernate.dialect.H2Dialect</prop>
<prop key="hibernate.show_sql">true</prop>
</props>
</property>
</bean>
- 创建一个DAO接口,并在接口中定义需要实现的数据访问方法:
public interface UserDao {
public User getUserById(int id);
public void saveUser(User user);
}
- 创建一个实现DAO接口的类,并注解为Repository:
@Repository
public class UserDaoImpl implements UserDao {
@Autowired
private SessionFactory sessionFactory;
@Override
public User getUserById(int id) {
Session session = sessionFactory.getCurrentSession();
User user = session.get(User.class, id);
return user;
}
@Override
public void saveUser(User user) {
Session session = sessionFactory.getCurrentSession();
session.save(user);
}
}
- 在Spring配置文件中创建一个DAO类的Bean,用于在应用程序中访问该类的实例:
<bean id="userDao" class="com.example.demo.dao.UserDaoImpl"> </bean>
- 在应用程序中使用DAO:
@Controller
public class UserController {
@Autowired
private UserDao userDao;
@GetMapping("/user/{id}")
@ResponseBody
public User getUserById(@PathVariable int id) {
return userDao.getUserById(id);
}
@PostMapping("/user")
@ResponseBody
public String saveUser(@RequestBody User user) {
userDao.saveUser(user);
return "User saved successfully!";
}
}
示例2:使用MyBatis实现DAO
MyBatis是一种ORM框架,类似于Hibernate,但是MyBatis是基于SQL语句的,开发人员需要自己编写SQL语句。使用MyBatis实现DAO模式的步骤如下:
- 在pom.xml文件中导入MyBatis和Spring的相关依赖:
<dependencies>
<!-- MyBatis -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.6</version>
</dependency>
<!-- MyBatis-Spring -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>2.0.6</version>
</dependency>
<!-- Spring Core -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>5.3.4</version>
</dependency>
<!-- Spring JDBC -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>5.3.4</version>
</dependency>
</dependencies>
- 创建一个MyBatis的SqlSessionFactory的Bean:
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="org.h2.Driver"/>
<property name="url" value="jdbc:h2:mem:test"/>
<property name="username" value="sa"/>
<property name="password" value=""/>
</bean>
<bean id="sqlSessionFactory"
class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="mapperLocations"
value="classpath*:com/example/demo/mapper/*.xml"/>
</bean>
- 创建一个DAO接口,并在接口中定义需要实现的数据访问方法:
public interface UserDao {
public User getUserById(int id);
public void saveUser(User user);
}
- 创建一个MyBatis的Mapper文件,并在文件中编写需要实现的SQL语句:
<mapper namespace="com.example.demo.dao.UserDao">
<resultMap id="BaseResultMap" type="com.example.demo.entity.User">
<id column="id" jdbcType="INTEGER" property="id"/>
<result column="name" jdbcType="VARCHAR" property="name"/>
<result column="email" jdbcType="VARCHAR" property="email"/>
<result column="gender" jdbcType="INTEGER" property="gender"/>
<result column="created_time" jdbcType="TIMESTAMP" property="createdTime"/>
</resultMap>
<select id="getUserById" resultMap="BaseResultMap">
select * from user where id = #{id}
</select>
<insert id="saveUser" useGeneratedKeys="true" keyProperty="id">
insert into user(name, email, gender, created_time)
values(#{name}, #{email}, #{gender}, #{createdTime})
</insert>
</mapper>
- 在Spring配置文件中创建一个MapperScannerConfigurer的Bean,用于自动扫描和创建DAO接口和Mapper文件的关联关系:
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.example.demo.dao"/>
</bean>
- 在应用程序中使用DAO:
@Controller
public class UserController {
@Autowired
private UserDao userDao;
@GetMapping("/user/{id}")
@ResponseBody
public User getUserById(@PathVariable int id) {
return userDao.getUserById(id);
}
@PostMapping("/user")
@ResponseBody
public String saveUser(@RequestBody User user) {
userDao.saveUser(user);
return "User saved successfully!";
}
}
以上就是使用Java的Spring框架中DAO数据访问对象的示例,包括使用Hibernate和MyBatis实现DAO,希望对您有所帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java的Spring框架中DAO数据访问对象的使用示例 - Python技术站