zoukankan      html  css  js  c++  java
  • 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】

  • 相关阅读:
    Idea 代码编辑错误不飘红提示
    Java序列化机制和原理
    tomcat 启动报错org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalin
    idea tomcat 怎样出现update classes and resources
    Java List序列化的实现
    Spring管理的bean初始化方法的三种方式,以及@PostConstruct不起作用的原因
    Tomcat 启动或者发布项目时提示Publishing failed:Resource /xxxx does not exist
    spring中的context:include-filter和context:exclude-filter的区别
    oracle字符集修改
    VML、SVG、Canvas简介
  • 原文地址:https://www.cnblogs.com/qianjinyan/p/10349876.html
Copyright © 2011-2022 走看看