初识mango实现crud操作

基础知识

mango是一个极速分布式ORM框架。

ORM,即Object-Relational Mapping(对象关系映射),它的作用是在关系型数据库和业务实体对象之间作一个映射,这样,我们在具体的操作业务对象的时候,就不需要再去和复杂的SQL语句打交道,只需简单的操作对象的属性和方法。

mango的特性:

  1. 具有超高的性能,它的响应速度接近直接使用JDBC
  2. 采用接口与注解的形式定义DAO层,完美结合DB与cache操作
  3. 支持动态SQL,可以构造任意复杂的sql语句
  4. 支持多数据源,分库、分表、事务
  5. 提供拦截器功能,利用拦截器可以为mango框架扩展各种自定义的插件
  6. 具有“”函数调用功能,能将任意复杂的对象,映射到数据库表中
  7. 高效详细的实时统计系统,方便开发者随时了解自己的系统
  8. 独立jar包,不依赖其它jar包
  9. 提供便捷的spring插件,与spring无缝集成

mango的使用流程

1.添加依赖

<!--引入mango的依赖-->
<dependency>
    <groupId>org.jfaster</groupId>
    <artifactId>mango</artifactId>
    <version>1.5.3</version>
</dependency>

2.构造数据源并初始化mango对象

//1.mango框架对java标准数据源 javax.sql.DataSource 进行了简单实现,所以这里构造数据源不需要引入第三方jar包。
import org.jfaster.mango.datasource.DriverManagerDataSource;
//定义数据源
String driverClassName = "com.mysql.cj.jdbc.Driver";//驱动程序类名,这里使用MySQL进行演示
String url = "jdbc:mysql://localhost:3306/studyMango";
String username = "root";
String passWord = "123456";
DataSource ds = new DriverManagerDataSource(driverClassName, url, username, passWord);
//使用数据源初始化mango
Mango mango =  Mango.newInstance(ds);

3、框架的基本操作(crud)

更新操作支持四种类型的返回值:

  • 1、void:不返回值
  • 2、int:返回有多少行数据受到了影响
  • 3、long:返回有多少行数据受到了影响
  • 4、boolean:false表示没有数据受到影响,true表示有一到多行数据受到影响

批量更新的输入只能有一个参数,参数的类型必须是List或Set或Array。

批量更新的输出支持三种类型的返回值:

  • 1、void:不返回值
  • 2、int:返回累计有多少行数据受到了影响
  • 3、int[]:返回每条更新语句影响到了多少行数据

4.参数绑定方式(接口中参数绑定到SQL的指定位置)

  • 序号绑定:将接口参数的序号绑定到SQL指定的位置中。

@SQL("insert into #table(book_name, book_counts, detail) values (:1,:2,:3)")
void addBook(String name,Integer count, String detail);
  • 重命名绑定:可以使用注解@Rename对参数进行重命名绑定

@SQL("insert into #table(book_name, book_counts, detail) values (:name,:count,:detail)")
void addBook(@Rename("name") String bookName, @Rename("count") Integer count, @Rename("detail") String detail);
  • 列表参数绑定:在SQL中使用in操作的时候,我们会使用到列表参数绑定。

@SQL("select * from #table where book_id in (:1)")
List<Books> getByIds(List<Integer> ids);

需要注意的是, in (:1) 中的参数必须是List或Set或Array,同时返回参数也必须是List或Set或Array。

  • 属性绑定:当接口参数传入的是自定义对象时,我们可以使用属性绑定

@SQL("insert into #table(book_name, book_counts, detail) values(:1.bookName, :1.bookCounts, :1.detail)")
void addBook(Books books);

需要注意的是,自定义实体类的属性必须具有get方法

  • 属性自动配置

@SQL("insert into #table(book_name, book_counts, detail) values(:bookName, :bookCounts, :detail)")
void addBook(Books books);

代码演示(以查询所有为例)

1.构建表结构

DROP TABLE IF EXISTS `books`;
CREATE TABLE `books` (
  `book_id` int(11) NOT NULL AUTO_INCREMENT,
  `book_name` varchar(255) DEFAULT NULL,
  `book_counts` int(11) DEFAULT NULL,
  `detail` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`book_id`)
) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8;
​
INSERT INTO `books` VALUES ('1', 'java基础', '500', '略');
INSERT INTO `books` VALUES ('2', 'springboot框架', '50', '无');

2.添加pom依赖

<dependencies>
    <!--引入mango的依赖-->
    <dependency>
        <groupId>org.jfaster</groupId>
        <artifactId>mango</artifactId>
        <version>1.5.3</version>
    </dependency>
    <!--引入MySQL依赖-->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
    </dependency>
​
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-web</artifactId>
        <version>5.3.20</version>
    </dependency>
</dependencies>

3.构建实体类

/**
 * @Auther: zzx
 * @Date: 2022/9/19 10:11
 * @Description:
 */
@Data
public class Books implements Serializable {
    @ID
    private Integer bookID;
    private String bookName;
    private Integer bookCounts;
    private String detail;
}

4.构建dao接口

/**
 * @Auther: zzx
 * @Date: 2022/9/19 10:10
 * @Description:
 */
@DB(table = "books")
public interface bookDao extends CrudDao<Books,Long> {
    String COLUMNS = "bookID, bookName, bookCounts, detail";
    @SQL("select " + COLUMNS + " from #table")
    List<Books> finAllBooks();
}

5.在测试类中构造数据源并初始化mango对象

/**
​
- @Auther: zzx
- @Date: 2022/9/19 13:38
- @Description:
  */
public class setBook {
  //定义数据源
  String driverClassName = "com.mysql.cj.jdbc.Driver";
  String url = "jdbc:mysql://localhost:3306/studyMango";
  String username = "root";
  String passWord = "123456";
  DataSource ds = new DriverManagerDataSource(driverClassName, url, username, passWord);
  //使用数据源初始化mango
  Mango mango =  Mango.newInstance(ds);
​
    //查询所有方法
    public List findAll(){
        bookDao bookDao = mango.create(bookDao.class);
        List<Books> books = bookDao.finAllBooks();
        return books;
    }
​
}

6.测试类

public class bookTest {
    
    public static void main(String[] args) {
        bookTest bookController = new bookTest();
        List all = bookController.findAll();
        System.out.println(all.toString());
    }
}

框架提供的crud方法

增:批量增和单条增

删:

改:

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值