MyBatis:快速入门代码实例(maven代码版)

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
日志服务 SLS,月写入数据量 50GB 1个月
云数据库 RDS MySQL,高可用系列 2核4GB
简介: MyBatis:快速入门代码实例(maven代码版)

1. MyBatis实例


1.1 添加Mybatis依赖


<dependencies>
    <dependency>
        <groupId>org.mybatis</groupId>
        <artifactId>mybatis</artifactId>
        <version>3.5.1</version>
    </dependency>
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.6</version>
    </dependency>
</dependencies>


1.2 创建MyBatis配置文件


在 resources 文件夹中创建 SqlMapConfig.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="development">
        <!-- 可以配置多个数据源环境,默认使用default中的值 -->
        <environment id="development">
            <!-- 使用jdbc的事务管理 -->
            <transactionManager type="JDBC" />
            <!-- 配置数据源,并使用自带数据库连接池 -->
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver" />
                <property name="url"
                    value="jdbc:mysql://localhost:3306/emp?characterEncoding=utf-8" />
                <property name="username" value="root" />
                <property name="password" value="123" />
            </dataSource>
        </environment>
    </environments>
    <!-- 配置映射文件,可配置多个 -->
    <mappers>
        <mapper resource="com/neusoft/po/Emp.xml" />
    </mappers>
</configuration>


transactionManager标签的type属性有两种取值:


  1. JDBC:全部使用jdbc的事务管理


  1. MANAGED:不使用事务管理,也从不提交


dataSource标签的type属性有三种取值:


  1. POOLED:使用Mybatis自带的数据库连接池


  1. UNPOOLED:不使用任何数据库连接池


  1. JNDI:jndi形式使用数据库连接


如果是spring直接在yml或者properties里写


spring:
  datasource:
    url: 'jdbc:mysql://localhost:3306/oa-0505?serverTimezone=UTC'
    username: 'root'
    password: '1314'
    driver-class-name: com.mysql.cj.jdbc.Driver
mybatis:
  mapper-locations: classpath:mapper/*.xml
  type-aliases-package: top.beinggod.oa.backend.pojo
  configuration:
    map-underscore-to-camel-case: true


1.3.创建po类


创建 Emp.java类


package com.neusoft.po;
public class Emp {
    private Integer empno;
    private String ename;
    private String job;
    private String hiredate;
    private Double sal;
    private Integer deptno;
    @Override
    public String toString() {
        return empno+"\t"+ename+"\t"+job+"\t"+hiredate+"\t"+sal+"\t"+deptno;
    }
    //get/set方法...
}


注意:po类属性名必须与数据库表的字段名一致。


1.4.创建映射文件


在 po 类所在包下,创建相同名称的映射文件:Emp.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="emp">
    <select id="getEmpById" parameterType="int" resultType="com.neusoft.po.Emp">
        select * from emp where empno = #{empno}
    </select>
</mapper>


注意: mapper标签:映射文件的根标签。 mapper标签namespace属性:命名空间,对sql进行分类管理,可防止id重复


select标签:表示查询。 select标签id属性:此属性要唯一。这个id可称为statement的id。 select标签parameterType属性:sql参数的类型。 select标签resultType属性:sql语句执行后返回的类型。


sql语句:


#{}: 表示sql参数,一个占位符。


当parameterType属性为对象类型时:#{} 中的参数名为对象的属性名。 当parameterType属性为单个值时,参数名可以任意。


从映射文件中可以看到:MyBatis会根据字段名与实体对象中的属性名进行映射,从而实现自动将查询数据注入到实体对象的每一个属性中。这就是输出映射。


1.5.测试


package com.neusoft;
import java.io.InputStream;
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 com.neusoft.po.Emp;
public class Test {
    public static void main(String[] args) {
        try {
            //读取配置文件,获得配置文件信息
            InputStream input = Resources.getResourceAsStream("SqlMapConfig.xml");
            //通过配置信息创建SqlSessionFactory
            SqlSessionFactory ssf = new SqlSessionFactoryBuilder().build(input);
            //通过SqlSessionFactory打开数据库会话
            SqlSession sqlSession = ssf.openSession();
            //通过SqlSession的selectOne(返回一行记录时使用)方法执行sql语句
            Emp emp = sqlSession.selectOne("emp.getEmpById",7521);
            System.out.println(emp);
            //关闭数据库会话
            sqlSession.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}


  1. 当返回一条记录时,使用 SqlSession 的 selectOne 方法执行sql语句,MyBatis会将返回记录输出映射为一个java对象。


  1. 当返回多条记录时,使用 SqlSession 的 selectList 方法执行sql语句,MyBatis会将返回记录输出映射为一个java集合。


  1. selectOne 方法和 selectList 方法都只有两个参数:


    第一个参数为指定的sql语句,根据映射文件中的id,注意要加上命名空间


    第二个参数是给 sql语句参数传值(可以是一个值、或一个对象)


1.6.使用log4j输出日志


上面实例运行后,在控制台中只输出了查询结果,却没有中间的执行过程信息。这对我们开发时进行错误调试是非常不利的。我们希望在开发时,能够看到详细的执行过程


MyBatis默认使用log4j输出日志。所以,下面使用log4j来让MyBatis输出更多的日志信息。


  1. 添加log4j依赖


<!-- 使用log4j输出更多的日志信息 -->
<dependency>
    <groupId>log4j</groupId>
    <artifactId>log4j</artifactId>
    <version>1.2.17</version>
</dependency>


  1. 在resources文件夹中添加log4j配置文件(log4j.properties)


### direct log messages to stdout ###
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %m%n
### direct messages to file mylog.log ###
### log4j.appender.file=org.apache.log4j.FileAppender
### log4j.appender.file.File=d:mylog.log
### log4j.appender.file.layout=org.apache.log4j.PatternLayout
### log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %m%n
### set log levels - for more verbose logging change 'debug?info?warn?error' ###
### log4j.rootLogger=debug,stdout,file
log4j.rootLogger=debug,stdout


相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。 &nbsp; 相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/mysql&nbsp;
相关文章
|
4月前
|
Java 数据库连接 数据库
Spring boot 使用mybatis generator 自动生成代码插件
本文介绍了在Spring Boot项目中使用MyBatis Generator插件自动生成代码的详细步骤。首先创建一个新的Spring Boot项目,接着引入MyBatis Generator插件并配置`pom.xml`文件。然后删除默认的`application.properties`文件,创建`application.yml`进行相关配置,如设置Mapper路径和实体类包名。重点在于配置`generatorConfig.xml`文件,包括数据库驱动、连接信息、生成模型、映射文件及DAO的包名和位置。最后通过IDE配置运行插件生成代码,并在主类添加`@MapperScan`注解完成整合
631 1
Spring boot 使用mybatis generator 自动生成代码插件
|
5月前
|
Java 测试技术 项目管理
【JavaEE】从 0 到 1 掌握 Maven 构建 Java 项目核心技巧 解锁 Java 项目高效管理实用实例
本文从Maven基础概念讲起,涵盖安装配置、核心概念(如POM与依赖管理)及优化技巧。结合Java Web项目实例,演示如何用Maven构建和管理项目,解决常见问题,助你高效掌握这一强大工具,提升Java开发与项目管理能力。适合初学者及进阶开发者学习。资源链接:[点此获取](https://pan.quark.cn/s/14fcf913bae6)。
169 6
|
XML Java 数据库连接
mybatis plus模板快速生成代码
MybatisX 是一款提升开发效率的 IDEA 插件,尤其适用于处理多表情况。通过 MybatisX-Generator,用户能轻松生成实体类、服务类、Mapper 接口及 XML 文件,显著减少工作量。安装步骤简便:通过 File -&gt; Settings -&gt; Plugins -&gt; Browse Repositories 完成搜索与安装流程。集成数据库后,右键所需操作的数据表,选择 MyBatisX-Generator 进行自动化代码生成。更多细节可参考相关教程。
172 0
|
12月前
|
Java 数据库连接 Maven
mybatis使用一:springboot整合mybatis、mybatis generator,使用逆向工程生成java代码。
这篇文章介绍了如何在Spring Boot项目中整合MyBatis和MyBatis Generator,使用逆向工程来自动生成Java代码,包括实体类、Mapper文件和Example文件,以提高开发效率。
460 2
mybatis使用一:springboot整合mybatis、mybatis generator,使用逆向工程生成java代码。
|
12月前
|
前端开发 Java Apache
Springboot整合shiro,带你学会shiro,入门级别教程,由浅入深,完整代码案例,各位项目想加这个模块的人也可以看这个,又或者不会mybatis-plus的也可以看这个
本文详细讲解了如何整合Apache Shiro与Spring Boot项目,包括数据库准备、项目配置、实体类、Mapper、Service、Controller的创建和配置,以及Shiro的配置和使用。
2529 1
Springboot整合shiro,带你学会shiro,入门级别教程,由浅入深,完整代码案例,各位项目想加这个模块的人也可以看这个,又或者不会mybatis-plus的也可以看这个
|
12月前
|
搜索推荐 Java 数据库连接
Java|在 IDEA 里自动生成 MyBatis 模板代码
基于 MyBatis 开发的项目,新增数据库表以后,总是需要编写对应的 Entity、Mapper 和 Service 等等 Class 的代码,这些都是重复的工作,我们可以想一些办法来自动生成这些代码。
230 6
|
11月前
|
SQL Java 数据库连接
MyBatis-Plus快速入门:从安装到第一个Demo
本文将带你从零开始,快速入门 MyBatis-Plus。我们将首先介绍如何安装和配置 MyBatis-Plus,然后通过一个简单的示例演示如何使用它进行数据操作。无论你是 MyBatis 的新手还是希望提升开发效率的老手,本文都将为你提供清晰的指导和实用的技巧。
2720 0
MyBatis-Plus快速入门:从安装到第一个Demo
|
12月前
|
Java 应用服务中间件 Maven
【终极解决方案】IDEA maven 项目修改代码不生效。
【终极解决方案】IDEA maven 项目修改代码不生效。
1583 1
|
11月前
|
Java 测试技术 项目管理
maven编译本地代码的命令是什么?
【10月更文挑战第26天】maven编译本地代码的命令是什么?
420 0
|
SQL Java 数据库连接
JavaWeb基础3——Maven基础&MyBatis
构建工具Maven、Maven安装配置、基本使用、IDEA使用Maven、依赖管理、插件、Mybatis、核心配置文件mybatis-config.xml、Mapper代理开发、配置文件实现增删改查、Mybatis参数传递、注解实现增删改查
JavaWeb基础3——Maven基础&MyBatis