JAVA学习----Mybatis笔记整理

1.框架

Mybatis是我学习到的第一个框架,所谓框架,通俗来讲是一套解决方案,是为开发者提供的一组组件,编程人员可以在给定的框架基础上配置文件、编写程序等等。框架的好处为:封装了细节,简化了许多开发流程,并且往往更符合高内聚、低耦合的思想

1.2 常见框架:

  • Mybatis:解决数据持久化问题
  • SpringMVC:解决WEB层问题
  • spring:解决技术整合问题、降低软件开发复杂性

Mybatis内部封装了jdbc,使开发者只需关注sql语句本身,而不用频繁加载驱动、创建connection等等。

2.Mybatis基础

2.1 Mybatis的下载及配置

使用maven加入对应的<dependency>标签
<groupId>为org.mybatis
<artifactId>为mybatis。
注意:使用Mybatis的同时要在pom.xml文件中加入mysql及junit的坐标。

2.2 Mybatis入门开发

Mybatis的结构可以简要概括为:实体类、mapper类、mapper类映射文件、主配置文件。

  • 实体类:对应数据库中的一个表,比如:带有id、password的user类,对应着数据库中包含id、password字段的user表。
  • mapper类:声明方法,在mapper.xml文件中配置具体方法实现等等,也可以用注解方式实现。注意:mapper类和对应的mapper.xml要放在相同的包下。
  • 主配置文件:SqlMapConfig.xml,配置mybatis的环境、sql环境、事务类型、连接数据库信息等等,最重要的是为每个mapper类注册,用<mappers>标签实现。mapper标签的resource属性为mapper.xml的全限定类名。
<mappers>
   <mapper resource="com/.../.../mapper.xml"/>
   <mapper resource="..."/>
   ...
</mappers>
  • 测试类:除了主要内容之外,mybatis的测试类也有基本不变的构造,具体如下:
//1.读取配置文件
InputStream in = Resources.getResourceAsStream("SqlMapConfig.xml");
//2.创建SqlSessionFactoryBuilder
SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
//3.使用SqlSessionFactoryBuilder创建SqlSessionFactory
SqlSessionFactory factory = builder.build(in);
//4.使用factory创建SqlSession
SqlSession session = factory.openSession();
//5.使用Session获得mapper的代理对象
UserMapper mapper = session.getMapper(UserMapper.class);
//6.调用方法
User user = mapper.select(5);

3.Mapper的具体实现和对应

Mapper中定义了一些接口,对应着数据增删改查的一些持久化操作,这些操作可以通过注解或xml方式实现,下面先分别总结xml方式中查询、删除、更新的操作。

查询数据
要实现查询的功能,需要在mapper中声明相应接口,如:

User findByUser(Integer userId);

之后在mapper.xml中进行配置:

<select id = "findByUser" resultType="com.xxx.xxx.User" parameterType="int">
select * from user where id = #{uid}
</select>

由于配置的是select方法,所以这里配置的是select标签,其中的几个属性:

  • id:代表mapper中的方法名称
  • resultType:代表返回值类型,这里返回的是User类,填写其全限定类名
  • parameterType:指定传入参数的类型
    #{}相当于以前jdbc的?,即占位符,这里由于数据类型是基本类型所以可以随便写。
    除此之外,还可以实现模糊查询,比如将方法中的参数改成String username,在把xml中的sql语句改为select * from user where username like #{username}。注意:用这种方式配置后,实际测试中传入的参数应带有标识%,如:userMapper.findByName(“李%”);

添加数据
依旧先在mapper中添加对应接口

int saveUser(User user);

在xml中:

<insert id="saveUser" parameterType="com.xxx.xxx.User">
insert into user(username,sex,address) values(#{username},#{sex},#{address}
</insert>

这里的parameter是User类,因此parameterType要填写类的全限定名。这里的#{}中填写的都是User类的属性,可以填写#{user.username},但这里在parameterType中已经填写了User类,所以直接写属性名就好,不用加类名。

更新数据
在mapper中添加

int updateUser(User user);

在xml中:

<update id="updateUser" parameterType="com.xxx.xxx.User">
update user set username=#{username},sex=#
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值