开发者社区> 死瘦宅> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

Mybatis

简介: 介绍:         它是一个插件,是一个持久化插件         帮我们简化数据库的操作         mybatis的好处就是可以自定义sql让sq变得很灵活 工程创建: mybatis-config.
+关注继续查看

介绍:

        它是一个插件,是一个持久化插件

        帮我们简化数据库的操作

        mybatis的好处就是可以自定义sql让sq变得很灵活


工程创建: mybatis-config.xml(这里是文件名随你起)  是mybatis的数据库和事务配置文件

                  数据库连接信息

                  事务管理 

                  mapper 文件管理


每多一张表 就需要以下配置:

                                           StudentMapper.xml  是针对student表做出的sql配置xml文件 //映射文件配置,数据库相关操作都在这个文件中

                                           Student  类 是用来包装student表格的 POJO类  //对应的是你要操作的表,对应表中的相应数据

                                           StudentMapper 接口 是对应studentMapper.xml 的功能接口 //实现 POJO类的接口


数据库连接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">
<configuration>
    <environments default="test">
        <environment id="test">
            <!--这里是你要连接的数据库,对应的你要链接的数据库-->
            <transactionManager type="JDBC"/>
            <!--事务管理方式-->
            <!--在 MyBatis 中有两种类型的事务管理器(也就是 type=”[JDBC|MANAGED]”):-->
            <!--JDBC – 这个配置就是直接使用了 JDBC 的提交和回滚设置,它依赖于从数据源得到的连接来管理事务作用域。-->
            <!--MANAGED – 容器来管理事务的整个生命周期-->
            <dataSource type="POOLED">
                <!--数据源 [UNPOOLED|POOLED|JNDI] -->
                <!--UNPOOLED 不用数据链接池  每次访问数据 从新创建connection对象-->
                <!--POOLED 使用连接池-->
                <!--JNDI 容器提供的数据源-->
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/test?useUnicode=true&
                characterEncoding=UTF-8&useSSL=false"/>
                <!--这里是mysq5的链接方案-->
                <property name="username" value="root"/>
                <property name="password" value=""/>
                <!--这里是数据员配置,要配置相关参数的话就加一列加入相关配置就行-->
            </dataSource>
        </environment>
    </environments>

    <mappers>
        <!--映射文件就是数据库的查询,修改,更新,删除等自定义执行方案-->
        <!--关联映射文件  每次多一个映射文件 就需要写段-->
        <mapper resource="com/sun/mybatis/dao/MyabtisMapper.xml"/>
    </mappers>
</configuration>

数据库连接方法包装:

package com.sun.mybatis;

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

import java.io.IOException;
import java.io.InputStream;

public class Mybatisconfig {
    public static SqlSessionFactory sqlSessionFactory;

    //这里用静态方法的原因是因为,用不了那么多链接一个就够了所以设置为静态类
    static {
        String resource = "com/sun/mybatis/mybatis_config";
        //用静态块是因为只要掉用类,就会启动实例块中的代码
        try {
            InputStream inputStream = Resources.getResourceAsStream(resource);
            sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}


对应数据库表结构的类


package com.sun.mybatis;
//用get 和set方法包装即可
public class Student {
    private int sid;
    private String sname;
    private String address;
    private String email;
}

mybatis自定义sql的映射文件配置


<?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.sun.mybatis.dao.StudentMappr">
    <!--这里就是映射文件-->
    <select id="selectUserAll"  resultType="com.sun.mybatis.Student">
    select * from student
  </select>

<insert id="inster" parameterType="com.sun.mybatis.Student">
    insert into student(sname,address,email) values(#{sname},#{address},#{email})
</insert>
</mapper>

映射文件对应的接口实现类:


package com.sun.mybatis.dao;

import com.sun.mybatis.Student;

import java.util.List;

public interface StudentMappr {
    public Student inste(int id);

    public int inster(Student student);
    //这里传进来的是对象,因为插入是数据库相对应的数据
    //这里注意发挥类型和参数
    public List<Student> selectUserAll();
    //查询放回值返回的是对象,因为有数据库相对应的对象
    //这里的方法是集合查询 也就是可以多查
    // 这里的Student代表返回出去的是都是Student对象
}

数据操作:


package com.sun.mybatis;

import com.sun.mybatis.dao.StudentMappr;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;

import java.util.List;

public class Teat {
    public static void main(String[] args) {
        SqlSessionFactory sqlSessionFactory = Mybatisconfig.sqlSessionFactory;
        //创建sql绘画工厂对象
        SqlSession sqlSession = sqlSessionFactory.openSession();
        //将会话工厂类给sqlsession工厂
        StudentMappr studentMappr = sqlSession.getMapper(StudentMappr.class);
        //创建动态实现类
        //mybatis的运行过程,应该是
        //1.创建工厂链接
        //2.通过工厂sqlsession工厂类 中的方法在内存创建动态实现类
        //3.通过映射文件找到相对应的实现类
        //4.再通过实现类的名字找到相对应的实现方法,能找见方法是因为配置的映射中的标记名对应着的是实现类的方法名
        List<Student> studentList=studentMappr.selectUserAll();
        //这里是集合声明也是,集合相当于高级的数组所以也是同过循环取值
        for (Student student : studentList) {
            System.out.println(student.toString());
        }
    }
}




版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Mybatis【#{}和${}的区别】
Mybatis【#{}和${}的区别】
38 0
MyBatis 缓存
一级缓存 对于一级缓存来说,Mybatis是直接单个线程隔离的在执行add,update,delete 的时候,会自动清空缓存,避免脏读造成的影响此时mapper为线程隔离的,而管理对象为所有线程所共享的.
1100 0
mybatis 联查
association关键字:                               关联表数据在这个mxl中写 resultmap:       表联查映射 多对一关系 public class Student { private Integer sid; private ...
683 0
MyBatis入门
MyBatis基本构成 SqlSessionFactoryBuilder(构造器):它会根据构造器或者代码生成SqlSessionFactory(工厂接口) SqlSessionFactory:依靠工厂来生成SqlSession(会话) SqlSession:是一个既可以发送SQL去执行并...
1174 0
MyBatis3——1
MyBatis笔记,参考文档:http://www.mybatis.org/mybatis-3/zh/getting-started.html; http://www.360doc.com/content/12/1019/11/7471983_242389480.shtml
918 0
MyBatis入门
简介 MyBatis的前身叫iBatis,本是apache的一个开源项目, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis。
1029 0
MyBatis入门
一、简介 持久层框架是 Java 开发的重要部分,但是现在流行的 Hibernate 是一种比较重型的框架,MyBatis作用一种轻量化的开源持久层框架,可以提高开发效率,同时MyBatis也是一种方便掌握与使用的框架。MyBatis 最大的优点就是 SQL 与代码完全分离。提高 Java 开发的规范性与可扩展性。 二、准备工作 1、下载地址: https://
1336 0
+关注
62
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载