目录
前言MyBatis简介快速入门映射文件sql片段与resultMapMyBatis的增删改查1.添加操作2.修改操作3.删除操作前言
传统的JDBC操作数据库都是通过写一个java类,在类中调用接口下的API执行相应的SQL,存在大量的硬编码。试想,若是开发一个日活度高的系统,那SQL的变动的非常大,就要我们去相应的类中修改Java代码,特别是进行查询操作时需要我们手动将结果集封装到实体类中,造成后期维护压力山大
总而言之,缺点多多
MyBatis简介
mybatis是一个优秀的基于java的持久层框架,它内部封装了jdbc,使开发者只需要关注sql语句本身,而不需要花费精力去处理加载驱动、创建连接、创建statement等繁杂的过程。mybatis通过xml或注解的方式将要执行的各种statement配置起来,并通过java对象和statement中sql的动态参数进行映射生成最终执行的sql语句
(资料图片仅供参考)
最后mybatis框架执行sql并将结果映射为java对象并返回。采用ORM思想解决了实体和数据库映射的问题,对jdbc进行了封装,屏蔽了jdbc api底层访问细节,使我们不用与jdbc api打交道,就可以完成对数据库的持久化操作
快速入门
下面的配置文件在MyBatis的官网里都有,自己去复制过来粘贴到IDEA中更改对应的信息即可,我写出来的目的是为了保证文章的顺序流畅(大家莫烦~)
1.导入MyBatis相关坐标
mysql mysql-connector-java 8.0.29 org.mybatis mybatis 3.5.10
2.数据库中建立相应的数据表,并编写一个表中字段对应的(Brand)实体类
3.编写BrandMapper映射文件
//Mapper代理开发: //定义与SQL映射文件同名的Mapper接口, //并且将Mapper接口和SQL映射文件放置在同一目录下 //设置SQL映射文件的namespace属性为Mapper接口全限定名 //在Mapper接口中定义方法,方法名就是SQL映射文件中sql语句的id,并保持参数类型和返回值类型一致
4.编写封装查询结果对象的接口
public interface BrandMapper { public ListselAll(); }
5编写Mybatis核心配置文件
6.编写测试类,通过MyBatis实现查询功能
public class MybatisDemo3 { public static void main(String[] args) throws IOException { //加载mybatis的核心配置文件,获取sqlSessionFactory String resource = "mybatis-config.xml"; InputStream inputStream = Resources.getResourceAsStream(resource); //获取sqlSession工厂对象 SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); //获取sqlSession对象,来执行sql SqlSession sqlSession = sqlSessionFactory.openSession(); //获取BrandMapper接口的代理对象 BrandMapper brandMapper = sqlSession.getMapper(BrandMapper.class); Listbrands =brandMapper.selAll(); System.out.println(brands); //释放资源 sqlSession.close(); } }
一顿操作下来好像也没有简单多少,其实不然,初次编写的配置文件都是持久化的属性,以后的变更只需要在接口里写出相应的方法即可,避免了大量的硬编码
映射文件
sql片段与resultMap
在进行查询操作时,为了解决SQL表中字段名称和实体类中的属性名不一致导致的不能自动封装(查出为null)的问题,我们可以通过"起别名"也可以通过SQL片段来对查询的数据进行定义修改,统一重复的操作
比如,在遇到表中的字段名称不符合实体类中驼峰命名的规范时、要对查询的数据进行范围限定时都可以通过sql片段来实现,就像这样:
bracd_name as bracdName,company_name as compantName
通过SQL片段实现了所谓的范围查询,单表重复起别名工作的统一,但是针对多次不同的查询范围我们需要多次定义SQL片段(不灵活),这也不是一件简单的事
于是resultMap帮我们解决了这个问题:
通过id来设置唯一标识,type来指定映射类型,把表的列名column和实体类的属性名通过result进行映射,在我们的SQL中直接查询所有即可,进行不同的查询操作也不需要重复定义片段或者取别名,就变得十分简单
MyBatis的增删改查
1.添加操作
编写Mapper接口,写出添加的方法:
void add(Brand brand);
配置SQL映射文件:
insert into mybatis(bracd_name,company_name,ordered,description,status) values (#{bracdName},#{companyName},#{ordered},#{description},#{status});
执行方法:
SqlSession sqlSession = sqlSessionFactory.openSession(); BrandMapper brandMapper = sqlSession.getMapper(BrandMapper.class); brandMapper.add(brand);
2.修改操作
编写Mapper接口,写出修改的方法:
void update(Brand brand);
编写映射文件:
update mybatis set bracd_name=#{bracdName},company_name=#{companyName},ordered=#{ordered},description=#{description},status=#{status}
执行方法:
SqlSession sqlSession = sqlSessionFactory.openSession(); BrandMapper brandMapper = sqlSession.getMapper(BrandMapper.class); int count= brandMapper.update(brand);
3.删除操作
编写Mapper接口,写出删除方法:
void deleteid(Brand brand);
编写映射文件:
delete from mybatis where id=#{id}
执行方法:
SqlSession sqlSession = sqlSessionFactory.openSession(); BrandMapper brandMapper = sqlSession.getMapper(BrandMapper.class); int count= brandMapper.deleteid(id);
以上就是对MyBtias的初识,后面还有很多高级功能等待整理
到此这篇关于MyBatisPlus框架简介及入门案例详解的文章就介绍到这了,更多相关MyBatisPlus案例内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
X 关闭
X 关闭
- 1AMD实现连续8个季度的增长 季度营收首次突破60亿美元利润更是翻倍
- 2转转集团发布2022年二季度手机行情报告:二手市场“飘香”
- 3充电宝100Wh等于多少毫安?铁路旅客禁止、限制携带和托运物品目录
- 4好消息!京东与腾讯续签三年战略合作协议 加强技术创新与供应链服务
- 5名创优品拟通过香港IPO全球发售4100万股 全球发售所得款项有什么用处?
- 6亚马逊云科技成立量子网络中心致力解决量子计算领域的挑战
- 7京东绿色建材线上平台上线 新增用户70%来自下沉市场
- 8网红淘品牌“七格格”chuu在北京又开一家店 潮人新宠chuu能红多久
- 9市场竞争加剧,有车企因经营不善出现破产、退网、退市
- 10北京市市场监管局为企业纾困减负保护经济韧性