Mybatis初学者的一篇文章

本文是Mybatis初学者的指南,详细介绍了如何创建Mybatis项目,包括添加Maven依赖、配置数据源、创建数据库表、编写实体类、Mapper接口及XML文件,以及进行基本的增删改查操作。同时,文章提到了动态配置数据源的方法,通过db.properties文件实现。
摘要由CSDN通过智能技术生成

Mybatis初学者的一篇文章

一、Mybatis到底是什么呢?

在它的官方文档写的很清楚
1、MyBatis 是一款优秀的持久层框架
2、它支持自定义 SQL、存储过程以及高级映射
3、MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作
4、MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。
这就是Mybatis!!!

二、那到底如何使用呢

就先从创建Myabtis项目开始吧
1、首先New一个Maven的项目,新创建的Mybatis项目中会包含这么多文件夹
在这里插入图片描述
2、我们需要在全局的pom文件中加入Mybatis、Mysql的驱动。

<dependencies>
        <!--        mysql驱动-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.21</version>
        </dependency>
        <!--        mybatis-->
        <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.5.6</version>
        </dependency>
        <!--        junit-->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.13.1</version>
            <scope>test</scope>
        </dependency>
    </dependencies>

大家可能会有疑惑junit是什么东西,说实话小编也不知道,所以希望感兴趣的小伙伴可以自己查一下,有收获了之后记得告诉我哦,嘻嘻。

3、在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核心配置文件-->
<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/batis?useUnicode=true&amp;characterEncoding=UTF-8&amp;useJDBCCompliantTimezoneShift=true&amp;useLegacyDatetimeCode=false&amp;serverTimezone=UTC"/>
                <property name="username" value="root"/>
                <property name="password" value="root"/>
            </dataSource>
        </environment>
    </environments>
<!--    每一个Mapper.xml都需要在Mybatis核心配置文件中注册-->
    
</configuration>

这点东西就不用我说了吧,大家一看就能看懂,这不就是配置数据源嘛,连接数据库必须的东西啦!开始我们是这样配置的。还有一个办法可以动态配置数据源,在文章的结尾,我会告诉大家如何动态配置数据源,现在我们继续往下走…
4、看好右侧我选的是Database选项,然后我们再点击+号选择Mysql,当然我使用的是Mysql数据库,可能有其他小伙伴使用的数据库不是Mysql,大家按照自己使用的数据库来选择嘛。
在这里插入图片描述
5、到这里之后,大家输入完用户名密码之后会看到Database这里让填的就是你创建的一个库的库名,我这里叫batis,当我们看到URL这一栏的时候会不会想起我们配置数据源的时候的url,那这里的url就是数据源需要配置的url,所以我们直接复制过去就行至于我加的一些参数有些是解决地区问题的,有些是解决乱码问题的所以安全起见希望小伙伴也加上吧!!配置完之后我们点击Test Connection来测试一下能不能连接上我们的数据库,如果连不上那就应该查看一下到底有没有这个库或者是用户名密码对不对。
在这里插入图片描述
连接上之后我们就可以写第一个Mybatis程序了。
6、在这之前我们先创建一个简单的数据表吧,前提是在我们连接的这个库中创建的sql表哦

##创建user表
CREATE TABLE `user` (
  `id` INT(10) NOT NULL,
  `name` VARCHAR(30) DEFAULT NULL,
  `pwd` INT(10) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=INNODB DEFAULT CHARSET=utf8;
##插入数据
INSERT INTO `user` (`id`, `name`,`pwd`) VALUES (1, "张飞",123456); 

7、首先我们配置完Mybatis之后需要使用它吧,那如何使用呢,大家也就按照我的来吧!!包名大家按照自己的来就行。比较懒得同学,我已经把代码放在图片下面了,直接复制即可。
在这里插入图片描述

  private static SqlSessionFactory sqlSessionFactory;
    //static代码块初始就加载
    static {
        try {
            //获取SqlSessionFactory对象
            String resource = "mybatis-config.xml";
            InputStream inputStream = Resources.getResourceAsStream(resource);
            sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    /*既然有了 SqlSessionFactory,顾名思义,我们可以从中获得 SqlSession 的实例。
    SqlSession 提供了在数据库执行 SQL 命令所需的所有方法。
    你可以通过 SqlSession 实例来直接f执行已映射的 SQL 语句。

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

    }

8、我们就先写一个实体类吧,在pojo文件夹中创建一个User的一个实体类,自己生成是最好的使用快捷键Alt+Insert键就可以,不过我下面也有代码的
在这里插入图片描述

 private int id;
    private String name;
    private int pwd;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getPwd() {
        return pwd;
    }

    public void setPwd(int pwd) {
        this.pwd = pwd;
    }

    public User(){

    }

    public User(int id, String name, int pwd) {
        this.id = id;
        this.name = name;
        this.pwd = pwd;
    }

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", pwd=" + pwd +
                '}';
    }

9、然后我们在dao文件夹中创建一个UserMapper的接口文件,这里面基本的增删改查语句是有的!测试嘛,那就要测得明明白白的。

在这里插入图片描述

    //查询全部用户
    List<User> getUserList();
    //根据id获取用户
    User getUserById(int id);
//    User getUserById2(Map<String,Object> map);
    //插入一个数据
    int addUser(User user);
    //万能的map
    int addUser2(Map<String,Object> map);
    //修改一个数据
    int upDataUser(User user);
    //删除一个数据
    int deleteData(int id);

10、然后我们要在dao层中先创建一个UserMapper.xml文件,记得namespace中的路径是自己的包路径哈

<?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=绑定一个对应的Mapper/Dao接口-->
<mapper namespace="com.tjs.dao.UserMapper">
<!--    查询语句-->
    <!--id:就是对应的namespace中的方法;-->
    <!--resultType:sql语句执行的返回值!-->
    <!--parameterType:参数类型-->
    <select id="getUserList" resultType="com.tjs.pojo.User">
        select * from batis.user
    </select>
    <select id="getUserById" parameterType="int" resultType="com.tjs.pojo.User">
        select * from batis.user where id = #{id}
    </select>
    <!--    <select id="getUserById2" parameterType="map" resultType="com.tjs.pojo.User">-->
    <!--        select * from batis.user where id = #{userid}-->
    <!--    </select>-->
    <!--对象中的属性可以直接取出来
    传递map中的key-->
    <insert id="addUser" parameterType="com.tjs.pojo.User">
        insert into batis.user (id,name,pwd) values (#{id},#{name},#{pwd});
    </insert>

    <insert id="addUser2" parameterType="map">
        insert into batis.user (id,name,pwd) values (#{userid},#{username},#{password});
    </insert>

    <update id="upDataUser" parameterType="com.tjs.pojo.User" >
        update batis.user set name=#{name},pwd=#{pwd} where id=#{id};
    </update>
    <delete id="deleteData" parameterType="int">
        delete from batis.user where id=#{id};
    </delete>
</mapper>

11、在test\java文件夹下创建和上面的包名一摸一样的哈,记得创建完的包肯定是可以展开的哈
在这里插入图片描述

public class UserDaoTest {
    @Test
    public void getUserList(){
        //第一步:获取sqlsession对象
        SqlSession sqlSession = MybatisUtils.getSqlSession();
        //方式一:getMapper
        UserMapper userDao = sqlSession.getMapper(UserMapper.class);
        List<User> userList = 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 userById = mapper.getUserById(2);
        System.out.println(userById);
        sqlSession.close();
    }
    //增删改需要提交事务
    @Test
    public void add(){
        SqlSession sqlSession = MybatisUtils.getSqlSession();
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        int addSuccess = mapper.addUser(new User(4, "马宇", 123));
        if(addSuccess>0){
            System.out.println("插入成功!");
        }
        sqlSession.commit();
        sqlSession.close();

    }
    @Test
    public void upData(){
        SqlSession sqlSession = MybatisUtils.getSqlSession();
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        int i = mapper.upDataUser(new User(2,"我的",123456));
        sqlSession.commit();
        sqlSession.close();
    }
    @Test
    public void DeleteUser(){
        SqlSession sqlSession = MybatisUtils.getSqlSession();
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        mapper.deleteData(2);
        sqlSession.commit();
        sqlSession.close();
    }
    @Test
    public void addUser2(){
        SqlSession sqlSession = MybatisUtils.getSqlSession();
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        Map<String, Object> map = new HashMap<String, Object>();
        map.put("userid",3);
        map.put("username","关羽");
        map.put("password",123456789);

        mapper.addUser2(map);

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

12、到这里我们还不能运行,因为运行肯定报错的为什么呢,记得我们第3步的代码中有这样一句话
“每一个Mapper.xml都需要在Mybatis核心配置文件中注册”
所以我们要把我们自己写的UserMapper.xml文件配置到mybatis-config.xml文件中去
在mybatis-config.xml文件中的最后一行配置一下代码,这里的路径是寻找自己创建的UserMapper.xml文件的

<!--    每一个Mapper.xml都需要在Mybatis核心配置文件中注册-->
    <mappers>
        <mapper resource="com/tjs/dao/UserMapper.xml"/>
    </mappers>

13、这样还不够,我们要在局部pom文件和全局pom文件中的最后加入下面这点配置,代码在下面直接复制就好了,我的注释也写了,希望大家可以不要嫌弃注释少。
在这里插入图片描述

 <!--    在build中配置resources,来防止我们资源导出失败的问题-->
    <build>
        <resources>
            <resource>
                <directory>src/main/java</directory>
                <includes>
                    <include>**/*.properties</include>
                    <include>**/*.xml</include>
                </includes>
                <filtering>true</filtering>
            </resource>
            <resource>
                <directory>src/main/resources</directory>
                <includes>
                    <include>**/*.properties</include>
                    <include>**/*.xml</include>
                </includes>
                <filtering>true</filtering>
            </resource>
        </resources>
    </build>

14、大家记得,配置完pom文件后,一定要刷新maven文件!!!很重要,不刷新maven文件会导致一些配置找不到的问题!!!!很重要!!!
在这里插入图片描述

最后我们就可以运行测试了,点击蓝色的按钮就可以运行了,运行之后我们就可以在控制台看到我们插入在数据库中的数据了。
在这里插入图片描述

动态配置数据源

1、很简单按照我写的方式去写,希望大家把配置的注释可以看一下,
在这里插入图片描述


<?xml version="1.0" encoding="UTF8" ?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">
<!--configuration核心配置文件-->
<configuration>
    <!--引入外部配置文件-->
    <properties resource="db.properties"/>
    <settings>
        <!--配置日志,标准的日志工厂实现-->
        <setting name="logImpl" value="LOG4J"/>
    </settings>
    <!--可以给实体类起别名-->
    <typeAliases>
        <!--实体类比较少的时候使用typeAlias-->
<!--        <typeAlias type="com.tjs.pojo.User" alias="User"/>-->
        <!--实体类比较多的时候使用package起别名,自动使用实体类的小写-->
        <package name="com.tjs.pojo"/>
    </typeAliases>
    <environments default="development">

        <environment id="development">
            <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>
<!--            <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/batis?useUnicode=true&amp;characterEncoding=UTF-8&amp;useJDBCCompliantTimezoneShift=true&amp;useLegacyDatetimeCode=false&amp;serverTimezone=UTC"/>
                <property name="username" value="root"/>
                <property name="password" value="root"/>
                -->
  <mappers>
        <mapper resource="com/tjs/dao/UserMapper.xml"/>
  </mappers>
</configuration>

2、在resources文件夹下创建一个db.properties的文件
在这里插入图片描述

driver=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://localhost:3306/batis?useUnicode=true&characterEncoding=UTF-8&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC
username="自己的数据库用户名"
password="自己的数据库密码"

这里的配置大家就按照自己的来吧
3、我们看到这个xml文件放到dao文件夹中是有点儿不太友好的样子。
在这里插入图片描述
所以我们在resources文件夹中创建一个包路径,这个包路径和我们呢上面创建的com.tjs.dao一样然后将UserMapper.xml文件放到里面,然后在mybatis-config.xml文件的最后一行修改mapper中的配置,修改为

 <mappers>
        <mapper class="com.tjs.dao.UserMapper.xml"/>
 </mappers>

Mybatis基本配置以及基本增删改查完结!!!

这里不算是标题,这只是提醒同学们配置完pom文件后一定要刷新maven ! ! ! !

如果有小伙伴根据我的步骤配置完之后什么东西都和我的一样没有出来结果,大家可以私信我,或者是评论区里留言,我看到一定会回复大家的。这也是我一个初学者的心得,希望大佬不要喷我,我的初衷也是希望有更多像我一样在初学Mybatis中的同学得到帮助!!!谢谢。
记得有问题留言或者私信我哈!!!溜了溜了
我们下次再见,希望下次见到的时候别来无恙,我们都可以更上一层楼。
最后祝大家工作、学习顺利。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值