java–MyBatis入门
MyBatis 的真正强大在于它的映射语句,也是它的魔力所在。由于它的异常强大,映射器的 XML 文件就显得相对简单。如果拿它跟具有相同功能的 JDBC 代码进行对比,你会立即发现省掉了将近 95% 的代码。MyBatis 就是针对 SQL 构建的,并且比普通的方法做的更好。
SQL 映射文件有很少的几个顶级元素(按照它们应该被定义的顺序):
cache
– 给定命名空间的缓存配置。cache-ref
– 其他命名空间缓存配置的引用。resultMap
– 是最复杂也是最强大的元素,用来描述如何从数据库结果集中来加载对象。sql
– 可被其他语句引用的可重用语句块。insert
– 映射插入语句。update
– 映射更新语句。delete
– 映射删除语句。select
– 映射查询语句。
如果使用 Maven
来构建项目,则需将下面的依赖代码置于 pom.xml
文件中。
简单实例(需要导入架包:数据库驱动架包和mybatis的架包):
实体类还是用UserInfo
。
mapper
类:
package cn.zbw.mapper;
import cn.zbw.entity.UserInfo;
import java.util.List;
public interface UserInfoMapper {
public List<UserInfo> findUserAll();
}
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="cn.zbw.mapper.UserInfoMapper">
<select id="findUserAll" resultType="cn.zbw.entity.UserInfo">
select * from user
</select>
</mapper>
工具类:
package cn.zbw.utils;
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 java.io.IOException;
import java.io.InputStream;
public class MybatisUtil {
private static SqlSessionFactory sqlSessionFactory;
static {
String resource = "mybatis.xml";
try {
InputStream is = Resources.getResourceAsStream(resource);
sqlSessionFactory = new SqlSessionFactoryBuilder().build(is);
} catch (IOException e) {
e.printStackTrace();
}
}
public static SqlSession getSession(){
return sqlSessionFactory.openSession();
}
public static void closeSession(SqlSession sqlSession){
if (sqlSession!=null){
sqlSession.close();
}
}
}
mybatis.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>
<environments default="zbw">
<environment id="zbw">
<transactionManager type="JDBC"></transactionManager>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.cj.jdbc.Driver"></property>
<property name="url" value="jdbc:mysql://localhost:3306/zh_demo?characterEncoding=utf8&useSSL=false&serverTimezone=UTC"></property>
<property name="username" value="root"></property>
<property name="password" value="123456"></property>
</dataSource>
</environment>
</environments>
<!--配置接口所对应的xml文件-->
<mappers>
<mapper resource="cn/zbw/mapper/UserInfoMapper.xml"></mapper>
</mappers>
</configuration>
测试类:
package cn.zbw.test;
import cn.zbw.entity.UserInfo;
import cn.zbw.mapper.UserInfoMapper;
import cn.zbw.utils.MybatisUtil;
import org.apache.ibatis.session.SqlSession;
import java.util.List;
public class Test01 {
public static void main(String[] args) {
test01();
}
private static void test01() {
SqlSession session= MybatisUtil.getSession();
List<UserInfo> lists=session.getMapper(UserInfoMapper.class).findUserAll();
for (UserInfo u:lists){
System.out.println(u.getUsername());
}
}
}
结果是: