minidao 框架深入探究
随着技术的不断进步,JavaWeb 开发已经成为了一种热门的技术趋势。在 JavaWeb 开发中,访问数据库是一项必不可少的工作。minidao 是一款轻量级的 ORM 框架,它可以帮助我们更加方便地完成数据库的操作。下面将对 minidao 框架进行深入探究。
1、minidao 简介
minidao 是基于 Spring 微内核的 ORM 框架,主要使用了两种设计模式——Spring BeanFactory 设计模式和后处理器模式。它提供了一种方便、简单的方式访问数据库,也是一个轻量的 ORM 框架。 minidao 提供了多种数据库支持,目前支持的数据库包括Mysql、Postgresql、Oracle、SqlServer等。同时,它还提供了非常实用的注解工具类,可以在编译期完成 SQL 语句的拼装,并且支持多种分页方式。
1.1 minidao 特点
1)、简单易用,只需要在 POJO 中添加注解就可以完成 CRUD 操作。 2)、在 DAO 接口中使用注解方式完成 SQL 语句拼装。 3)、参数绑定和结果集映射实现了降低数据库访问的开销。 4)、支持多重数据源访问。 5)、支持多种分页方式,如 Oracle、Mysql、Postgresql 等分页方式。 6)、支持 SpringBoot 快速集成。
1.2 minidao 使用限制
1)、兼容性:最低兼容 Java1.7 以上。 2)、minidao 不支持存储过程、函数、触发器等操作,也不支持将一个逻辑操作分解为若干子操作后再进行执行。
2、minidao 使用示例
2.1 添加 minidao 依赖
在 pom.xml
文件中添加以下依赖:
<dependency>
<groupId>com.github.drinkjava2</groupId>
<artifactId>mini-dao</artifactId>
<version>3.0.0</version>
</dependency>
2.2 配置数据源
在 Spring 配置文件中,配置数据源并引入 minidao:
<!-- 定义数据源 -->
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" destroy-method="close">
<property name="driverClassName" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/test" />
<property name="username" value="root" />
<property name="password" value="123456" />
</bean>
<!-- 配置 minidao -->
<bean id="miniDao" class="org.nutz.dao.impl.NutDao">
<constructor-arg ref="dataSource" />
</bean>
2.3 编写 DAO 层代码
在 DAO 接口中使用相关注解,进行 SQL 语句的拼装工作。
public interface UserDao {
// 添加用户
@Sql("insert into user(username,password) values(@user.username,@user.password)")
@Transcation
void addUser(@Param("user") User user);
// 删除用户
@Sql("delete from user where id=@id")
@Transcation
void deleteUser(@Param("id") int id);
// 查询所有用户
@Sql("select * from user")
List<User> findAll();
// 根据 ID 查询用户
@Sql("select * from user where id=@id")
User findById(@Param("id") int id);
// 更新用户
@Sql("update user set username=@user.username,password=@user.password where id=@user.id")
@Transcation
void updateUser(@Param("user") User user);
}
2.4 编写 Service 层代码
在 Service 层中进行事务管理:
@Service
public class UserServiceImpl implements UserService {
@Autowired
private UserDao userDao;
@Override
public void addUser(User user) {
userDao.addUser(user);
}
@Override
public void deleteUser(int id) {
userDao.deleteUser(id);
}
@Override
public List<User> findAll() {
return userDao.findAll();
}
@Override
public User findById(int id) {
return userDao.findById(id);
}
@Override
public void updateUser(User user) {
userDao.updateUser(user);
}
}
2.5 配置 Mybatis 分页插件
minidao 使用 Mybatis 分页插件进行分页,首先需要在 pom.xml
文件中添加插件依赖:
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
</dependency>
然后在 Spring 配置文件中添加 Mybatis 配置:
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="mapperLocations" value="classpath*:mapper/*.xml" />
<!-- 添加 Mybatis 分页插件配置 -->
<property name="plugins">
<array>
<bean class="com.github.pagehelper.PageInterceptor">
<property name="properties">
<props>
<!-- 数据库方言 -->
<prop key="helperDialect">mysql</prop>
<!-- 分页合理化参数验证,默认为 true。如果设置为 true,pageNum<1 时会查询第一页,pageNum>pages(超过总数时),会查询最后一页。如果设置为 false,直接根据参数进行查询。 -->
<prop key="reasonable">true</prop>
<!-- 支持通过 Mapper 接口参数来传递分页参数 -->
<prop key="supportMethodsArguments">true</prop>
<!-- 默认通过 ThreadLocal 存储方法调用的分页参数,可以配置为每次调用时都传递参数。PageHelper.startPage(int pageNum,int pageSize,boolean count) 方法中的 count 参数即为配置的参数,true 时则会进行 count(1) 操作,消耗不少性能。 -->
<prop key="rowBoundsWithCount">true</prop>
</props>
</property>
</bean>
</array>
</property>
</bean>
2.6 使用分页插件进行分页
在 DAO 层代码中,使用 minidao 提供的 Pager
类进行分页操作。
public interface UserDao {
// 分页查询所有用户
@Sql("select * from user")
List<User> findAll(Pager pager);
}
在 Service 层代码中,调用 DAO 层方法进行分页查询操作。
@Service
public class UserServiceImpl implements UserService {
@Autowired
private UserDao userDao;
@Override
public List<User> findAll(int pageNum, int pageSize) {
Pager pager = Pager.create(pageNum, pageSize);
return userDao.findAll(pager);
}
}
3、总结
本文对 minidao 框架进行了深入的探究,介绍了其主要特点和使用方法。minidao 是一个非常方便、实用的 ORM 框架,可以帮助开发者们更加便捷地完成数据库操作。相信掌握了 minidao 的使用方法后,开发效率会得到很大的提升。