Mybatis一些基本问题

在这里插入图片描述

1.什么是mybatis?

Mybatis 是⼀个半 ORM(对象关系映射)框架,它内部封装了 JDBC,开发时只需要关注 SQL
语句本⾝,不需要花费精⼒去处理加载驱动、创建连接、创建stamement等繁杂的过程。程序员直
接编写原⽣态 sql,可以严格控制sql执⾏性能,灵活度⾼。
·Mybatis 可以使⽤ XML 或注解来配置和映射原⽣信息,将 POJO 映射成数据库中的记录,避免
了⼏乎所有的 JDBC 代码和⼿动设置参数以及获取结果集。

2.Mybatis使用过程

MyBatis基本使⽤的过程⼤概可以分为这么⼏步:在这里插入图片描述1)创建SqlSessionFactory

可以从配置或者直接编码来创建SqlSessionFactory

String resource = "org/mybatis/example/mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new sqlSessionFactoryBuilder().build(inputStream)

2)通过SqlSessionFactory创建SqlSessionFactory(会话)可以理解为程序和数据库之间的桥梁

SqlSession session = SqlSessionFactory.openSession();

3)通过sqlsession执⾏数据库操作
可以通过 Sqlsession 实例来直接执⾏已映射的 SQL 语句:

Blog blog = (Blog)session.selectOne('org.mybatis.example.BlogMapper.selectBlog',101);

更常⽤的⽅式是先获取Mapper(映射),然后再执⾏SQL语句:

BlogMapper mapper = session.getMapper(BlogMapper.class);
Blog blog = mapper.selectBlog(101);

4)调⽤session.commit() 提交事务
如果是更新、删除语句,我们还需要提交⼀下事务。

5)调⽤session.close() 关闭会话

3.在mapper中如何传递多个参数

在这里插入图片描述
⽅法1:顺序传参法

public UserselectUser (String name, int deptId) ;
<selectid = "selectUser "resultMap = "UserResultMap" >
select * from user
where user_name = #{0} and dept_id = #{1}
< /select>

\ # { } ⾥⾯的数字代表传⼊参数的顺序。
这种⽅法不建议使⽤,s q l层表达不直观,且⼀旦顺序调整容易出错。

⽅法2:@Param注解传参法

public UserselectUser(@Param( "userName" ) String name, int @Param( " deptId " ) deptId ) ;
<select id = "selectUser" resultMap = "UserResultMap" >
select * from user
where user_name = # {userName} and dept_id = #{deptId}
</select>

⽅法3:Map传参法

public Userselect User (Map<String , Object > params) ;
<selectid = "selectUser" parameterType = "java.util.Map " resultMap = "UserResultMap " >
select * from user
where user_name = # {userName} and dept_id = #{deptId}
</select>

\ # { } ⾥⾯的名称对应的是Map⾥⾯的key名称。
这种⽅法适合传递多个参数,且参数易变能灵活传递的情况。

⽅法4:Java Bean传参法

public User selectUser(User user);
<select id = "selectUser " parameterType = "com.jourwon.pojo.User"
resultMap= " UserResultMap " >
select * fromuser
where user_name= # {userName} and dept_id= # {deptId}
</select>

\ # { } ⾥⾯的名称对应的是User类⾥⾯的成员属性。
这种⽅法直观,需要建⼀个实体类,扩展不容易,需要加属性,但代码可读性强,业务逻辑处理⽅
便,推荐使⽤。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值