前言
使用 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 * from users") ( |
12 | List<User> getUserList(); |
13 | |
14 | "insert into users (`name`, `password`) values (#{name}, #{password})") ( |
15 | int addUser(User user); |
16 | } |
而我们的 mybatis-config.xml
中的 mapper
也只需要修改以下即可
1 |
|
2 |
|
3 |
|
4 |
|
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 | |
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 | |
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 配置来完成。注解只是拓展下大家的知识面。