Mybatis简单的操作数据库

来源:互联网 发布:华为揽阅m2青春版改mac 编辑:程序博客网 时间:2024/05/21 13:40

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.Driverjdbc.url=jdbc:mysql://localhost:3306/db0602jdbc.username=rootjdbc.password=123456env_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
通过以上操作可以简单实现对数据库表的增删改查.

原创粉丝点击