easy-mybatis

easy-mybatis

介绍

easy-mybatis是一款便捷的mybatis工具。那么,为什么要用easy-mybatis呢,它的便捷性体现在哪里?想想两个问题:

1. mybatis本身存在什么问题?

mybatis本身需要编写大量的xml(不同意?想想多表联查...)。

2. 比较流行的mybatisplus等mybatis产品解决了什么问题?

mybatisplus等mybatis产品解决的是对单表的操作,并没有根治多表联查疯狂配xml的烦恼。

所以,就有了引入easy-mybatis的必要。easy-mybatis是一个基于切面的mybatis产品。所以,它可以和任意的其他类型的mybatis产品兼容,请放心使用!

使用说明

Maven引用(点击 最新版本地址 查看最新版本)

<dependency>
    <groupId>io.github.xiaoyudeguang</groupId>
    <artifactId>easy-mybatis</artifactId>
    <version>3.1.8-RELEASE</version>
</dependency>

实体类编写

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.zlyx.easycore.annotations.Desc;
import com.zlyx.easymybatis.annotations.ForeignKey;
import com.zlyx.easyweb.web.annotations.TableBean;

@TableBean(todo = { "" }, value = "db_person", alias = "per")
@TableName("db_person")
public class Person {

	@Desc(value = { "用户id" })
	@TableId("person_id") 
	private Long id;
 
        @Desc(value = { "用户姓名" })
	@TableField(value = "name")
	private String name;
	
	@Desc(value = { "部门名称" })
        @ForeignKey(key = "name", table = Dept.class)
	@TableField(value = "dept_name")
	private String deptName;
	
        @Desc(value = "部门实体对象")
	private Dept dept;
	
        ... 其他部分略(get和set方法)...
}

mapper接口编写

你可以像之前使用mybatis一样声明mapper接口,然后编写普通的mybatis方法;也可以继续像以前一样集成mybatisplus等产品。

import com.zlyx.easymybatis.abstraccts.AbstractMapper;
import com.zlyx.easymybatis.annotations.EasySelect;
import com.zlyx.easymybatis.annotations.Condition;
import com.zlyx.easymybatis.annotations.Table;
import com.zlyx.easymybatis.utils.Page;

@Mapper
public interface PersonMapper extends AbstractMapper<Person> {

	/**
	 * 一个普通的mybatis方法
	 */
	@Select(value = { "select * from swh_person" })
	public List<Person> testMybatis(String name);

	/**
	 * EasyMybatis多表联查方法
	 */
	@EasySelect(tableName = "db_person", results = { Table.FILED_ALL }, tables = {
			@Table(tableName = "db_dept") }, conditions = { @Condition(fields = { "name" }, tableName = "person") })
	public List<Person> testSelect(String name);

	/**
	 * EasyMybatis多表联查分页方法
	 */
	@EasySelect(tableName = "db_person", results = {Table.FILED_ALL},
			    tables = {
			    		@Table(tableName = "db_dept")
			    },
			    conditions = {
			    		@Condition(fields = { "name" }, tableName = "db_person")
			    }
			    page = true)
	 public Page<Person> testPage(String name, int pageNum, int pageSize);
}

testSelect方法,会被直接翻译为sql语句: select per.id as per_id, per.name = per_name, per.dept_name as per_deptName.... left join db_dept de on de.dept_name = per.dept_name from db_person per where per.name = "参数值"

testPage方法,会自动完成sql的生成和分页查询,是不是超简单?

如果你希望得到json类型的返回结果,只需要将方法中的实体类Person替换为JSONObject即可(fastjson)。

至于结果集映射,你就完全不需要关心了。easy-mybatis已经在结果集拦截器中都组装完成了,完全没有xml配置的烦恼。 

学习笔记——mybatis的起步(1) 1.什么是框架? 他是我们软件开发中的一套解决方案,不同的框架解决的是不同的问题。 使用框架的好处: 框架封装了很多的细节,使开发者可以使用极简的方式实现功能。大大提高开发效率。 2.三层架构 表现层: 是用于展示数据的 业务层: 是处理业务需求的 持久层: 是和数据库交互的 3.持久层的技术解决方案 JDBC技术: Connection PreparedStatement ResultSet Spring的JdbcTemplate: Spring中对jdbc的简单封装 Apache的DBUtils: 它和Spring的JdbcTemplate很想,也是对Jdbc的简单封装 以上这些都不是框架 JDBC是规范 Spring的JdbcTemplate和Apache的DBUtils都只是工具类 4.mybatis的概述 mybatis是一个持久层框架,用java编写的。 它封装了jdbc操作的很多细节,开发者只需要关注sql语句本身,无需关注注册驱动,创建连接等繁杂过程 它使用了ORM思想实现了结果集的封装。 ORM: Object Relational Mappinng 对象关系映射 简单的说: 就是把数据库表和实体类及实体类的属性对应起来 让我们可以操作实体类就实现操作数据库表。 user User id userId user_name userName 今天我们需要做到 实体类中的属性和数据库表的字段名称保持一致 user User id id user_name user_name 5.mybatis的入门 mybatis的环境搭建 第一步:创建maven工程并导入坐标 第二步:创建实体类和dao接口 第三步:创建Mybatis的主配置文件 sqlMapConfig.xml 第四步:创建映射配置文件 IUserDao.xml 环境搭建的注意事项: 第一个:创建IUserDao.xml 和 IUserDao.java 时名称是为了和我们之前的只是保持一致。 在Mybatis中它把持久层的接口名称和映射文件叫做:Mapper 所以:IUserDao 和 IUsrMapper 是一样的 第二个:在idea中创建目录的时候,它的包是不一样的 包在创建时:com.itheima.dao它是三级结构 目录在创建时:com.itheima.dao是一级目录 第三个:mybatis的映射配置文件位置必须和到接口的包结构相同 第四个:映射配置文件的mapper标签namespace属性的取值必须是dao接口的全限定类名 第五个:映射配置文件的操作配置(select),id属性的取值必须是dao接口的方法名 当我们遵从了第三、四、五之后,我们在开发中就无需再写dao的实现了。 mybatis的入门案列
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值