在门外听到或看到一门技术, 找资料入门, 一看, 嗯, 不错, 进门之后, 发现, 尼玛 ----, 是片海, 你是关门而出, 还是学习精卫填海.
填海吧, 也许只是个小水坑, 稍加用点力, 就填的 7788 了.
上一篇随笔中说了 mybatis 入门, 介绍了基本方式的增删改查 CRUD
MyBatis 快速入门:
https://www.cnblogs.com/qianjinyan/p/10346569.html
CRUD 是指在做计算处理时的增加 (Create), 读取查询(Retrieve), 更新(Update) 和删除 (Delete) 几个单词的首字母简写. CRUD 主要被用在描述软件系统中数据库或者持久层的基本操作功能.
mybatis 除了用基本方式的 CRUD, 还可以用 mapper 动态代理方式的 CRUD, 这种方式也通常称作 Mybatis 接口开发.
今天要总结的内容:
1. 用 Mapper 接口动态代理方式的 CRUD
2. 别名的使用
3. 将数据库连接等信息放到配置文件中再动态引入
4. 类型转化器[比如 DB 中存 int, 程序对象中是 false 和 true]
1.Mybatis 接口开发的原则是: 约定优于配置, 必须遵循以下约定:
1) 方法名和 mapper.xml 文件标签中的 ID 必须一致
2) 方法的输入参数和 mapper.xml 文件标签中的 parameterType 类型一致
3) 方法的输出参数和 mapper.xml 文件标签中的 resultType 类型一致
3) mapper.xml 文件标签中的 namespace 的值就是接口的全类名
根据配置的原则, 接口的内容很容易编写了, 如下
- package com.test.mybatis.mapper;
- import com.test.mybatis.entity.User;
- import java.util.List;
- public interface UserMapper {
- User selectById(int id);
- List<User> selectAll();
- int addUser(User user);
- int updateUser(User user);
- int deleteUserById(int id);
- }
再看一下 UserMapper.xml 文件, 是不是 namespace 的值和接口的全路径名称一致, 是不是 mapper 中的 id 和接口的方法名一致, 返回类型是不是也不一致.
新增 / 更新 / 删除接口, 在 mapper 文件中是没有返回类型的, 接口中返回 int 类型, 也可以返回无类型 void. 我这边返回 int, 目的是看新增 / 更新 / 删除操作, 影响的数据条数.
测试一下接口的调用, 这个时候就不用 statement 了, 需要用 java 中的反射, session.getMapper(xxMapper.class), 返回的还是这个接口, 然后调用接口里的方法.
2. 别名的使用
比如我觉得 userMapper.xml 文件中的 namespace="com.test.mybatis.entity.User" 太长, 要写的太多, 想用别名 User 替代 com.test.mybatis.entity.User
config.xml 文件中, 在 < configuration > 元素下导入
- <typeAliases>
- <typeAlias type="com.test.mybatis.mapper.UserMapper" alias="UserMapper"
- />
- <typeAlias type="com.test.mybatis.entity.User" alias="User" />
- </typeAliases>
3. 将数据库连接等信息放到配置文件中再动态引入
配置信息单独放入某文件中, 然后在 config.xml 文件中, 在 < configuration > 元素下导入
导入语句 <properties resource="db.properties" />
db.properties 文件
- driver= com.MySQL.cj.jdbc.Driver
- url= jdbc:MySQL://localhost:3306/test?useUnicode=true&characterEncoding=utf-8
- username= root
- password=root
config.xml 中如何取对应的 value 值, 用 ${key}来取值, 之后的 config.xml 文件如下
<?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>
- <properties resource="db.properties" />
- <typeAliases>
- <typeAlias type="com.test.mybatis.mapper.UserMapper" alias="UserMapper" />
- <typeAlias type="com.test.mybatis.entity.User" alias="User" />
- </typeAliases>
- <environments default="development">
- <environment id="development">
- <transactionManager type="JDBC"/>
- <dataSource type="POOLED">
- <property name="driver" value="${driver}"/>
- <property name="url" value="${url}"/>
- <property name="username" value="${username}"/>
- <property name="password" value="${password}"/>
- </dataSource>
- </environment>
- </environments>
- <mappers>
- <mapper resource="UserMapper.xml"/>
- </mappers>
- </configuration>
4. 类型转化器[比如 DB 中存 int, 程序对象中是 false 和 true]
来源: https://www.cnblogs.com/qianjinyan/p/10349876.html