0%

Mybatis-入门(八)

前言

使用 xml 配置开发,我们 mybatis 也有注解开发。以后我们在公司做项目的时候多数会用到的注解,但是在 Mybatis 中还是 XML 为主。

我们这里也要回顾下什么是面向接口编程。

  • 真正的开发中,很多时候我们会面向接口编程
  • 根本原因:解耦,可拓展,提高复用,分层开发中,上层不用管具体的实现,大家都遵守共同的标准,是的开发变得容易,规范性好
  • 在一个面向对象的系统中,系统的各种共嗯那个有许许多多不同的对象写作完成,大到各个模块之间的交互,在系统设计之初都是要着重考虑的,这也是系统设计的主要工作内容。面向接口编程就是按照这种思想来编程。

关于接口的理解

  • 接口从更深层次的理解,就是定义(规范、约束)与实现(名实分离的原则)的分离
  • 接口的本身反应了系统设计人员对系统的抽象理解
  • 接口应有两类:
    • 第一类是对一个个体的抽象,它可对应为一个抽象体(abstract class)
    • 第二类是对一个个体某一方面的抽象,即形成一个抽象面(interface)
  • 个体可能有多个抽象面,抽象体与抽象面是由区别的

三个面向的区别

  • 面向对象是指,我们考虑问题时,以对象为单位,考虑它的属性及方法
  • 面向过程是指,我们考虑问题时,以一个具体的流程(事务过程)为单位,考虑它的实现
  • 接口设计与非接口设计时针对复用技术而言的,与面向对象(过程)不是一个问题。更多的体现就是对系整体的架构

使用注解开发

Mybatis 简单的操作我们可以使用注解来查询,这时候我们可以不需要配置 xml 文件,直接在接口类中去写注解。

1
package com.yubulang.dao;
2
3
import com.yubulang.pojo.User;
4
import org.apache.ibatis.annotations.Insert;
5
import org.apache.ibatis.annotations.Select;
6
7
import java.util.List;
8
9
public interface UserMapper {
10
11
    @Select("select * from users")
12
    List<User> getUserList();
13
14
    @Insert("insert into users (`name`, `password`) values (#{name}, #{password})")
15
    int addUser(User user);
16
}

而我们的 mybatis-config.xml 中的 mapper 也只需要修改以下即可

1
<?xml version="1.0" encoding="UTF-8"?>
2
<!DOCTYPE configuration
3
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
4
        "http://mybatis.org/dtd/mybatis-3-config.dtd">
5
6
<configuration>
7
    <properties resource="db.properties"/>
8
9
    <settings>
10
        <setting name="logImpl" value="STDOUT_LOGGING"/>
11
    </settings>
12
13
    <environments default="development">
14
        <environment id="development">
15
            <transactionManager type="JDBC"/>
16
            <dataSource type="POOLED">
17
                <property name="driver" value="${driver}"/>
18
                <property name="url" value="${url}"/>
19
                <property name="username" value="${username}"/>
20
                <property name="password" value="${password}"/>
21
            </dataSource>
22
        </environment>
23
    </environments>
24
25
    <mappers>
26
        <!-- 绑定接口 -->
27
        <mapper class="com.yubulang.dao.UserMapper"/>
28
    </mappers>
29
</configuration>

开始写测试代码搞起,有了这两个例子,我相信修改和删除是什么样的结果也不难了吧

1
package com.yubulang.dao;
2
3
import com.yubulang.pojo.User;
4
import com.yubulang.utils.MybatisUtils;
5
import org.apache.ibatis.session.SqlSession;
6
import org.junit.Test;
7
8
import java.util.List;
9
10
public class UserMapperTest {
11
    @Test
12
    public void testGetUserList() {
13
        SqlSession sqlSession = MybatisUtils.getSqlSession();
14
15
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
16
        List<User> userList = mapper.getUserList();
17
18
        for (User user : userList) {
19
            System.out.println(user);
20
        }
21
22
        sqlSession.close();
23
    }
24
25
    @Test
26
    public void testAddUser() {
27
        SqlSession sqlSession = MybatisUtils.getSqlSession();
28
29
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
30
31
        User user = new User();
32
        user.setName("金毛狮王");
33
        user.setPassword("666666");
34
35
        int i = mapper.addUser(user);
36
        if (i > 0) {
37
            System.out.println("插入成功");
38
        }
39
40
        sqlSession.commit();
41
42
        sqlSession.close();
43
    }
44
}

总结

mybatis 其实在实际开发中多数是用到的 xml,复杂的基本是通过 xml 配置来完成。注解只是拓展下大家的知识面。