首页 > 其他分享 >Mybatis框架入门

Mybatis框架入门

时间:2024-11-07 22:18:11浏览次数:3  
标签:return String 框架 int void private Mybatis public 入门

IDEA使用Maven部署第一个MyBatis项目,两种方法导入,一个是Jar包的形式,此形式用于初学者学习并完成学校实训作业,第二种则是通过pom.xml文件引入依赖从而避免了从官网下载jar包等问题。

一、创建一个Maven工程:File-->New-->projcet-->Maven

二、导入以下Jar包:New-->Projcet Structure-->Modules-->Dependencies

三、打开DataGrip或者Navicat创建数据库,尝试着插入一些数据,请插入自己所需要测试的数据进行测试(省)

四、开始编写项目,整体项目文件结构如图:

1、在resources目录下建立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>
    <properties resource="jdbc.properties"/>
    <environments default="mysql">
        <environment id="mysql">
            <transactionManager type="JDBC" />
            <dataSource type="POOLED">
                <property name="driver" value="${driver}" />
                <property name="url" value="${url}" />
                <property name="username" value="${username}" />
                <property name="password" value="${password}" />
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <mapper resource="mapper/UserMapper.xml" />
    </mappers>
</configuration>

2、在resources目录下建立JDBC.properties文件和log4j.properties文件

# 数据库连接驱动类
driver=com.mysql.jdbc.Driver
# 数据库(mysql)连接字符串
url=jdbc:mysql://localhost:3306/sosorun?useUnicode=true&characterEncoding=UTF-8
# 数据库用户名
username=root
# 数据库密码
password=123456
#全局日志配置
log4j.rootLogger=ERROR, stdout
#Mybatis 日志配置
log4j.logger.com.hnsoft=DEBUG
# 控制台输出
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、在com.hnsoft.pojo文件夹下创建User.java文件

package com.hnsoft.pojo;

public class User {
    private Integer id;
    private String userName;
    private String passWord;
    private String phone;
    private int gender;
    private int status;
    private String addr;
    private String photo;
    private String birth;
    private String email;
    private int score;

    public Integer getId() {
        return id;
    }

    public void setId(Integer 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;
    }

    public String getPhone() {
        return phone;
    }

    public void setPhone(String phone) {
        this.phone = phone;
    }

    public int getGender() {
        return gender;
    }

    public void setGender(int gender) {
        this.gender = gender;
    }

    public int getStatus() {
        return status;
    }

    public void setStatus(int status) {
        this.status = status;
    }

    public String getAddr() {
        return addr;
    }

    public void setAddr(String addr) {
        this.addr = addr;
    }

    public String getPhoto() {
        return photo;
    }

    public void setPhoto(String photo) {
        this.photo = photo;
    }

    public String getBirth() {
        return birth;
    }

    public void setBirth(String birth) {
        this.birth = birth;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public int getScore() {
        return score;
    }

    public void setScore(int score) {
        this.score = score;
    }

    @Override
    public String toString() {
        return "User [id=" + id + ", userName=" + userName + ", passWord=" + passWord +
                ", phone=" + phone + ", gender=" + gender + ", status=" + status +
                ", addr=" + addr + ", photo=" + photo + ", birth=" + birth +
                ", email=" + email + ", score=" + score + "]";
    }

    public User() {
        super();
    }

}

4、在com.hnsoft.mapper包下创建UserMapper.java接口类

并且在resources目录下创建mapper文件夹,mapper文件夹下创建UserMapper.xml映射文件。这里要特别注意mapper namespace的路径以及select id =应该等于的是UserMapper.java的各种方法不能出错

package com.hnsoft.mapper;

import com.hnsoft.pojo.User;

public interface UserMapper {
    /**
     * 通过用户名和密码查询用户
     * @param uName
     * @param pWord
     * @return User对象
     */
    User findUserByUNameAndPWord(String uName, String pWord);

    /**
     * 通过用户名查询用户数
     * @param uName
     * @return
     */
    int findUserCountByUName(String uName);

    /**
     *  使用用户名和密码添加新游戏玩家
     * @param uName
     * @param pWord
     * @param phone
     * @param gender
     * @return
     */
    int addNewPlayerUser(String uName,String pWord, String phone, int gender);
}
<?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="com.hnsoft.mapper.UserMapper">
    <!-- 通过用户名和密码查询用户 -->
    <select id="findUserByUNameAndPWord" parameterType="String" resultType="com.hnsoft.pojo.User">
        select * from t_user_info where uname = #{uName} and pword = #{pWord}
    </select>

    <select id="findUserCountByUName" parameterType="String" resultType="_int">
        select COUNT(1) from t_user_info where uName=#{uName}
    </select>

    <insert id="addNewPlayerUser">
        INSERT INTO t_user_info (uName, pWord, phone, gender, status, score)
        VALUES (#{uName}, #{pWord}, #{phone}, #{gender}, 1, 1000);
    </insert>
</mapper>

5、从mybatis-config.xml中创建SqlSessionFactory,因为每个MyBatis应用程序都围绕一个SqlSessionFactory的实例。可以使用SqlSessionFactory构建器获取SqlSessionFactory实例。所以我们创建com.hnsoft.utils文件夹,创建MybatisUtils.java

package com.hnsoft.utils;

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;


public class MybatisUtils {

    private static SqlSessionFactory sqlSessionFactory = null;

    static {
        try {
            // 读取mybatis核心配置文件
            InputStream stream = Resources.getResourceAsStream("mybatis-config.xml");
            // 构建会话工厂
            sqlSessionFactory = new SqlSessionFactoryBuilder().build(stream);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    /**
     * 静态单例会话
     * @return
     */
    public static SqlSession getSession() {
        return sqlSessionFactory.openSession();
    }
}

6、划重点!在scr目录下,创建一个Test sources root的Java也就是绿色的Java文件夹,然后再这个Java下创建com.hnsoft.test.MybatisTest.java。为什么要这么做?是因为 IDEA 会自动为测试文件设置合适的类路径和资源加载方式。把测试类放Sources Root 中时,IDEA 可能无法正确处理这些资源,导致配置文件和映射文件加载失败,在我的2022idea版本中,如果我把这个测试类放在了sources root也就是蓝色的Java文件夹下,那么我将获取不到mybatis-config.xml,又因为mybatis-config.xml里面有,所以就是获取不到我指定的UserMapper.xml。他会报错!

<mapper resource="mapper/UserMapper.xml" />

7、测试运行

能够登录成功

如果要执行这一步操作,请点击Help-->Edit Custom Properties..输入
editable.java.test.console=true

可以插入到数据库

在DataGrip上查看!插入成功!

五、总结:我们在作为初学者来学习一些别的东西的时候,拿别人的项目或者跟着老师做可能会出错,那么出错了一定要找到原因,弄懂原因才能学到东西,才可以搞懂这些是怎么操作的,有时候概念或许不用你记住,但是你一定要实操,去练习才行!

标签:return,String,框架,int,void,private,Mybatis,public,入门
From: https://blog.csdn.net/weixin_73907099/article/details/143571689

相关文章

  • Next.js 实战开发入门教程敏捷开发框架
    在上一篇文章中,我们已经成功实现了网站的导航栏。接下来,我们将继续开发网页的主体部分,用于展示我们的网站业务情况。主页内容展示首先,我们需要创建一个名为 /app/components/Main.tsx 的文件,作为主页内容的入口。然后在根目录的 /app/page.tsx 中引入这个组件,这样在访问主页......
  • PowerShell DSC(Desired State Configuration)是一种配置管理框架,旨在通过声明性的方式
    PowerShellDSC(DesiredStateConfiguration)是一种配置管理框架,旨在通过声明性的方式自动化和管理计算机的配置。它是WindowsPowerShell的一部分,允许管理员定义和维护计算机系统的目标配置状态,而不是手动进行逐个更改。1. 什么是PowerShellDSC?PowerShellDSC是一种基于声......
  • Keras框架——卷积神经CNN神经网络~MINST手写数字识别
    一.原理说明卷积神经网络(ConvolutionalNeuralNetworks)是一种深度学习模型或类似于人工神经网络的多层感知器,常用来分析视觉图像。卷积神经网络的创始人是着名的计算机科学家YannLeCun,目前在Facebook工作,他是第一个通过卷积神经网络在MNIST数据集上解决手写数字问题的......
  • PHP框架选择:如何根据项目需求选择最合适的框架PHP框架选择:如何根据项目需求选择最合适
    在开发PHP项目时,框架的选择至关重要。一个合适的PHP框架不仅能提高开发效率,还能增强代码的可维护性和可扩展性。如何根据项目需求选择合适的框架呢?以下是一些关键的考虑因素。项目的规模和复杂度是选择框架时重要的考量之一。如果是一个小型项目,可能不需要一个复杂的框架,像Slim或......
  • AI助力论文框架设计
    AI助力论文框架设计在论文写作的过程中,设计出一个清晰且富有逻辑的框架通常是最为关键且最具挑战性的部分之一。AI工具的兴起为学术写作带来了全新的可能性,尤其是在构建论文框架时,AI可以充当一个智能的辅助工具,帮助研究者理清思路、高效规划内容。通过AI的辅助,不仅可以加快......
  • Kafka 快速入门-安装部署
    目录1.1安装部署1.1.1集群规划1.1.2集群规划1.1.3集群启停脚本1.1安装部署1.1.1集群规划bigdata01bigdata02bigdata03zkzkzkkafkakafkakafka1.1.2集群规划每次进入linux都会自动进入base环境,如何关闭basecondadeactivate 手动......
  • 训练好的模型怎么使用(非常详细),零基础入门到精通,看这一篇就够了
    前言“训练大模型的目的,就是为了解决业务问题”学习机器学习的人大部分都知道怎么设计并训练一个模型,但开发模型的目的是为了解决业务问题,所以怎么使用大模型也是重中之重。刚训练好的大模型事实上虽然可以用,但由于没有用户接口,所以只能自己用,无法对外提供服务;所以,刚训......
  • dotnet core微服务框架Jimu ~ 会员注册微服务
     提供会员注册服务,用户必须注册成会员才能享受应用提供的服务,如浏览和发布新闻,但有些服务又需要指定角色的会员才能操作,如所有会员都可以浏览新闻,只有管理员(admin)角色的会员才可以发布新闻。有2个公开的api:CheckName:判断用户名是否可用;Register:根据用户名注册......
  • 大模型-大模型训练框架-07
    目录1.训练框架概述2.重点Deepspeed框架介绍3.DeepSpeed框架实践4.debug5.扩展1.训练框架概述100亿10^1010B参数量是模型具备涌现能力的基本门槛如何充分的利用显卡的能力充分的使用显存分布式训练框架对比MegatronandDeepSpeed是目前主流的训练加速框架训......
  • CTF入门教程(非常详细)从零基础入门到竞赛,看这一篇就够了
    ![](https://img-blog.csdnimg.cn/direct/40c12407163545e89a5730feb5c1b5ad.png)一、CTF简介CTF(CaptureTheFlag)中文一般译作夺旗赛,在网络安全领域中指的是网络安全技术人员之间进行技术竞技的一种比赛形式。CTF起源于1996年DEFCON全球黑客大会,以代替之前黑客们通过互......