MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。
映射方式
数据表映射为类
表中行映射到对象
表中列映射 类中的属性
第一个crud
1.建立maven 1.1 即可
2.导入jar包
mybatis依赖包 数据库驱动包 log4j日志包
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.38</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.5</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis-spring -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>1.3.1</version>
</dependency>
<!-- https://mvnrepository.com/artifact/log4j/log4j -->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
2.建立 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>
<properties resource="db.property"></properties> 配置的文件
<!-- 配置环境 ,指定默认的数据库环境id为mysql-->
<environments default="mysql">
<!-- 配置id为mysql的数据库环境 -->
<environment id="mysql">
<!-- 使用JDBC的事务管理 -->
<transactionManager type="JDBC" /> 使用事务管理器
<!-- 数据库连接池 -->
<dataSource type="POOLED">
<property name="driver" value="${jdbc.driver}" />
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
</dataSource>
</environment>
</environments>
<!-- 配置映射文件Mapper的位置 映射 -->
<mappers>
<mapper resource="com/qst/mapper/UserMapper.xml" />
</mappers>
</configuration>
3.在dao层 建立 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="com.qst.pojo.User"> -----映射文件,可以是接口(与Spring整合在一起)
此处是sql语句
</mapper>
4.建立 pojo 与其对应
5.测试
@Test
public void test() throws IOException {
// 1.读取配置文件
InputStream in = Resources.getResourceAsStream("mybatis_config.xml");
// 2.根据配置文件构建SqlSessionFactory
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(in);
// 3.通过SqlSessionFactory创建SqlSession
SqlSession session = sqlSessionFactory.openSession();
try {
// 4.SqlSession执行映射文件中定义的SQL,并返回映射结果
// String[] hobby = new String[] { "a", "b" };
// String hobby="a";
User u=session.selectOne("Selectbyid", 3);
System.out.println(u);
} finally {
// 5.关闭SqlSession
session.close();
}
}
以上就是基本的mybatis 的建立-----------
知识点
零碎的知识
1.mapper中的sql 占位符#{ } ${ } 拼接符
2.resultType resultMap
直接指定返回类型
对于外部查询的引用
一对一
<select id="Selectbyid" parameterType="Integer" resultMap="selectschool">
select * from user,userwork where user.id=userwork.uid and user.id=#{id}
</select>
<!-- 一对一 type 返回类型-->
<resultMap type="com.qst.pojo.User" id="selectschool">
<!--
ID 主键, column表中的哪一列, property 类中的哪一个属性
-->
<!-- 查询出user表普通属性需要返回的类型 -->
<id column="id" property="id"/>
<result column="name" property="iname"/>
<result column="work" property="work"/>
<!--
property 指定表中的属性名
javaType 属性的类型
-->
<!-- 查询user表中另一个表的属性需要返回的类型 -->
<association property="userwork" javaType="com.qst.pojo.Userwork"> <!-- 返回另一个表的映射类 -->
<id column="uid" property="uid"/>
<result column="aschool" property="school"/>
</association>
</resultMap>
一对多
<select id="SelectKidByid" parameterType="String" resultMap="setectKid">
select * from
user,userkid where user.id=userkid.kidid and user.name=#{name};
</select>
<resultMap type="com.qst.po.User" id="setectKid"> <!-- type返回类型 -->
<id column="id" property="id"/>
<result column="name" property="name"/>
<result column="work" property="work"/>
<!-- property 在此类中的属性名 oftype 另一个类的名称 -->
<collection property="userkid" ofType="com.qst.po.UserKid">
<id column="did" property="did"/> <!-- 主键 -->
<result column="kidid" property="kidid"/> <!-- 与另一个表相关联的键 -->
<result column="kidname" property="kidname"/>
<result column="kidage" property="kidage"/>
</collection>
</resultMap>