IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> IDEA+Maven配置Mybatis——第一个Mybatis程序 -> 正文阅读

[Java知识库]IDEA+Maven配置Mybatis——第一个Mybatis程序

IDEA+Maven配置Mybatis——第一个Mybatis程序

Mybatis是一个数据持久层框架,通过配置文件或者注解的方式代替了繁琐的JDBC代码将sql和代码分离,提高了可维护性;支持编写动态sql…

1、在maven仓库中找到Mybatis的依赖并添加到项目依赖中

maven仓库地址:https://mvnrepository.com/

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

版本可根据自身需求进行变动

还需要导入数据库相关的jar包,我用的是mysql8.0.25

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

还有一个很重要的!!!!

maven依赖中添加build标签,不要过滤掉项目中所有文件夹下的xml、properties等配置文件

<build>
    <resources>
        <resource>
            <directory>src/main/resources</directory>
            <includes>
                <include>**/*.properties</include>
                <include>**/*.xml</include>
            </includes>
            <filtering>false</filtering>
        </resource>
        <resource>
            <directory>src/main/java</directory>
            <includes>
                <include>**/*.properties</include>
                <include>**/*.xml</include>
            </includes>
            <filtering>false</filtering>
        </resource>
    </resources>
</build>

2、配置mybatis核心配置文件Mybatis-config.xml

在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>
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/mybatis?useSSL=true&amp;useUnicode=true&amp;characterEncoding=UTF-8"/>
                <property name="username" value="root"/>
                <property name="password" value="123456"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
    <!--每一个mapper,都需要在maybatis中的xml中注册-->
        <mapper resource="com/chen/dao/UserMapper.xml"/>
    </mappers>
</configuration>

关于xml标签,常用的有propertiessettingstypeAliasesenvironmentsmappers,等等,上面一段配置是最简单的

3、连接数据库,并创建一张简单表

连接数据库不必多说,创建的简单表如下

请添加图片描述

4、dao、pojo、utils包以及对应的类

项目结构如图:

请添加图片描述

DAO层:

  • UserMapper
package com.chen.dao;

import com.chen.pojo.User;

import java.util.List;
import java.util.Map;

public interface UserMapper {
    //查询全部用户
    List<User> getUserList();

    //根据ID查询用户
    User getUserById(int id);


    //插入一个记录
    void addUser(User user);
    

    //修改用户
    void updateUser(User user);

    //删除一个用户
    void deleteUser(int id);
}

  • UserMapper.xml(Mybatis配置文件之一)
<?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绑定一个对应的Dao/mapper接口-->
<mapper namespace="com.chen.dao.UserMapper">

    <!--解决实体类属性与数据库字段名字不一样,用resultmap映射解决-->
    <resultMap id="UserMap" type="User">
		<!--column数据库中的字段,property是实体类中的属性-->
        <result column="id" property="id"/>
        <result column="name" property="name"/>
        <result column="pwd" property="password"/>
    </resultMap>
    
     <!--id对应方法-->
    <select id="getUserList" resultMap="UserMap">
        select * from mybatis.user
    </select>
    
     <!--parameterTyp为传入参数类型,java基本类型可不填;resultType为sql操作返回类型-->
    <select id="getUserById" parameterType="int" resultType="UserMap">
        select * from mybatis.user where id = ${id}
    </select>


    <insert id="addUser" parameterType="UserMap">
        insert into mybatis.user (id,name,pwd) values(${id},'${name}','${pwd}')
    </insert>

    <update id="updateUser" parameterType="UserMap">
        update  mybatis.user set name='${name}',pwd='${pwd}' where id=${id};
    </update>
    
    <delete id="deleteUser" parameterType="UserMap">
        delete from mybatis.user where id=${id};
    </delete>
</mapper>

pojo实体类包

  • User实体类
package com.chen.pojo;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {
    private int id;
    private String name;
    private String pwd;
}

注:@Data@AllArgsConstructor@NoArgsConstructo是lombok的注解,这里不写也没什么关系,但是遵循规范偷点懒就用lombok啦~。lombok是idea自带的一个插件,在设置-插件中就有。通过简单的注解就可以自动生成get、set方法、无参、有参构造器等,灰常方便!

utils工具类包

  • MybatisUtils
package com.chen.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.IOException;
import java.io.InputStream;

//构建 SqlSessionFactory
public class MybatisUtils {
    private static SqlSessionFactory sqlSessionFactory;
    static{
        try {
            String resource = "mybatis-config.xml";
            InputStream inputStream = Resources.getResourceAsStream(resource);
            sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        } catch (IOException ioException) {
            ioException.printStackTrace();
        }

    }

    public static SqlSession getSqlSession(){
        return sqlSessionFactory.openSession();
    }


}

5、编写测试类

package com.chen.dao;

import com.chen.pojo.User;
import com.chen.utils.MybatisUtils;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;

import java.util.HashMap;
import java.util.List;

public class UserMapperTest {
    @Test
    public void test(){
        //第一步:获得sqlSession对象
        SqlSession sqlSession = MybatisUtils.getSqlSession();
//        //方式一:getmapper:推荐
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        List<User> userList = mapper.getUserList();

        //方式二:
//        List<User> userList = sqlSession.selectList("com.chen.dao.UserDao.getUserList");
        for (User user : userList) {
            System.out.println(user);
        }

        sqlSession.close();
    }

    @Test
    public void getUserById(){
        SqlSession sqlSession = MybatisUtils.getSqlSession();

        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        User user = mapper.getUserById(1);
        System.out.println(user);


        sqlSession.close();
    }



    //增删改需要提交事务
    @Test
    public void addUser(){
        SqlSession sqlSession = MybatisUtils.getSqlSession();

        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        mapper.addUser(new User(4,"lucy","123456"));

        sqlSession.commit();
        sqlSession.close();
    }


    @Test
    public void updateUser(){
        SqlSession sqlSession = MybatisUtils.getSqlSession();

        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        mapper.updateUser(new User(4,"will","123456"));

        sqlSession.commit();
        sqlSession.close();
    }
    @Test
    public void deleteUser(){
        SqlSession sqlSession = MybatisUtils.getSqlSession();

        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        mapper.deleteUser(4);

        sqlSession.commit();
        sqlSession.close();
    }
}

注:@Test是junit的注解,作用域为方法,可以单元执行方法,常用于测试,在maven中导入依赖即可。也可以写一个main方法来测试

5、最后

Mybatis第一个基本的程序就基本完成了,最重要的还是核心文件mybatis-config.xml,如果持续学习的话还会和他打交道。以上就是xml配置的基本mybatis程序!

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2021-08-07 11:51:51  更:2021-08-07 11:53:55 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/10 20:04:10-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码