getMapper接口绑定和多参数传递

Mybatisi接口绑定 + 参数传递

mybatis和spring整合使用的方案

实现步骤:

1.创建接口
    要求:
         1.1 接口包名 == mapper.xml的namespace标签 (接口和配置xml文件在同一个包)
         1.2 接口方法名 == mapper.xml的id属性  (接口名和配置xml里面的id名一样)
2.mybatis.xml全局配置文件中:
    mappers标签里面 -- 使用package标签

举例实现

1. 准备数据库
2. 准备jar包
3. 准备全局mybatis.xml文件
4. 准备实体类 Log
5. 准备mapper包 
    5.1 准备接口 LogMapper
    5.2 准备配置xml文件 LogMapper.xml
6. 准备测试类 test

代码结构层次

实体类

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
public class Log {
private int id;
private String accIn;
private String accOut;
private double money;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getAccIn() {
return accIn;
}
public void setAccIn(String accIn) {
this.accIn = accIn;
}
public String getAccOut() {
return accOut;
}
public void setAccOut(String accOut) {
this.accOut = accOut;
}
public double getMoney() {
return money;
}
public void setMoney(double money) {
this.money = money;
}

@Override
public String toString() {
return "Log [id=" + id + ", accIn=" + accIn + ", accOut=" + accOut + ", money=" + money + "]";
}

}

全局配置文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<?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>

<settings>
<setting name="logImpl" value="LOG4J"/>
</settings>

<typeAliases>
<package name="com.bjsxt.pojo" />
</typeAliases>

<!-- default引用environment的id,当前所使用的环境 -->
<environments default="default">
<!-- 声明可以使用的环境 -->
<environment id="default">
<!-- 使用原生JDBC事务 -->
<transactionManager type="JDBC"></transactionManager>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/ssm"/>
<property name="username" value="root"/>
<property name="password" value="njdxrjgc7777777."/>
</dataSource>
</environment>
</environments>

<mappers>
<package name="com.bjsxt.mapper"/>
</mappers>

</configuration>

LogMapper接口

1
2
3
4
5
public interface LogMapper {
List<Log> selAll(); //方法名是selAll

List<Log> selByAccInAccount(String accin,String accout); //多参数
}

LogMapper.xml配置文件(sql语句)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?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.bjsxt.mapper.LogMapper">

<select id="selAll" resultType="log"> <!-- 方法名和接口方法一致 resultYType使用别名 -->
select * from log
</select>

<select id=" selByAccInAccount" resultType="log"> <!-- 多参数不写parameterType -->
select * from log where accin=#{0} and accout=#{1}
</select>

</mapper>

测试代码类

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
public class Test {
public static void main(String[] args) throws IOException {
//固定三行
InputStream is = Resources.getResourceAsStream("mybatis.xml");
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(is);
SqlSession session = factory.openSession();

// 使用JDK的动态代理设计模式 面向接口的代理设计模式(必须有接口)
LogMapper logMapper = session.getMapper(LogMapper.class); //给接口产生实例化 接口 -- 实例化proxy -- 反射到xml文件
List<Log> list = logMapper.selAll();
for(Log log1:list) {
System.out.println(log1);
}

List<Log> list2 = logMapper.selByAccInAccount("1","7");
for(Log log2:list2) {
System.out.println(log2);
}

session.close();
System.out.println("程序执行结束");

}
}

多参数传递

1
2
3
4
5
6
7
8
9
10
11
12
	1. 配置文件中写sql语句和id  -- (因为id要和接口方法一致) -- 创建接口方法
sql语句中accin 和 accout写法
第一种: #{0} #{1} 调用方法: "1" "7"
第二种: #{param1} #{param2} 调用方法: "1" "7"
第三种(通过map的实现思路) #{accin} #{accout} 调用方法: @param("accin") @param("accout")

2. 然后测试类调用


```

## 总结 ##
1. 其实就是我们把配置文件的id(sql语句实现的方法)和接口一样 然后通过接口去实例化proxy代理,然后代理反射到xml文件内实现。

2. 之所以可以实例化是因为我们使用其中一种动态代理设计模式  面向接口

    LogMapper logMapper = session.getMapper(LogMapper.class);   //方法要接口的类加载器 调用getMapper方法
        List<Log> list = logMapper.selAll();  //实例化对象获得结果

```


×

纯属好玩

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

文章目录
  1. 1. Mybatisi接口绑定 + 参数传递
  2. 2. 举例实现
    1. 2.1. 代码结构层次
    2. 2.2. 实体类
    3. 2.3. 全局配置文件
    4. 2.4. LogMapper接口
    5. 2.5. LogMapper.xml配置文件(sql语句)
    6. 2.6. 测试代码类
    7. 2.7. 多参数传递
,