mybatis基础知识(第一更)

1.parameterType

在映射文件中通过parameterType指定输入参数的类型

2.resultType

在映射文件中通过resultType指定输出结果类型

3.#{}和${}

#{}表示一个占位符
${}表示一个拼接符,会引用sql注入,所以不建议使用

4.selectOne 和 selectList

selectOne表示查询一条记录进行映射,如果使用selectOne可以实现,使用selectList也可以实现(List中只有一个对象)
selectList表示查询出一个列表(多条记录)进行映射,如果使用selectList查询多条记录

5. 添加用户

parameterType:指定输入参数类型是pojo(包括用户信息)
#{}指定pojo属性名,接收到pojo对象的属性值,mybatis通过OGNL获取对象属性值

<insert id="insertUser" parameterType="cn.xbq.mybatis.po.User">
insert into user(id,username,birthday,sex,address)  value(#{id},#{username},#{birthday},#{sex},#{address})
</insert>
<!-- 当ID自增时,可以不用写ID -->
public void insertUserTest() throws Exception {
     //mybatis配置文件
      String resource = "SqlMapConfig.xml";
     //得到配置文件流
     InputStream inputStream = Resource.getResourceAsStream(resouece);
     //创建会话工厂,传入mybatis的配置文件信息
     SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().buil(inputStream);
     //通过工厂得到SqlSession
     SqlSession sqlSession = sqlSessionFactory.openSession();
     //插入用户对象
     User user = new User();
     user.setUsername("ssss");
     user.set..........;
     //提交事务
     sqlSession.commit();
     //关闭会话
     sqlSession.close();
}

6.自增主键返回:

MysqL自增主键,执行insert提交之前自动生成一个自增主键。
通过MysqL函数获取到刚插入记录的自增主键:
LAST_INSERT_ID()
是insert之后调用此函数

<insert id="" ........
  <selectkey property="id" order="AFTER" resultType="java.lang.Interger">
  SELECT LAST_INSERT_ID()
  </selectKey>
</insert>
<!-- 将插入数据的主键返回,返回到User对象中
SELECT LAST_INSERT_ID():得到刚insert进去记录的主键值,只适用于自增主键。
keyProperty:将查询到的主键值设置到parameterType指定的对象的那个属性
order:SELECT LAST_INSERT_ID()执行顺序,相对于insert语句来说它的执行顺序
resultType:指定SELECT LAST_INSERT_ID()的结果类型
 -->

7.非自增主键的返回(使用uuid)

使用MysqL的uuid函数生成主键,需要修改表中 id字段类型为string,长度设置为35位。

<!-- 使用MysqL的uuid()生成主键
执行过程:
首先通过uuid()得到主键,将主键设置user对象的id属性中,
其次在insert执行时,从user对象中取出id属性值
 -->
<selectkey keyProperty="id" order="BEFORE" resultType="java.lang.String">
SELECT uuid()
</selectkey>

8.根据id更新用户:

分析:
需要传入用户id
需要传入用户更新信息
parameterType指定User对象,包括id和更新信息,注意:id 必须存在。
#{id}:从输入User对象中获取id属性值

<update id="updateUser" parameterType="cn.xbq.mybatis.po.User">
update user set username=#{username},birthday=#{birthday},sex=#{sex},address=#{address} where id=#{id}
</update>

9.补充第3点:

#{}接收输入参数,类型可以是简单类型,pojo,hashmap.
如果接收简单类型,#{}可以写成value或其他名称。
#{}接收pojo对象值,通过OGNL读取对象中属性值,通过属性.属性.属 性…的方式获取对象属性值。

pojo,hashmap. {}可以写成value。
${}接收pojo对象值,通过OGNL读取对象中属性值,通过属性.属性.属 性…的方式获取对象属性值。

10.步骤:

1.加载配置文件
2.得到session工厂
3.得到session
4.操作session

11.mybatis和hibernate本质区别和应用场景:

 hibernate:是一个ORM框架(对象关系映射。入门门槛较高,不需要程序写sql,sql语句自动生成,对sql语句进行优化,优化比较困难)
 应用场景:
 适用于需求变化不多的中小型项目,比如:后台管理系统:REP,CRM,OA 等。

mybatis:专注是sql本身,需要程序员自己编写sql语句,sql修改,优化比较方便。mybatis是一个不完全的ORM框架,虽然程序员自己写sql,mybatis也可以实现映射(输入映射,输出映射)。
应用场景:
适用于需求变化较多的项目,比如互联网项目。

alicejiyayun的博客:关于mybatis和hibernate区别

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值