当前位置: 首页 > news >正文

mybatis 学习总结笔记Day2

在门外听到或看到一门技术,找资料入门,一看,嗯,不错,进门之后,发现,尼玛————,是片海,你是关门而出,还是学习精卫填海。

填海吧,也许只是个小水坑,稍加用点力,就填的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

相关文章:

  • 5.3Python函数(三)
  • 基于LSTM的情感识别在鹅漫评论分析中的实践与应用
  • Docker学习笔记_安装和使用nginx
  • React Transition Group -- Transition 组件
  • 开源项目之ASP.NET Core + Vue.js 的前后端分离的通用后台管理系统框架
  • 客户端链接Blog
  • [IOI2018] werewolf 狼人
  • Docker学习笔记_安装和使用Python
  • JS正则表达式详解
  • ActiveMQ (一):安装启动及测试
  • 利用消息队列处理分布式事务
  • 番外篇1:在Windows环境下安装JDK
  • qwq
  • LeetCode18.四数之和 JavaScript
  • matlab-高数 diff 方向导数
  • dva中组件的懒加载
  • Fabric架构演变之路
  • Intervention/image 图片处理扩展包的安装和使用
  • JavaScript标准库系列——Math对象和Date对象(二)
  • JavaScript的使用你知道几种?(上)
  • Java多态
  • js算法-归并排序(merge_sort)
  • Just for fun——迅速写完快速排序
  • Linux编程学习笔记 | Linux IO学习[1] - 文件IO
  • Netty 4.1 源代码学习:线程模型
  • NSTimer学习笔记
  • Redux系列x:源码分析
  • Shell编程
  • SpiderData 2019年2月16日 DApp数据排行榜
  • Unix命令
  • 闭包--闭包作用之保存(一)
  • 短视频宝贝=慢?阿里巴巴工程师这样秒开短视频
  • 对话 CTO〡听神策数据 CTO 曹犟描绘数据分析行业的无限可能
  • 浮现式设计
  • 理解 C# 泛型接口中的协变与逆变(抗变)
  • 树莓派 - 使用须知
  • 我感觉这是史上最牛的防sql注入方法类
  • 深度学习之轻量级神经网络在TWS蓝牙音频处理器上的部署
  • 蚂蚁金服CTO程立:真正的技术革命才刚刚开始
  • 容器镜像
  • ​HTTP与HTTPS:网络通信的安全卫士
  • ​RecSys 2022 | 面向人岗匹配的双向选择偏好建模
  • ​力扣解法汇总946-验证栈序列
  • (NSDate) 时间 (time )比较
  • (八十八)VFL语言初步 - 实现布局
  • (读书笔记)Javascript高级程序设计---ECMAScript基础
  • (附源码)ssm码农论坛 毕业设计 231126
  • (九)信息融合方式简介
  • (六)软件测试分工
  • (数位dp) 算法竞赛入门到进阶 书本题集
  • (一)Neo4j下载安装以及初次使用
  • (源码版)2024美国大学生数学建模E题财产保险的可持续模型详解思路+具体代码季节性时序预测SARIMA天气预测建模
  • (轉貼) VS2005 快捷键 (初級) (.NET) (Visual Studio)
  • .CSS-hover 的解释
  • .gitignore