首页 > 其他分享 >MyBatis-01-Demo

MyBatis-01-Demo

时间:2024-04-16 22:45:54浏览次数:12  
标签:01 java -- Demo private mybatis import MyBatis org

数据库 DDL

CREATE DATABASE `mybatis_demo01`;
-- mybatis_demo01.`user` definition

CREATE TABLE `user` (
  `id` int NOT NULL AUTO_INCREMENT,
  `username` varchar(100) DEFAULT NULL,
  `birthday` datetime DEFAULT NULL,
  `sex` char(1) DEFAULT NULL,
  `address` varchar(100) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

pom

<dependency>
  <groupId>org.mybatis</groupId>
  <artifactId>mybatis</artifactId>
  <version>3.5.9</version>
</dependency>

<dependency>
  <groupId>mysql</groupId>
  <artifactId>mysql-connector-java</artifactId>
  <version>8.0.28</version>
</dependency>

<dependency>
  <groupId>org.projectlombok</groupId>
  <artifactId>lombok</artifactId>
  <version>1.18.32</version>
</dependency>

Mybatis 配置文件

mybatis-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>
  <environments default="default">
    <environment id="default">
      <!-- 事务类型 -->
      <transactionManager type="JDBC"/>
      <!-- 数据源类型 -->
      <dataSource type="POOLED">
        <!-- 数据库连接基本信息 -->
        <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
        <property name="url"
              value="jdbc:mysql://127.0.0.1:3306/mybatis_demo01?useUnicode=true&amp;characterEncoding=utf8&amp;connectTimeout=1000&amp;socketTimeout=3000&amp;autoReconnect=true&amp;useSSL=false&amp;serverTimezone=UTC"/>
        <property name="username" value="root"/>
        <property name="password" value="123456"/>
      </dataSource>
    </environment>
  </environments>

  <!-- 映射配置文件位置 -->
  <mappers>
    <!-- 注解 OR 包路径的 XML -->
    <!--<mapper class=""></mapper>-->
    <!-- XML 路径 -->
    <!-- 这样不行, 那么 Mybatis 支持哪些形式的呢,只能配置一个吗?通配符呢 -->
    <!--<mapper resource="classpath:mapper/*"/>-->
    <mapper resource="mapper/UserMapper.xml"/>
    <!-- XML 路径 -->
    <!--<mapper url=""></mapper>-->
    <!-- 注解 PR 包路径的 XML, 包下的都扫描 -->
    <!--<package name=""/>-->
  </mappers>
</configuration>

mapper/UserMapper.xml

<?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 namespace="cn.lemon.dao.UserDao">

  <resultMap id="BaseResultMap" type="cn.lemon.domain.User">
    <id property="id" column="id" jdbcType="INTEGER"/>
    <result property="username" column="username" jdbcType="VARCHAR"/>
    <result property="birthday" column="birthday" jdbcType="TIMESTAMP"/>
    <result property="sex" column="sex" jdbcType="CHAR"/>
    <result property="address" column="address" jdbcType="VARCHAR"/>
  </resultMap>

  <sql id="Base_Column_List">
    id,username,birthday,
    sex,address
  </sql>
  <!-- 返回类型必须写(非JavaBean也必须写吗),JavaBean 一般要使用 resultMap(阿里巴巴的规范) -->
  <select id="findAll" resultType="cn.lemon.domain.User">
    select *
    from user;
  </select>
</mapper>

Java 代码

User

package cn.lemon.domain;

import lombok.Data;

import java.io.Serializable;
import java.util.Date;

@Data
public class User implements Serializable {
  /**
   *
   */
  private Integer id;

  /**
   * 用户名称
   */
  private String username;

  /**
   * 生日
   */
  private Date birthday;

  /**
   * 性别
   */
  private String sex;

  /**
   * 地址
   */
  private String address;

  private static final long serialVersionUID = 1L;

}

UserDao

package cn.lemon.dao;

import cn.lemon.domain.User;

import java.util.List;


public interface UserDao {

  /**
   * 查询所有用户
   *
   * @return 用户列表,无则返回空列表
   */
  List<User> findAll();

}

测试

package cn.lemon.dao;

import cn.lemon.domain.User;
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 java.io.IOException;
import java.io.InputStream;
import java.util.Arrays;
import java.util.List;

public class UserDaoTest {

  public static void main(String[] args) throws IOException {
    // 使用流程
    // 1. 读取配置文件
    InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml");
    // 2. 创建 SqlSessionFactory 工厂
    SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
    // 3. 生产 SqlSession 对象
    SqlSession sqlSession = sqlSessionFactory.openSession();
    // 4. 获取 代理对象
    UserDao userDao = sqlSession.getMapper(UserDao.class);
    // 5. 执行方法
    List<User> users = userDao.findAll();
    System.out.println(Arrays.toString(users.toArray()));
    // 6. 释放资源
    sqlSession.close();
    inputStream.close();
  }
}

标签:01,java,--,Demo,private,mybatis,import,MyBatis,org
From: https://www.cnblogs.com/chenxingyang/p/18122935

相关文章

  • MyBatis-02-别名
    别名TypeAliasRegistry默认注册了很多别名,构造函数注册的publicTypeAliasRegistry(){registerAlias("string",String.class);registerAlias("byte",Byte.class);registerAlias("char",Character.class);registerAlias("character"......
  • MyBatis-03-environment
    配置<environmentsdefault="default"><environmentid="default"><!--事务类型--><transactionManagertype="JDBC"/><!--数据源类型--><dataSourcetype="POOLED">&l......
  • 01 多线程
    线程,进程,多线程继承Thread类//创建线程方式一:继承Thread类,重写run()方法,调用start开启线程线程开始不一定立即执行,由CPU调度执行packagecom.mysoft.demo01;//创建线程方式一:继承Thread类,重写run()方法,调用start开启线程//总结:注意,线程开始不一定立即执行,由CPU调度执行pub......
  • P3295 [SCOI2016] 萌萌哒(倍增并查集)
    题意简述有一个长为\(n\)的数字序列\(s\),有\(q\)组限制\(l_1,r_1,l_2,r_2\)形如\(s_{l_1,\cdots,r_1}=s_{l_2\cdots,r_2}\),求满足所有限制的\(s\)的方案数,数字序列不能有前导0。\(n,q\le10^5\),保证\([l_1,r_1]\)和\([l_2,r_2]\)大小相等。分析字符之间的等量......
  • 前端学习-vue视频学习016-vue3新组件
    尚硅谷视频教程Teleport:让部分元素脱离原来的位置,到to指定的位置去此处指定了弹窗到body标签内<template><h4>Model</h4><button@click="isShow=true">打开弹窗</button><Teleportto='body'><divclass="tanchuang&q......
  • 01.大数据技术与应用课堂测试2-数据初级分析分类
     一、 原始数据: 二、 地域维度标准化:地域属性在科技成果分析中作为一个重要维度,其标准取值非常必要,目前我国采用的标准行政区划代码由两部分组成,一部分为行政区划编码,六位数字组成,前两位表示省编码,中间两位代表市编码,后两位表示所属市的区或县编码。一部分为行政区划名称......
  • web server apache tomcat11-01-官方文档入门介绍
    前言整理这个官方翻译的系列,原因是网上大部分的tomcat版本比较旧,此版本为v11最新的版本。开源项目同时也为从零手写实现tomcat提供一些基础和特性的思路。minicat别称【嗅虎】心有猛虎,轻嗅蔷薇。系列文章webserverapachetomcat11-01-官方文档入门介绍webserve......
  • P3523 [POI2011] DYN-Dynamite
    P3523[POI2011]DYN-Dynamite二分+树上贪心首先这题可以二分\(K\),转化为判定性问题:是否存在\(m\)个点使得所有关键节点的\(dis\leK\)。那么意思就是,每个点可以控制\(K\)距离以内的关键点。那么我们可以从叶子节点向上贪心,实在覆盖不到了再选点。那么我们要判断该点是......
  • mybatisplus
    mybatisplus如何实现获取信息通过扫描实体类并通过反射获取实体类信息作为数据库表信息约定:类名、变量名驼峰转下划线作为表名id字段默认为主键常用注解@TableName,@TableId,@TableField@TableField使用场景:成员变量为boolean并且名称为is开头,转化时会去掉is......
  • 3-01. 建造图纸数据及 ItemTooltip 显示资源物品
    添加木头椅子图纸创建BulePrintDataList_SO添加Chair预制体实例化BluePrintDataList_SO20个针叶木头,换一个椅子修改ItemTooltip修改InventoryManager修改ItemTooltip修改ShowItemTooltip修改InventoryManager修改PlayerBag修改ShowItemToolti......