MyBatis 简介
MyBatis是一款支持自定义sql查询、存储过程和高级映射的持久层框架,消除了jdbc代码和参数的手工设置以及结果集映射。 支持XML和注解配置,是一款半自动化ORM框架,将sql和java类映射,而hibernate是数据库表和java映射,MyBatis可以完全控制sql执行,在需要对复杂sql进行优化时,MyBatis具有优势。
MyBatis依赖
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.3.0</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.38</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.12</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.27</version>
</dependency>
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>
<settings>
<setting name="logImpl" value="LOG4J"/>
</settings>
<typeAliases>
<package name="org.example.model"/> //配置以后 不需要写类的全限定类名,只需要写类名即可
</typeAliases>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC">
<property name="" value=""/>
</transactionManager>
<dataSource type="UNPOOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://192.168.21.215:3306/mytest"/>
<property name="username" value="root"/>
<property name="password" value="root123"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="mapper/CountryMapper.xml"/>
</mappers>
</configuration>
Mapper.xml 配置
<?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">
<mapper namespace="mapper.CountryMapper"> //当使用mapper接口时,namespace必须和接口全限定类名相同
<select id="selectAll" resultType="Country">
select id ,countryname,countrycode from country
</select>
</mapper>
测试xml方式调用-使用sqlsession
public class CountryMapperTest {
private static SqlSessionFactory sqlSessionFactory;
@BeforeClass
public static void init() {
try {
Reader reader = Resources.getResourceAsReader("mybatis-config.xml");
sqlSessionFactory=new SqlSessionFactoryBuilder().build(reader);
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
@Test
public void testSelectAll() {
SqlSession sqlSession=sqlSessionFactory.openSession();
try {
List<Country> countryList = sqlSession.selectList("mapper.CountryMapper.selectAll");//mapper.xml中namespace+id的组合
countryList.forEach((e)->{
System.out.println(e.getId()+":"+e.getCountryname()+":"+e.getCountrycode());
});
}finally {
sqlSession.close();
}
}
}
mybatis 加载全部mapper.xml 映射文件
<mappers>
<package name="org.example.mapper"/> //将xml文件所在目录结构和mapper接口所在包结构保持一致
</mappers>
使用mapper接口方式调用
@Test
public void testSelectById() {
SqlSession sqlSession=getSqlSession();
try {
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
SysUser sysUser = userMapper.selectById(1L);
Assert.assertEquals("admin",sysUser.getUserName());
}finally {
sqlSession.close();
}
}
觉得作者写得不错的,欢迎转发、评论、收藏,也可扫码关注作者微信公众号