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

  • 2019 年 10 月 30 日
  • 笔记

版权声明:本文为博主原创文章,遵循 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的配置文件了。