MyBatis最容易董的教程以及我遇到的一些坑,与君共享之------祝你变得更强!

我用MyBatis遇到的一些坑,与君共享之

author:码德

一、介绍一下mybatis

MyBatis 核心主要是ORM(object relational Mapping) 对象关系映射,主要是将代码中的成员变量与表中的一行数据进行一一对应,最终把对象持久化到数据库中

📖有关这个关系映射中间有很多坑啊~~

我从头开始吧 啊 哈哈

首先打开你的idea新建一个项目(我这边就用maven了)

在这里插入图片描述

第二步(这大家都懂)

在这里插入图片描述

然后就没有然后了,项目建完后是酱紫的

在这里插入图片描述

接下来开始mybatis

1.导入所需依赖

 //就这俩
	 <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.21</version>
        </dependency>

        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.5.4</version>
        </dependency>
//其他
         <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.12</version>
        </dependency>

        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.17</version>
        </dependency>

在这里插入图片描述

2.导入几个配置文件 这个直接拿去用就可以

主要有db.properties log4j.properties mybatis.xml

db.properties

jdbc.username = root  #记得改数据库参数
jdbc.password = root
jdbc.driver = com.mysql.cj.jdbc.Driver
jdbc.url = jdbc:mysql:///case?serverTimezone=Asia/Shanghai
#jdbc.url = jdbc:mysql://localhost:3306/java2005?serverTimezone=Asia/Shanghai

log4j.properties

# Global logging configuration
log4j.rootLogger=DEBUG, stdout
# MyBatis logging configuration...
log4j.logger.org.mybatis.example.BlogMapper=TRACE
# 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

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">
<!-- mybatis的主配置文件 -->
<configuration>
    <!-- 配置外部文件 -->
    <properties resource="db.properties"></properties>
    <!-- 配置别名 -->
    <typeAliases>
        <!--        <typeAlias type="com.liang.pojo.User" alias="user"></typeAlias>-->
        <package name="com.liang.pojo"/>
    </typeAliases>
    <!-- 配置环境 -->
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <!-- 配置数据源(连接池) -->
            <dataSource type="POOLED">
                <property name="driver" value="${jdbc.driver}"/>
                <property name="url" value="${jdbc.url}"/>
                <property name="username" value="${jdbc.username}"/>
                <property name="password" value="${jdbc.password}"/>
            </dataSource>
        </environment>
    </environments>
    
    <!-- 指定映射配置文件的位置,映射配置文件指的是每个dao独立的配置文件 -->
    <mappers>
        <!--<mapper resource="com/liang/dao/UserDao.xml"/>-->
        <!--<mapper class="com.liang.dao.UserDao"/>-->
        <package name="com.liang.dao"/>
    </mappers>
</configuration>

*dao和实体类(这里也有坑~~~~注意你的成员变量命名一定要和数据库字段一致,一致,一致)*

package com.liang.pojo;

import lombok.Data;

import java.sql.Date;

@Data
public class User {
    Integer id;
    String username;
    String address;
    String sex;
    Date birthday;
}

package com.liang.dao;

import com.liang.pojo.User;

import java.util.List;

public interface UserDao {
    /*
    查询所有
     */

    public List<User> findAll();
    /*
    添加
     */
    public void saveUser(User user);
}

创建与dao相互映射的xml文件 (这里有一个小坑,注意要这样创建与之对应的目录)

在这里插入图片描述

这里还有一个小坑啊,这个文件的名字必须与你的dao相对应,大小写一致!!!!

不对应也可以,但是需要配置,具体我之后会补上

<?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.liang.dao.UserDao">

<!--    查询所有    这里的User就是我们配置别名的用处,我们可以省去com.liang.dao.pojo-->
    <select id="findAll" resultType="User">
        select * from user
    </select>
<!--插入  再补充一个坑,如果你写SQL语句想换行的话记得加空格,要不你懂得-->
    <insert id="saveUser" parameterType="User">
         insert into test(username,address,sex)
         values (#{username},#{address},#{sex})
    </insert>
</mapper>

至此我们的目录结构是这样的

在这里插入图片描述

数据库

SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;

-- ----------------------------
-- Table structure for user
-- ----------------------------
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user`  (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `username` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `address` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `sex` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `birthday` date NULL DEFAULT NULL,
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;

SET FOREIGN_KEY_CHECKS = 1;

接下来就要测试了

package com.liang;

import com.liang.dao.UserDao;
import com.liang.pojo.User;
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 org.junit.Test;

import java.io.InputStream;
import java.util.List;

public class test {

    @Test
    public void saveUser()throws Exception {
        //1.读取配置文件
        InputStream in = Resources.getResourceAsStream("mybatis.xml");
        //2.创建SqlSessionFactory工厂
        SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
        SqlSessionFactory factory = builder.build(in);
        //3.使用工厂生产SqlSession对象
        SqlSession session = factory.openSession();
        //4.使用SqlSession创建Dao接口的代理对象
        UserDao userDao = session.getMapper(UserDao.class);

        //5.使用代理对象执行方法
        User user = new User();
        user.setUsername("亮亮");
        user.setAddress("穿过云间的光");
        user.setSex("男");
        userDao.saveUser(user);
         //提交
        session.commit();
        //6.释放资源
        session.close();
        in.close();
    }

    
    //查询所有
    @Test
    public void testfindAll()throws Exception {
        //1.读取配置文件
        InputStream in = Resources.getResourceAsStream("mybatis.xml");
        //2.创建SqlSessionFactory工厂
        SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
        SqlSessionFactory factory = builder.build(in);
        //3.使用工厂生产SqlSession对象
        SqlSession session = factory.openSession();
        //4.使用SqlSession创建Dao接口的代理对象
        UserDao userDao = session.getMapper(UserDao.class);

        //5.使用代理对象执行方法
        List<User> users = userDao.findAll();
        System.out.println(users);
        //6.释放资源
        session.close();
        in.close();
    }

}

插入成功
在这里插入图片描述

over 今天先到这里

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值