使用Mybatis连接Mysql数据库

一.Mybatis是什么?Mybatis的优点?

        MyBatis是支持普通SQL查询,存储过程和高级映射的优秀持久层框架。MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装。MyBatis可以使用简单的XML格式或注解用于配置和原始映射,将接口和Java的POJO(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录。

优点:

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

2、灵活:mybatis不会对应用程序或者数据库的现有设计强加任何影响。 sql写在xml里,便于统一管理和优化。通过sql语句可以满足操作数据库的所有需求。

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

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

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

6、提供xml标签,支持编写动态sql。

二.Mybatis的功能框架

三.为什么要引入Mybatis(JDBC存在的问题)

1、数据库链接创建、释放频繁造成系统资源浪费从而影响系统性能,如果使用数据库链接池可解决此问题。

2、Sql语句在代码中硬编码,造成代码不易维护,实际应用sql变化的可能较大,sql变动需要改变java代码。

3、 使用preparedStatement向占有位符号传参数存在硬编码,因为sql语句的where条件不一定,可能多也可能少,修改sql还要修改代码,系统不易维护。

4、 对结果集解析存在硬编码(查询列名),sql变化导致解析代码变化,系统不易维护,如果能将数据库记录封装成pojo对象解析比较方便。

四.使用Mybatis的步骤

1、 加载数据库驱动

2、 创建并获取数据库链接

3、 创建jdbc statement对象

4、 设置sql语句

5、 设置sql语句中的参数(使用                preparedStatement)

6、 通过statement执行sql并获取结果

7、 对sql执行结果进行解析处理

8、 释放资源(resultSet、preparedstatement、connection)

五.配置Mybatis的运行环境

java项目架构(也可以是maven)

jar包导入:

  mysql-connector-java-5.1.7-bin.jar可以参考文章使用JDBC连接数据库-CSDN博客

mybatis-3.1.1.jar的获取

前往项目概览 - mybatis-3 - GitCode下载

解压缩后为:图中所选即为实验所用jar包

java版本和mybatis版本对照表

数据库准备:

数据库名为u_student,表名为student

conf.xml文件编写

定义了驱动,url,用户名,密码,所连接的数据库

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">
<!--指定HTML文档遵循的文档类型定义DTD,段首部分内容不改变-->
<configuration>
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/u_student"/>
                <property name="username" value="root"/>
                <property name="password" value="123456"/>
            </dataSource>
        </environment>
    </environments>
   
</configuration>

六.使用Mybatis

1.定义表所对应的实体类Student

package Jdbc;

public class Student {
    public String name;
    public int age;
    public Student(){}
    public Student(String name,int age){
        this.name=name;
        this.age=age;
    }
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    @Override
    public String toString() {
        return "Student{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}

2.定义操作Student表的sql映射文件studentMapper.xml

<?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="Jdbc.studentMapper">
<select id="getStudent" parameterType="String" resultType="Jdbc.Student">
    select * from student where name=#{name}
</select>
</mapper>

3.在conf.xml文件中注册studentMapper.xml文件

添加后:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">
<!--指定HTML文档遵循的文档类型定义DTD,段首部分内容不改变-->
<configuration>
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/u_student"/>
                <property name="username" value="root"/>
                <property name="password" value="123456"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <mapper resource="Jdbc/studentMapper.xml"/>
    </mappers>
</configuration>

4.编写测试代码:执行定义的select语句

package Jdbc;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

import java.io.IOException;
import java.io.Reader;
import java.util.List;

public class Test {
    public static void main(String[] args) throws IOException {
        //加载mybatis的配置文件(它也加载关联的映射文件)
        String resource="conf.xml";
        Reader reader= Resources.getResourceAsReader(resource);
        //构建sqlSession的工厂
        SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(reader);
        //创建能执行映射文件中sql的sqlSession
        SqlSession session=sqlSessionFactory.openSession();
        //映射sql的标识字符串
        String statement="Jdbc.studentMapper.getStudent";
        //执行查询一个user对象的sql,依次为传过去的标识字符串和参数
        Student student=session.selectOne(statement,"zhangsan");
      
        System.out.println(student);
    }
}

5.针对CRUD的不同xml书写

<?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="Jdbc.studentMapper">
<select id="getStudent" parameterType="String" resultType="Jdbc.Student">
    select * from student where name=#{name}
</select>
<select id="getStudents" resultType="Jdbc.Student">
    select * from student;
</select>
<insert id="insertStudent" parameterType="Jdbc.Student">
    insert into student(name,age) values(#{name},#{age})
</insert>
<delete id="deleteStudent" parameterType="String">
    delete from student where name=#{name}
</delete>
<update id="updateStudent" parameterType="Jdbc.Student">
    update student set name=#{name},age=#{age} where name=#{name}
</update>
</mapper>

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值