mybatis学习笔记1.0

狂神说MyBatis01:第一个程序

持久层框架

避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集

使用简单的 XML 或注解来配置和映射

狂神说MyBatis02:CRUD操作及配置解析

配置文件中namespace中的名称为对应Mapper接口或者Dao接口的完整包名,必须一致!

mapper是一个接口类

public interface UserMapper {
List<User> selectUser();
}

mapper配置文件

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
       PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
       "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.kuang.dao.UserMapper">
 <select id="selectUser" resultType="com.kuang.pojo.User">
  select * from user
 </select>
</mapper>

先编写接口方法;

//修改一个用户
int updateUser(User user);

在xml文件中写入sql语句

<update id="updateUser" parameterType="com.kuang.pojo.User">
  update user set name=#{name},pwd=#{pwd} where id = #{id}
</update>

测试

@Test
public void testUpdateUser() {
   SqlSession session = MybatisUtils.getSession();
   UserMapper mapper = session.getMapper(UserMapper.class);
    
   User user = mapper.selectUserById(1);
   user.setPwd("asdfgh");
   int i = mapper.updateUser(user);
   System.out.println(i);
   session.commit(); //提交事务,重点!不写的话不会提交到数据库
   session.close();
}
  • 所有的增删改操作都需要提交事务!
  • 接口所有的普通参数,尽量都写上@Param参数,尤其是多个参数时,必须写上!
  • 有时候根据业务的需求,可以考虑使用map传递参数!
  • 为了规范操作,在SQL的配置文件中,我们尽量将Parameter参数和resultType都写上!
模糊查询like语句如何写
配置解析
configuration(配置)
properties(属性)
settings(设置)
typeAliases(类型别名)
typeHandlers(类型处理器)
objectFactory(对象工厂)
plugins(插件)
environments(环境配置)
environment(环境变量)
transactionManager(事务管理器)
dataSource(数据源)
databaseIdProvider(数据库厂商标识)
mappers(映射器)
<!-- 注意元素节点的顺序!顺序不对会报错 -->
mappers元素
xml映射器与接口映射器
Properties优化
typeAliases优化
作用域(Scope)和生命周期

狂神说MyBatis03:ResultMap及分页

java类中密码为password,数据中为pwd,名称不同

    select * from user where id = #{id} 可以看做

    select  id,name,pwd  from user where id = #{id}

    //mybatis会根据这些查询的列名(会将列名转化为小写,数据库不区分大小写) , 去对应的实体类中查找相应列名的set方法设值 , 由于找不到setPwd() , 所以password返回null ; 【自动映射】

解决方法

  • 为列名指定别名 , 别名和java实体类的属性名一致
  • 使用结果集映射->ResultMap 【推荐】
<select id="selectUserById" resultType="User">
  select id , name , pwd as password from user where id = #{id}
</select>

ResultMap

自动映射
手动映射
数据库中,存在一对多,多对一的情况,我们之后会使用到一些高级的结果集映射,association,collection这些,我们将在之后讲解
日志工厂
分页:limit实现分页(SQL层面)

狂神说MyBatis04:使用注解开发


  • mybatis最初配置信息是基于 XML ,映射语句(SQL)也是定义在 XML 中的。而到MyBatis 3提供了新的基于注解的配置。不幸的是,Java 注解的的表达力和灵活性十分有限。最强大的 MyBatis 映射并不能用注解来构建

  • sql 类型主要分成 :

    • @select ()
    • @update ()
    • @Insert ()
    • @delete ()

**注意:**利用注解开发就不需要mapper.xml映射文件了 .

关于@Param@Param注解用于给方法参数起一个名字

在方法只接受一个参数的情况下,可以不使用@Param。

在方法接受多个参数的情况下,建议一定要使用@Param注解给参数命名。

如果参数是 JavaBean , 则不能使用@Param。

不使用@Param注解时,参数只能有一个,并且是Javabean

#与$的区别

使用注解和配置文件协同开发,才是MyBatis的最佳实践!

狂神说MyBatis05:一对多和多对一处理

狂神说MyBatis06:动态SQL

狂神说MyBatis07:缓存


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值