目录
    • 2.3 接口 personmapper
    • 2.4 xml personmapper.xml

这次说一下bind、多数据源支持、java api

一、bind

// 测试bind
list<person> testbind(@param("name") string name);
<!--测试bind-->
<!--相当于sql select * from person where name like '%小强%' -->
<select id="testbind" resulttype="entity.person">
    <bind name="bidname" value="'%'+name+'%'" />
    select * from person where name like #{bidname}
</select>
import dao.personmapper;
import entity.person;
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.inputstream;
import java.util.*;

/**
 * @author 发现更多精彩  关注公众号:木子的昼夜编程
 * 一个生活在互联网底层,做着增删改查的码农,不谙世事的造作
 */
public class testmain03 {
    public static void main(string[] args) throws exception {
        string resource = "mybatis-config.xml";
        inputstream inputstream = resources.getresourceasstream(resource);
        sqlsessionfactory sqlsessionfactory = new sqlsessionfactorybuilder().build(inputstream);
        try (sqlsession session = sqlsessionfactory.opensession()) {
            // 通过sesson获取mapper 这个mapper会编程mybatis的代理mapper
            personmapper mapper = session.getmapper(personmapper.class);
            list<person> list = mapper.testbind("小强");
            optional.ofnullable(list).orelse(new arraylist<>()).foreach(item -> {
                system.out.println(item);
            });
        }
    }
}

bind就是允许使用ognl表达式创建一个变量(例如:bidname) ,然后将其绑定在当前上下文

二、 多数据库支持

搞了半天搞错了,浪费了点儿点儿时间

2.1 pom.xml

我用的jar包版本是3.4.5

<?xml version="1.0" encoding="utf-8"?>
<project xmlns="http://maven.apache.org/pom/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/xmlschema-instance"
         xsi:schemalocation="http://maven.apache.org/pom/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelversion>4.0.0</modelversion>

    <groupid>org.example</groupid>
    <artifactid>testdb</artifactid>
    <version>1.0-snapshot</version>

    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
    </properties>
    <dependencies>
        <!-- 引入mybatis -->
        <dependency>
            <groupid>org.mybatis</groupid>
            <artifactid>mybatis</artifactid>
            <version>3.4.5</version>
        </dependency>
        <!-- mysql-->
        <dependency>
            <groupid>mysql</groupid>
            <artifactid>mysql-connector-java</artifactid>
            <version>5.1.47</version>
        </dependency>
    </dependencies>
</project>

2.2 mybatis-config.xml

databaseidprovider我用了默认配置 没有自定义,下一篇天写一个自定义实现类的示例

<?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="development">
        <environment id="development">
            <transactionmanager type="jdbc"/>
            <datasource type="pooled">
                <property name="driver" value="com.mysql.jdbc.driver"/>
                <property name="url" value="jdbc:mysql://127.0.0.1:3306/test?useunicode=true&amp;characterencoding=utf-8&amp;usessl=false&amp;servertimezone=gmt%2b8"/>
                <property name="username" value="root"/>
                <property name="password" value="123456"/>
            </datasource>
        </environment>
    </environments>
    <!--db_vendor是默认实现  这里可以定义自己的实现类 下一篇写-->
    <databaseidprovider type="db_vendor" >
        <!--这里是因为原名称太长了 指定一下缩写 xml中判断类型就用缩写名称判断-->
        <property name="db2" value="db2" />
        <property name="oracle" value="oracle" />
        <property name="adaptive server enterprise" value="sybase" />
        <property name="mysql" value="mysql" />
    </databaseidprovider>
    <!--扫描-->
    <mappers>
        <mapper resource="personmapper.xml"/>
    </mappers>
</configuration>

2.3 接口 personmapper

package dao;


/**
 * @author 发现更多精彩  关注公众号:木子的昼夜编程  分享一个生活在互联网底层做着增删改查的码农的感悟与学习
 * @create 2021-08-30 21:54
 */
public interface personmapper {
    // 测试返回当前时间
    string testdb();
}

2.4 xml personmapper.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="dao.personmapper">
    <!--选择不同的数据库-->
    <select id="testdb" resulttype="string" >
        <!--如果是mysql 执行这个 -->
        <if test="_databaseid == 'mysql'">
            select concat("mysql-->",#{_databaseid},"-->",now()) from dual
        </if>
        <!--如果是oracle 执行这个-->
        <if test="_databaseid == 'oracle'">
            select "oracle-->"||#{_databaseid}  from dual
        </if>
    </select>

</mapper>

2.5 测试

import dao.personmapper;
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.inputstream;

/**
 * @author 发现更多精彩  关注公众号:木子的昼夜编程
 * 一个生活在互联网底层,做着增删改查的码农,不谙世事的造作
 * @create 2021-09-02 21:42
 */
public class testmain {
    public static void main(string[] args) throws exception {
        string resource = "mybatis-config.xml";
        inputstream inputstream = resources.getresourceasstream(resource);
        sqlsessionfactory sqlsessionfactory = new sqlsessionfactorybuilder().build(inputstream);
        sqlsession session = sqlsessionfactory.opensession();
            // 通过sesson获取mapper 这个mapper会编程mybatis的代理mapper
            personmapper mapper = session.getmapper(personmapper.class);
            string type = mapper.testdb();
            system.out.println("数据库类型:"+type);
    }
}

可以看到我pom里边引入的是mysql的驱动包,所以我这里结果肯定是mysql,如果引入多个包,那么会默认使用databaseidprovider第一个匹配到的,引入多个驱动下一篇写demo

输出结果:

下集预告:

  1. 自定义databaseidprovider 自己定义_databaseid 类型
  2. databaseid标签使用 不再用if
  3. 引入多驱动 表现结果

到此这篇关于一小时迅速入门mybatis之bind与多数据源支持 java api的文章就介绍到这了,更多相关mybatis bind 多数据源支持 java api内容请搜索www.887551.com以前的文章或继续浏览下面的相关文章希望大家以后多多支持www.887551.com!