版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/luo4105/article/details/72736534
项目地址:https://code.csdn.net/luo4105/study_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);
<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>
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-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>
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的配置文件了。