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的配置文件了。