栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Mybatis配置第一个sql和一些细节

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Mybatis配置第一个sql和一些细节

今天第一次配置成功Mybatis,配置的吐血。用了大概4个小时。
我百分百过了几个小时以后忘了,直接记录一下备查。


登陆Mybatis

官网:https://mybatis.org/mybatis-3/

官网有中文,说的是比较简略的。


除了mybatis以外需要下载链接器和测试。


导入POM依赖

在pom.xml里面写入依赖并刷新,即可导入需要的内容,我用的是:

		
            mysql
            mysql-connector-java
            5.1.46
        
        
            junit
            junit
            4.12
        
        
            org.springframework.boot
            spring-boot-starter-test
            test
        
        
            org.mybatis
            mybatis
            3.5.9
        

刷新以后,测试连接数据库。


修改pom中对于xml的过滤规则

默认情况下,只有resource里面的文件才能够对代码进行构建,不然代码无法注入。

有两个选择:

    所有的mapper.xml文件都写入到resource里面。修改系统配置pom.xml文件,加入这么一行

            
                
                    **/*.xml
                
            

这个意思是:所有xml格式的文件通过过滤。


新建mybatis config文件

我是直接用的:https://blog.csdn.net/banmingi/article/details/90407700这篇文章的,这篇文章很正。

mysql5以后的版本可能需要时区、SSL和其他详细的配置才能够连接,普通的jdbc:mysql://localhost:3306会连接失败。


新建一个配置文件,文件名随意(我指定的是Mybatis-config.xml)直接输入jdbc、用户和密码即可。




    
        
            
            
                
                
                
                
            
        
    

由于在XML里面会对&进行转义,所以修改&为转义以后的

需要加入时区。jdbc中的s1即为数据库类型。



开启工厂函数
public class Main {
    public static void main(String[] args) throws IOException {
        String resource = "Mybatis-config.xml";
        InputStream inputStream = Resources.getResourceAsStream(resource);
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        SqlSession sqlSession = sqlSessionFactory.openSession();
    }
}

按照官方的说法:只需要构造一次,而且只定义一次。工厂函数会解决这个问题,不要定义多次。


第二个问题:要保证xml文件在target存在。不然会报错。


构造返回类(实际类)

比如说:

CREATE TABLE `t1` (
  `id` int(11) DEFAULT NULL,
  `name` varchar(100) DEFAULT NULL,
  `grade` int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8

写入测试数据:

insert into s1.t1 values(1, 1, 1);

为了储存这个数据,需要构造一个类。(我用的是pojo,组件类),实现get、set方法和toString。

package com.demo3.pojo;

public class t1 {
    int id;
    String name;
    int grade;

    public int getId() {
        return id;
    }

    @Override
    public String toString() {
        return "select1{" +
                "id=" + id +
                ", name=" + name +
                ", grade=" + grade +
                '}';
    }

    public String getName() {
        return name;
    }

    public int getGrade() {
        return grade;
    }

    public void setId(int id) {
        this.id = id;
    }

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

    public void setGrade(int grade) {
        this.grade = grade;
    }

    public t1(int id, String name, int grade) {
        this.id = id;
        this.name = name;
        this.grade = grade;
    }
}


构造接口。

按照网上的说法,如果是mapper方法实现的话,那么需要在一个包下。但是底层逻辑相差不大:都是实现一个接口然后重写接口。

所以需要写一个接口。

import java.util.List;

public interface t1Mapper {
    public List getT1Mapper();
}


官方提供的并不是无参的,也可以提供参数,不过一样的:可以注入参数。


构造一个mapper




    



按照官方文档的说法,需要在接口的旁边实现一个mapper,为了可读性考虑可以同名(似乎没有硬性规定)

    需要指定namespace。确认实现的方法是select还是其他。指定要实现的接口需要指定返回的类型由于是全局的xml,所以包要使用全名。

注册mapper

在mapper的config里面写入mapper。

    
        
    

所有的mapper都需要在对应的文件中进行写入,不然扫描不到。


执行查询
    获取接口的反射:
t1Mapper mapper = sqlSession.getMapper(t1Mapper.class);

2.将查询的结果返回;

List t1Mapper = mapper.getT1Mapper();
    打印下返回结果
        System.out.println(t1Mapper);

获得返回:

[select1{id=1, name=1, grade=1}, select1{id=2, name=1, grade=1}, select1{id=3, name=1, grade=1}]

成功实现第一个sql。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/737524.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号