专栏首页代码人生mybatis系列教程(一)——mybatis配置

mybatis系列教程(一)——mybatis配置

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

本文链接:https://blog.csdn.net/luo4105/article/details/72736534

项目地址

项目地址:https://code.csdn.net/luo4105/study_mybatis/

Mybatis单独配置

为了更好了解mybatis的配置,先完成一个不带spring整合的mybatis配置例子。

使用mybatis的配置如下

1.配置数据源,数据库、账号密码等

2.配置mapper配置文件

3.通过sqlsession获得对应dao接口,操作dao接口。代码

SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(Resources.getResourceAsReader("config/mybatis-config.xml"));
sqlSession = sqlSessionFactory.openSession();
usersDao = sqlSession.getMapper(UsersDao.class);

实现

Maven依赖

<dependencies>
    <dependency>
        <groupId>org.mybatis</groupId>
        <artifactId>mybatis</artifactId>
        <version>3.4.2</version>
    </dependency>
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>6.0.3</version>
    </dependency>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.12</version>
    </dependency>
</dependencies>

项目结构

Sql建表语句

CREATE TABLE`users`(
 `id` int(11) NOTNULLAUTO_INCREMENT,
 `name`varchar(200) DEFAULT NULL,
 `age` int(11) DEFAULTNULL,
 PRIMARYKEY(`id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;
INSERT INTO study_mybatis.users(id,name,age) VALUES
(1,'小王',10)
,(2,'荀丽',29)
,(3,'明明',12)
,(4,'天天',13);

配置Mybatis

Mybatis配置文件mybatis-config.xml,这里配置的数据源信息和mapper。我用的是mysql-connection-java6.x,6.x版本的数据库连接驱动改为com.mysql.cj.jdbc.Driver,之前是com.mysql.jdbc.Driver。

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPEconfigurationPUBLIC"-//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/study_mybatis?serverTimezone=GMT&characterEncoding=utf-8"/>
                    <property name="username" value="root" />
                    <property name="password" value="123456" />
                </dataSource>
            </environment>
    </environments>

    <mappers>
        <mapper resource="com/lc/mapper/UsersMapper.xml" />
    </mappers>
</configuration>

Mapper、对应接口和model

UserMapper.xml

<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPEmapperPUBLIC"-//mybatis.org//DTDMapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.lc.dao.UsersDao">

    <select id="getList" resultType="com.lc.model.Users">
        select id, name, age from users
    </select>

    <insert id="add" parameterType="com.lc.model.Users">
        INSERT INTO users(name, age)VALUES (#{name}, #{age})
    </insert>
</mapper>

接口

importcom.lc.model.Users;

import java.util.List;

public interface UsersDao {
    public List<Users> getList();
    public int add(Users users);
}

实体类:User

public classUser {
   
    private Integer id;
    private String name;
    private Integer age;
    /**
       Getter、setter、toString
    **/
}

测试类

UserDaoTest

importcom.lc.model.Users;
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.Before;
import org.junit.Test;

import java.io.IOException;
import java.util.List;

public class UsersDaoTest {

    private UsersDao usersDao;
    private SqlSession sqlSession;

    @Before
    public void before() throws IOException {
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(Resources.getResourceAsReader("config/mybatis-config.xml"));
        sqlSession = sqlSessionFactory.openSession();
        usersDao = sqlSession.getMapper(UsersDao.class);
    }

    @Test
    public void getList() throws Exception {
        List<Users> usersList =usersDao.getList();
        for (Users users : usersList) {
            System.out.println(users.toString());
        }
    }

    @Test
    public void add() throws Exception {
        Users user = new Users();
        user.setAge(18);
        user.setName("同光尘");
        usersDao.add(user);
        sqlSession.commit();
    }
}

总结

在mybatis的配置文件中,主要配置了两个

dataSource:数据源

mappers:mapper映射文件

在测试类中,实现流程如下

获得sqlsessionFactory

获得SqlSessionFactory对象

获得SqlSession对象

获得UserMapper对象

操作UserMapper对象

进一步猜想

如果我们把数据源和mapper的映射配置在spring的配置文件,

把SqlSessionFactory对象、SqlSession对象、UserMapper对象都在Spring中注册,

是不是就完成了spring整合mybatis,就不需要mybatis的配置文件了。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Spring多数据源配置系列(一)——多数据源配置

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 ...

    逝兮诚
  • Redis系列(五)——spring整合reids

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 ...

    逝兮诚
  • java线程(一)—— 新建线程

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 ...

    逝兮诚
  • Maven 搭建 SSM 项目 (oracle) 设计模式、三层架构的讲解

    简单谈一下maven搭建 ssm 项目 (使用数据库oracle,比 mysql 麻烦一点,所以这里谈一下)

    Krry
  • SSM Spring SpringMVC Mybatis框架整合Java配置完整版

      以前用着SSH都是老师给配好的,自己直接改就可以。但是公司主流还是SSM,就自己研究了一下Java版本的配置。网上大多是基于xnl的配置,但是越往后越新的项...

    用户2417870
  • mobx 能为我们带来哪些改变

    mobx是一个状态管理器,用于TFRP(transparently applying functional reactive programming)自发式函数...

    腾讯IVWEB团队
  • win10 UWP Hmac

    在uwp,Hmac在很多网络使用,我最近写qiniu SDK,把原来C#改为UWP,需要使用HMAC。

    林德熙
  • 我的python学习--第七、八天

    HTTP(与web应用会话的协议)有许多不同的URL方法。默认情况下,路由只回应GET请求,但是通过route()装饰器传递methods参数可以改变这个行为。

    py3study
  • 配置Eclipse可以查看JDK源码

    Window->Preferences->Java->Installed JREs

    SmileNicky
  • XLNet详解

    2018 年,谷歌发布了基于双向 Transformer 的大规模预训练语言模型BERT,刷新了 11 项 NLP 任务的最优性能记录,为 NLP 领域带来了极...

    mathor

扫码关注云+社区

领取腾讯云代金券