Mybatis简单的操作数据库

Mybatis

最简单的用Mybatis实现对数据库表的增删改查,内容详细,初学者可以快速实现功能.

Mybatis介绍

MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。

Mybatis特点

  • 简单易学:本身就很小且简单。没有任何第三方依赖,最简单安装只要两个jar文件+配置几个sql映射文件易于学习,易于使用,通过文档和源代码,可以比较完全的掌握它的设计思路和实现。

  • 灵活:mybatis不会对应用程序或者数据库的现有设计强加任何影响。 sql写在xml里,便于统一管理和优化。通过sql基本上可以实现我们不使用数据访问框架可以实现的所有功能,或许更多。

  • 解除sql与程序代码的耦合:通过提供DAL层,将业务逻辑和数据访问逻辑分离,使系统的设计更清晰,更易维护,更易单元测试。sql和代码的分离,提高了可维护性。

  • 提供映射标签,支持对象与数据库的orm字段关系映射

  • 提供对象关系映射标签,支持对象关系组建维护

  • 提供xml标签,支持编写动态sql

Mybatis配置过程

1.添加必要的jar包

添加到pom.xml

<dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis</artifactId>
      <version>3.4.2</version>
    </dependency>
<dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>5.1.40</version>
    </dependency>

添加到pom.xml的<build>标签中

<resources>
      <resource>
        <directory>src/main/resources</directory>
        <includes>
          <include>**/*.properties</include>
          <include>**/*.xml</include>
          <include>**/*.tld</include>
        </includes>
        <filtering>false</filtering>
      </resource>
      <resource>
        <directory>src/main/java</directory>
        <includes>
          <include>**/*.properties</include>
          <include>**/*.xml</include>
          <include>**/*.tld</include>
        </includes>
        <filtering>false</filtering>
      </resource>
    </resources>
2.添加config.xml

添加到resource文件夹下

添加到resource文件夹下

这个配置文件中,所有的标签都有严格的顺序

<environments default="${env_choosen}">
        <environment id="deve">
            <transactionManager type="JDBC"></transactionManager>
            <dataSource type="POOLED">
                <property name="driver" value="${jdbc.driver}"/>
                <property name="url" value="${jdbc.url}"/>
                <property name="username" value="${jdbc.username}"/>
                <property name="password" value="${jdbc.password}"/>
            </dataSource>
        </environment>
    </environments>

自动读取mapper包下的所有xml文件

 <mappers>
        <mapper resource="com/lanou/mapper/StudentMapper.xml"/>
 <package name="com.lanou.mapper"/>
3.与config.xml对应的db.properties

2

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/db0602
jdbc.username=root
jdbc.password=123456

env_choosen=deve
4.定义实体类

实体类的属性和表的字段名称一一对应

数据库表:

3

实体类:

4

5.定义操作实体类表的接口xxxMapper

5

定义操作数据库的方法

  • 增加(两种添加方法)
void insertStu(Student student);
 void insertStudent(@Param("sname") String name);
  • 删除(根据id删除)
void delStu(@Param("sid") Integer id);
  • 更改
void updateStu(Student student);
  • 查询

    • 查询所有
     List<Student>findAllStudent();
    • 按id查询

    java
    List<Student>findById(@Param("id") Integer id);

6.定义操作表的sql映射文件XXXMapper.xml

这里写图片描述

SQL语句写在mapper标签中(namespace 一般写对应接口的路径)

<mapper namespace="com.lanou.mapper.StudentMapper">

MyBatis的结果映射
当实体类的属性名和数据库表的列名不一致的情况下,
需要使用结果映射来确保数据的一致性

column:数据库表的列名

property:实体类的属性名

java
<resultMap id="BaseMap" type="com.lanou.bean.Student">
<id column="id" property="id"/>
<result column="name" property="name"/>
</resultMap>

  • 增加(两种添加方法)
 <insert id="insertStu" parameterType="com.lanou.bean.Student">
        INSERT INTO student VALUES (NULL ,#{name})
    </insert>
<insert id="insertStudent">
        INSERT INTO student VALUES (NULL ,#{sname})
    </insert>
  • 删除(根据id删除)
<delete id="delStu" parameterType="com.lanou.bean.Student">
        DELETE FROM student WHERE id =(#{sid})
    </delete>
  • 更改
<update id="updateStu">
        UPDATE student SET name=#{name} WHERE id=#{sid};
    </update>
  • 查询

    • 查询所有
     <select id="findAllStudent" resultMap="BaseMap">
    SELECT <include refid="Column_List"/> FROM student;
    </select>
    • 按id查询

    java
    <select id="findById" resultMap="BaseMap">
    SELECT * FROM student WHERE id = #{id}
    </select>

7.创建test类测试代码

从 XML 中构建 SqlSessionFactory

  • 加载config文件
  String re = "config.xml";
        InputStream stream = Resources.getResourceAsStream(re);
  • 创建SqlSessionFactory
 SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(stream);
  • 生产sqlSession对象
 SqlSession session = factory.openSession();
  • 获取mapper对象
xxxMapper mapper = session.getMapper(xxxMapper.class);
  • 调用方法获取结果

    • 增加
    Student stu = new Student();
        stu.setName("zhaoliu");
        mapper.insertStu(stu);
        session.commit();
        session.close();
    mapper.insertStudent("wangwu");
    session.commit();
    session.close();
    • 删除
    mapper.delStu(1);
    session.commit();
    session.close();
    • 更改
      mapper.updateStu(stu);    
       session.commit();
      session.close();
    • 查询

      • 查询所有
      List<Student> studentList = mapper.findAllStudent();
      System.out.println(studentList);
      • 按id查询
      List<Student> studentList = mapper.findById(1);
         System.out.println(studentList);

8.总结

最后的结构视图

7
通过以上操作可以简单实现对数据库表的增删改查.

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值