ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Mybatis_千峰

2022-03-19 09:06:20  阅读:198  来源: 互联网

标签:country 生成 org Mybatis 注解 import 千峰 方法


MyBatis

lombok

Lombok是一个可以通过简单的注解形式来帮助我们简化消除一些必须有但显得很臃肿的Java代码的工具,通过使用对应的注解,可以在编译源码的时候生成对应的方法。官方地址:https://projectlombok.org/,github地址:https://github.com/rzwitserloot/lombok

Lombok项目是一个Java库,它会自动插入编辑器和构建工具中,Lombok提供了一组有用的注释,用来消除Java类中的大量样板代码。仅五个字符(@Data)就可以替换数百行代码从而产生干净,简洁且易于维护的Java类。

添加插件

plugins

pom.xml添加依赖

<!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>1.18.12</version>
    <scope>provided</scope>
</dependency>

主要注解

注解实现功能的代码可以在.class文件里看到

@Data: 注解在类,生成setter/getter、equals、canEqual、hashCode、toString方法,如为final属性,则不会为该属性生成setter方法。

@Setter :注解在类或字段,注解在类时为所有字段生成setter方法,注解在字段上时只为该字段生成setter方法。

@Getter :使用方法同上,区别在于生成的是getter方法。

@ToString :注解在类,添加toString方法。

@RequiredArgsConstructor: 注解在类,为类中需要特殊处理的字段生成构造方法,比如final和被@NonNull注解的字段。

@AllArgsConstructor: 注解在类,生成包含类中所有字段的构造方法。

@Slf4j: 注解在类,生成log变量,严格意义来说是常量。

@Cleanup:作用于变量,保证该变量代表的资源会被自动关闭,默认调用资源的close()方法,如果该资源有其它关闭方法,可使用 @C leanup(“methodName”)来指定。

下面两个通常一起用,以防覆盖无参构造

@EqualsAndHashCode: 注解在类,生成hashCode和equals方法。

@NoArgsConstructor: 注解在类,生成无参的构造方法。

@EqualsAndHashCode

  1. 此注解会生成equals(Object other) 和 hashCode()方法。
  2. 它默认使用非静态,非瞬态的属性
  3. 可通过参数exclude排除一些属性
  4. 可通过参数of指定仅使用哪些属性
  5. 它默认仅使用该类中定义的属性且不调用父类的方法

@Accessors: 里面有参数可以设置,例如“@Accessors(chain = true)”表示该类的set方法可以链式接下去

country.setName().setLocial();
//代码实现的原理是在一个set方法结束之后返回一个this对象

实现原理

在这里插入图片描述

MyBatis简介

属于ORM框架,负责项目中的持久层(DAO),负责项目中的CRUD,以及事务处理,负责数据库的增删改查,是ssm里面的M

mybatis文档

创建项目

1. MyBatis的传入参数parameterType类型分两种

  • 基本数据类型:int,string,long,Date

  • 复杂数据类型:类和Map

多个参数传递,只管传回自动识别

  <select id="getPage"  resultType="MyBatis_千.com.Country">
        select * from country limit #{arg0} , #{arg1}
    </select>

创建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>

</configuration>

mapper文件头

映射文件中的namespace是用于绑定Dao接口的,即面向接口编程。当你的namespace绑定接口后,你可以不用写接口实现类,mybatis会通过该绑定自动帮你找到对应要执行的SQL语句

namespace解析

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!--mapper就是相当于DAO的实现类-->
<mapper namespace="MyBatis_千.DAO.CountryDao">
    <select id="getCountryCount" resultType="int">
        select count(1) from country;
    </select>

    <!--返回值可以不写
         但是
         参数类型必须写-->
    <insert id="addCountry" parameterType="MyBatis_千.com.Country">
        insert into country(cid,cname)
        values(#{cId},#{cName});
--         //实体类名要和数据库名一样才可以映射
    </insert>

    <update id="updateCounter" parameterType="MyBatis_千.com.Country">
        update country set cname = #{cName} where cid = #{cId}
        -- //注意变量名cname是要与数据库里面一样,#{cName}是与实体类一样,注意大小写,数据库不分大小写但是实体类分
    </update>

    <delete id="deleteCountryById" parameterType="int">
        delete from country where cid = #{id}
    </delete>
</mapper>

测试代码

在测试里面除了select不需要commit提交事件,其余的都要提交事件

package Test_MyBatis_千.com;

import MyBatis_千.DAO.CountryDao;
import MyBatis_千.com.Country;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Test;


import java.io.IOException;
import java.io.InputStream;

/**
 * @author BXO
 * @version 1.0
 * @description: TODO
 * @date 2022/3/16 20:58
 */
public class TestCountry {
    @Test
    public void TestCountry()
    {
        Country country = new Country();
        System.out.println(country);

    }

    @Test
    public void CountryTest()  {
      try {
          //读取配置文件 导的是ibatis的包
          InputStream is = Resources.getResourceAsStream("mybatis_config.xml");

          //获取实现类
          SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();

          //通过SqlSessionFactoryBuilder构建工厂
          SqlSessionFactory factory = builder.build(is);

          //通过工厂获取会话对象
          SqlSession sqlSession = factory.openSession();

          //通过sqlSession获取实现类
          //两种方法获得
          CountryDao countryDao = sqlSession.getMapper(CountryDao.class);

          System.out.println(countryDao.getCountryCount());

          int i = sqlSession.selectOne("getCountryCount");
          System.out.println(i);
          session.close();
          
      }catch (IOException e)
      {
          e.printStackTrace();
      }
    }
}

标签:country,生成,org,Mybatis,注解,import,千峰,方法
来源: https://blog.csdn.net/weixin_47464608/article/details/123588740

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有