[J2EE]MyBatis HelloWorld

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 一、MyBatis简介iBatis是apche的一个开源项目,2010年迁移到google code后改名为MyBatis,2013年前已到github.MyBatis是一个基于java的持久层框架,与hibernate相比更加简单。

一、MyBatis简介


iBatis是apche的一个开源项目,2010年迁移到google code后改名为MyBatis,2013年前已到github.MyBatis是一个基于java的持久层框架,与hibernate相比更加简单。关于MyBatis和Hibernate的对比,可参考这篇博客: Hibernate与 MyBatis的比较.

二、MyBatis特点


  1. 开源的优秀持久层框架
  2. sql语句与代码分离
  3. 面向配置编程
  4. 支持复杂数据映射
  5. 动态sql

三、MyBatis开发环境搭建


工程目录:
这里写图片描述

3.1下载jar包

  1. mybatis-3.2.8.zip(3.2.8之后的jar包没有log4j,这一点我暂时也不知道为什么)
  2. mysql-connector,选择JDBC Driver for MySQL下载。

3.2在mysql中新建数据库

MyBatis是一个持久层框架,也就是和数据库打交道的,mysql新建一个数据库用来做测试。

create database book

建立一张user表:

Create Table: CREATE TABLE `User` (
  `id` int(10) NOT NULL AUTO_INCREMENT,
  `username` varchar(20) NOT NULL,
  `passWord` varchar(20) NOT NULL,
  PRIMARY KEY (`id`)
) 

插入几条记录:

+----+----------+------------+
| id | username | passWord   |
+----+----------+------------+
|  1 | 小华     | xiaohua    |
|  2 | 柯南     | 666666     |
|  3 | 慕白     | 123456     |
|  4 | 小明     | xiaoming12 |
+----+----------+------------+

这样数据库准备好了,也可以在mysql图形界面中操作。

3.3配置开发环境

3.3.1新建java project

在eclipse中新建java project,命名为Mybatis HelloWorld

3.3.2导入jar包

单击工程名右键->build path->config build path->add external jars,加入以下jar包mysql-connector-java-5.1.38-bin.jarmybatis-3.2.8.jarasm-3.3.1.jarcglib-2.2.2.jarcommons-logging-1.1.1.jarjavassist-3.17.1-GA.jarlog4j-1.2.17.jarlog4j-api-2.0.2.jarlog4j-core-2.0.2.jarslf4j-api-1.7.5.jarslf4j-log4j12-1.7.5.jar

3.3.3配置log4j

在src目录下添加log4j.properties,log4j可用来打印sql查询语句:

log4j.rootLogger=DEBUG, CONSOLE

#Console
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout

log4j.logger.java.sql.ResultSet=INFO
log4j.logger.org.apache=INFO
log4j.logger.java.sql.Connection=DEBUG
log4j.logger.java.sql.Statement=DEBUG
log4j.logger.java.sql.PreparedStatement=DEBUG

3.3.4 添加User.java

新建ucas.book.map、ucas.book.pojo、ucas.book.test包
在ucas.book.pojo包下新建User实体:

package ucas.book.pojo;

public class User {
    private int id;
    private String username;
    private String password;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

}

3.3.5Mybatis配置文件

在ucas.book.map包下加入mybatis.xml和UserMapper.xml:

数据库连接和相关配置信息写在mybatis.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>

    <typeAliases>
        <typeAlias alias="User" type="ucas.book.pojo.User" />
    </typeAliases>


    <environments default="development">
        <environment id="development">
            <!-- 事务管理类型,JDBC表示直接使用JDBC的提交和回滚设置,依赖于数据源得到的连接来管理事务 -->
            <transactionManager type="JDBC" />
            <!-- 数据库连接池POOLED表示使用数据库连接池 -->
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver" />
                <property name="url" value="jdbc:mysql://localhost:3306/book?useSSL=true" />
                <property name="username" value="root" />
                <property name="password" value="napoay" />
            </dataSource>
        </environment>
    </environments>

    <mappers>
        <!-- SQL代码和映射信息配置文件 -->
        <mapper resource="ucas/book/map/UserMapper.xml" />
    </mappers>
</configuration>

sql代码写在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">
<!-- namespace必须是唯一的,建议用该文件所在的包路径全类名 -->
<mapper namespace="ucas.book.map.UserMapper">
    <!-- select:表示这是一个查询操作 -->
    <!-- id:用来配合namespace来定位这个操作,也就是在调用时,将采用ucas.book.pojo.User.getUserById -->
    <!-- resultType:表示返回值类型,必须是全类名,MyBatis将自动为我们将查询结果封装成Student对象 -->
    <!-- parameterType:表示传进来的参数的类型,因为传的是id主键,所以是int型 -->
    <select id="getUserById" parameterType="int" resultType="ucas.book.pojo.User">
        <!-- #{id}:表示占位符,也就是调用时必须为其传一个id参数进来,注意是#不是$ -->
        select * from User where id = #{id}
    </select>
</mapper>

<select></select>中写的是通过id查询记录的sql语句。

3.3.6测试代码

package ucas.book.test;

import java.io.IOException;
import java.io.Reader;

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 ucas.book.pojo.User;

public class TestUser {
    public static void main(String[] args) {
        String resource = "ucas/book/map/mybatis.xml";
        Reader reader = null;
        SqlSession session;

        try {
            reader = Resources.getResourceAsReader(resource);
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(reader);

        session = factory.openSession();
        User user = session.selectOne("getUserById", 1);

        System.out.println("\nusername:" + user.getUsername());

        session.close();

    }
}

结果:
这里写图片描述

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
监控 前端开发 Java
J2EE分布式架构 dubbo+springmvc+mybatis+ehcache+redis分布式架构
用户管理:用户是系统操作者,该功能主要完成系统用户配置。 2.机构管理:配置系统组织机构(公司、部门、小组),树结构展现,可随意调整上下级。 3.区域管理:系统城市区域模型,如:国家、省市、地市、区县的维护。 4.菜单管理:配置系统菜单,操作权限,按钮权限标识等。
3738 0
|
Java 数据库连接 Apache
[J2EE]MyBatis增删改查
MyBatis HelloWorld写了MyBatis基本配置,增删改查操作也类似。 UserMapper.xml se...
827 0
|
2月前
|
Java 数据库连接 Maven
mybatis使用一:springboot整合mybatis、mybatis generator,使用逆向工程生成java代码。
这篇文章介绍了如何在Spring Boot项目中整合MyBatis和MyBatis Generator,使用逆向工程来自动生成Java代码,包括实体类、Mapper文件和Example文件,以提高开发效率。
145 2
mybatis使用一:springboot整合mybatis、mybatis generator,使用逆向工程生成java代码。
|
2月前
|
SQL JSON Java
mybatis使用三:springboot整合mybatis,使用PageHelper 进行分页操作,并整合swagger2。使用正规的开发模式:定义统一的数据返回格式和请求模块
这篇文章介绍了如何在Spring Boot项目中整合MyBatis和PageHelper进行分页操作,并且集成Swagger2来生成API文档,同时定义了统一的数据返回格式和请求模块。
75 1
mybatis使用三:springboot整合mybatis,使用PageHelper 进行分页操作,并整合swagger2。使用正规的开发模式:定义统一的数据返回格式和请求模块
|
2月前
|
前端开发 Java Apache
Springboot整合shiro,带你学会shiro,入门级别教程,由浅入深,完整代码案例,各位项目想加这个模块的人也可以看这个,又或者不会mybatis-plus的也可以看这个
本文详细讲解了如何整合Apache Shiro与Spring Boot项目,包括数据库准备、项目配置、实体类、Mapper、Service、Controller的创建和配置,以及Shiro的配置和使用。
508 1
Springboot整合shiro,带你学会shiro,入门级别教程,由浅入深,完整代码案例,各位项目想加这个模块的人也可以看这个,又或者不会mybatis-plus的也可以看这个
|
2月前
|
SQL Java 数据库连接
mybatis使用二:springboot 整合 mybatis,创建开发环境
这篇文章介绍了如何在SpringBoot项目中整合Mybatis和MybatisGenerator,包括添加依赖、配置数据源、修改启动主类、编写Java代码,以及使用Postman进行接口测试。
26 0
mybatis使用二:springboot 整合 mybatis,创建开发环境
|
2月前
|
Java 数据库连接 API
springBoot:后端解决跨域&Mybatis-Plus&SwaggerUI&代码生成器 (四)
本文介绍了后端解决跨域问题的方法及Mybatis-Plus的配置与使用。首先通过创建`CorsConfig`类并设置相关参数来实现跨域请求处理。接着,详细描述了如何引入Mybatis-Plus插件,包括配置`MybatisPlusConfig`类、定义Mapper接口以及Service层。此外,还展示了如何配置分页查询功能,并引入SwaggerUI进行API文档生成。最后,提供了代码生成器的配置示例,帮助快速生成项目所需的基础代码。
152 1
|
3月前
|
缓存 前端开发 Java
【Java面试题汇总】Spring,SpringBoot,SpringMVC,Mybatis,JavaWeb篇(2023版)
Soring Boot的起步依赖、启动流程、自动装配、常用的注解、Spring MVC的执行流程、对MVC的理解、RestFull风格、为什么service层要写接口、MyBatis的缓存机制、$和#有什么区别、resultType和resultMap区别、cookie和session的区别是什么?session的工作原理
【Java面试题汇总】Spring,SpringBoot,SpringMVC,Mybatis,JavaWeb篇(2023版)
|
2月前
|
前端开发 Java 数据库连接
表白墙/留言墙 —— 中级SpringBoot项目,MyBatis技术栈MySQL数据库开发,练手项目前后端开发(带完整源码) 全方位全步骤手把手教学
本文是一份全面的表白墙/留言墙项目教程,使用SpringBoot + MyBatis技术栈和MySQL数据库开发,涵盖了项目前后端开发、数据库配置、代码实现和运行的详细步骤。
73 0
表白墙/留言墙 —— 中级SpringBoot项目,MyBatis技术栈MySQL数据库开发,练手项目前后端开发(带完整源码) 全方位全步骤手把手教学
|
2月前
|
Java 数据库连接 mybatis
Springboot整合Mybatis,MybatisPlus源码分析,自动装配实现包扫描源码
该文档详细介绍了如何在Springboot Web项目中整合Mybatis,包括添加依赖、使用`@MapperScan`注解配置包扫描路径等步骤。若未使用`@MapperScan`,系统会自动扫描加了`@Mapper`注解的接口;若使用了`@MapperScan`,则按指定路径扫描。文档还深入分析了相关源码,解释了不同情况下的扫描逻辑与优先级,帮助理解Mybatis在Springboot项目中的自动配置机制。
162 0
Springboot整合Mybatis,MybatisPlus源码分析,自动装配实现包扫描源码
下一篇
DataWorks