随着技术的不断进步,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 的使用方法后,开发效率会得到很大的提升。