MyBatis搭建开发环境与数据操作实例

MyBatis是Apache的一个Java开源项目,是一款支持动态SQL语句的持久化框架,支持目的是让开发人员将精力集中在SQL语句上。下面将介绍如何搭建MyBatis的开发环境。

1、下载相关jar包

需要下载的jar包:MyBatis框架jar包和JDBC数据库驱动。

MyBatis的jar包下载地址:https://github.com/mybatis/mybatis-3/releases

MySQL数据库驱动下载地址:https://dev.mysql.com/downloads/connector/j/

将下载后的jar包添加到项目中。

如果使用Maven,则pom.xml文件配置如下:

<!-- MyBatis框架 -->
<dependency>
  <groupId>org.mybatis</groupId>
  <artifactId>mybatis</artifactId>
  <version>3.5.4</version>
</dependency>
<!-- MySQL的JDBC数据库驱动 -->
<dependency>
  <groupId>mysql</groupId>
  <artifactId>mysql-connector-java</artifactId>
  <version>8.0.17</version>
</dependency>
<!-- log4j日志框架 -->
<dependency>
  <groupId>log4j</groupId>
  <artifactId>log4j</artifactId>
  <version>1.2.17</version>
</dependency>

2、创建数据库表

在MySQL数据库中,创建 tb_user(用户信息表),并添加测试数据。

-- 判断数据表是否存在,存在则删除
DROP TABLE IF EXISTS tb_user;
 
-- 创建“用户信息”数据表
CREATE TABLE IF NOT EXISTS tb_user
( 
	id INT AUTO_INCREMENT PRIMARY KEY COMMENT '用户编号',
	user_name VARCHAR(50) NOT NULL COMMENT '用户姓名',
	blog_url VARCHAR(50) NOT NULL COMMENT '博客地址',
	remark VARCHAR(50) COMMENT '备注'
) COMMENT = '用户信息表';

-- 添加测试数据
INSERT INTO tb_user(user_name,blog_url,remark) VALUES('pan_junbiao的博客','https://blog.csdn.net/pan_junbiao','您好,欢迎访问 pan_junbiao的博客');
INSERT INTO tb_user(user_name,blog_url,remark) VALUES('pan_junbiao的博客_02','https://blog.csdn.net/pan_junbiao','您好,欢迎访问 pan_junbiao的博客');

3、搭建项目环境

创建Java项目,将其命名为MyBatisFirstDemo,并在项目中src下创建如下文件:

com.pjb.mybatis.datasource包:数据库连接。

com.pjb.mybatis.po包:持久层对象。

com.pjb.mybatis.sqlmap包:SQL映射配置文件。

com.pjb.mybatis.test包:测试主程序。

log4j.properties配置文件:log4j日志输出环境配置参数文件。

SqlMapConfig.xml配置文件:MyBatis配置文件。

项目结构如下图:

3.1 编写日志输出环境配置文件

编写log4j.properties配置文件,其配置信息如下:

# Global logging configuration
# 在开发环境下日志级别要设置成 DEBUG,生产环境设置为 INFO 或 ERROR
log4j.rootLogger=DEBUG,stdout
# Console output
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n

3.2 编写数据库连接池配置文件

编写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>
    <!-- 全局配置参数 -->
    <settings>
        <!-- 指定 MyBatis 所用日志的具体实现,未指定时将自动查找 -->
        <setting name="logImpl" value="LOG4J"/>
        <!-- 开启自动驼峰命名规则(camel case)映射 -->
        <setting name="mapUnderscoreToCamelCase" value="true"/>
    </settings>

    <!-- 和Spring整合后environments配置将被废除 -->
    <environments default="development">
        <environment id="development">
            <!-- 使用JDBC事务管理 -->
            <transactionManager type="JDBC"/>
            <!-- 数据库连接池 -->
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/db_admin?useSSL=false&amp;serverTimezone=GMT%2b8"/>
                <property name="username" value="root"/>
                <property name="password" value="123456"/>
            </dataSource>
        </environment>
    </environments>

    <!-- 加载映射文件 -->
    <mappers>
        <mapper resource="com/pjb/mybatis/sqlmap/UserMapper.xml" />
    </mappers>
</configuration>

3.3 编写数据交互类

(1)在com.pjb.mybatis.datasource包下,创建DataConnection.java类,用于获取数据库连接。

package com.pjb.mybatis.datasource;

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.InputStream;

/**
 * 数据库连接类
 * @author pan_junbiao
 **/
public class DataConnection
{
    private String resource = "SqlMapConfig.xml";
    private SqlSessionFactory sqlSessionFactory;
    private SqlSession sqlSession;

    public SqlSession getSqlSession()
    {
        try
        {
            InputStream inputStream = Resources.getResourceAsStream(resource);
            //创建会话工厂,传入MyBatis配置文件信息
            sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
            sqlSession = sqlSessionFactory.openSession();
        }
        catch (Exception ex)
        {
            ex.printStackTrace();
        }
        return sqlSession;
    }
}

(2)在com.pjb.mybatis.po包下,创建User.java类,用户信息持久化类。

package com.pjb.mybatis.po;

import java.io.Serializable;

/**
 * 用户信息持久化类
 * @author pan_junbiao
 **/
public class User implements Serializable
{
    private int id; //用户编号
    private String userName; //用户姓名
    private String blogUrl; //博客地址
    private String remark; //备注

    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 getBlogUrl()
    {
        return blogUrl;
    }

    public void setBlogUrl(String blogUrl)
    {
        this.blogUrl = blogUrl;
    }

    public String getRemark()
    {
        return remark;
    }

    public void setRemark(String remark)
    {
        this.remark = remark;
    }
}

(3)在com.pjb.mybatis.sqlmap包下,创建UserMapper.xml配置文件,用户信息SQL映射配置文件。

<?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="test">
    <!-- 根据用户编号,查询单个用户实体 -->
    <select id="findUserById" parameterType="int" resultType="com.pjb.mybatis.po.User">
        SELECT * FROM tb_user WHERE id = #{id}
    </select>

    <!-- 根据用户名称,模糊查询用户列表 -->
    <select id="findUserByUserName" parameterType="java.lang.String" resultType="com.pjb.mybatis.po.User">
        SELECT * FROM tb_user WHERE user_name LIKE '%${value}%'
    </select>

    <!-- 新增用户 -->
    <insert id="insertUser" parameterType="com.pjb.mybatis.po.User">
        INSERT INTO tb_user(user_name,blog_url,remark)
        VALUES(#{userName},#{blogUrl},#{remark});
    </insert>

    <!-- 修改用户 -->
    <update id="updateUser" parameterType="com.pjb.mybatis.po.User">
      UPDATE tb_user SET user_name = #{userName} ,blog_url=#{blogUrl} ,remark=#{remark} WHERE id = #{id}
    </update>

    <!-- 删除用户 -->
    <delete id="deleteUser" parameterType="java.lang.Integer">
        DELETE FROM tb_user WHERE id = #{id}
    </delete>
</mapper>

3.4 编写测试用例

在com.pjb.mybatis.test包下,创建MyBatisTest.java类,并编写相关测试用例。

3.4.1 查询操作(查询单个实体)

/**
 * 根据用户编号,查询单个用户实体
 */
public static void findUserByIdTest()
{
    DataConnection dataConnection = new DataConnection();
    SqlSession sqlSession = dataConnection.getSqlSession();
    User user = sqlSession.selectOne("test.findUserById",1);
    System.out.println("用户编号:"+user.getId());
    System.out.println("用户姓名:"+user.getUserName());
    System.out.println("博客地址:"+user.getBlogUrl());
    System.out.println("备注信息:"+user.getRemark());
    sqlSession.close();
}

执行结果:

3.4.2 查询操作(查询多个实体)

/**
 * 根据用户名称,模糊查询用户列表
 */
public static void findUserByUserNameTest()
{
    DataConnection dataConnection = new DataConnection();
    SqlSession sqlSession = dataConnection.getSqlSession();
    List<User> userList = sqlSession.selectList("test.findUserByUserName","pan_junbiao的博客");
    for (User user : userList)
    {
        System.out.println("用户编号:"+user.getId());
        System.out.println("用户姓名:"+user.getUserName());
        System.out.println("博客地址:"+user.getBlogUrl());
        System.out.println("备注信息:"+user.getRemark());
    }
    sqlSession.close();
}

执行结果:

关于selectOne()与selectList()方法:在加载SQL映射文件中的某个SQL配置时,可以调用SqlSession类提供的方法。在使用查询语句时,如果查询的数据时唯一的,也就是只有一条数据,那么可以使用selectOne()方法进行查询。如果查询的数据可能多于一条,那么可以使用selectList()方法进行查询。

3.4.3 新增操作

/**
 * 新增用户
 */
public static void insertUserTest()
{
    DataConnection dataConnection = new DataConnection();
    SqlSession sqlSession = dataConnection.getSqlSession();
    User user = new User();
    user.setUserName("pan_junbiao的博客");
    user.setBlogUrl("https://blog.csdn.net/pan_junbiao");
    user.setRemark("您好,欢迎访问 pan_junbiao的博客");
    int result = sqlSession.insert("test.insertUser",user);
    sqlSession.commit();
    sqlSession.close();
    System.out.println("新增用户完成!");
    System.out.println("新增结果:" + result);
}

执行结果:

3.4.4 修改操作

/**
 * 修改用户
 */
public static void updateUserTest()
{
    DataConnection dataConnection = new DataConnection();
    SqlSession sqlSession = dataConnection.getSqlSession();
    User user = new User();
    user.setId(3);
    user.setUserName("pan_junbiao的博客_002");
    user.setBlogUrl("https://blog.csdn.net/pan_junbiao");
    user.setRemark("您好,欢迎访问 pan_junbiao的博客_002");
    int result = sqlSession.update("test.updateUser",user);
    sqlSession.commit();
    sqlSession.close();
    System.out.println("修改用户完成!");
    System.out.println("修改结果:" + result);
}

执行结果:

3.4.5 删除操作

/**
 * 删除用户
 */
public static void deleteUserTest()
{
    DataConnection dataConnection = new DataConnection();
    SqlSession sqlSession = dataConnection.getSqlSession();
    int result = sqlSession.update("test.deleteUser", 3);
    sqlSession.commit();
    sqlSession.close();
    System.out.println("删除用户完成!");
    System.out.println("删除结果:" + result);
}

执行结果:

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

pan_junbiao

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值