MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架。MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装。MyBatis可以使用简单的XML或注解用于配置和原始映射,将接口和Java的POJO(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录。概念性的就不多啰嗦 下面直奔主题
入门篇:
首先我们需要准备mybatis框架开源的jar包 (只有下面两个 我这里是用maven管理的项目) 将以下两个jar包放入pom.xml文件中 我们就可以用可以开始用这个框架了。
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.1.1</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.38</version>
</dependency>
接下来搭建demo项目结构
以上是项目的目录结构 注意 :(有一个坑) 就是使用idea开发的时候 我们在mapper下面写xml文件 我们的mybatis-config是载入不了该文件下面的mapper 所以运行会出现报错 为了避免改错误 我们可以在pom.xml文件中配置一下代码
<resources> <resource> <directory>src/main/java</directory> <includes> <include>**/*.xml</include> </includes> </resource> </resources> //这样的话 java目录下面的xml文件才可以被外界查找。
我们写个demo
流程:1.创建数据库sql
2.准备javaBean
3.配置mybatis-config.xml 连接数据库的属性 以及纳入项目结构操作数据库的mapper文件
4.创建xxMapper.xml文件 该文件主要完成是对数据库的增删查找的sql操作
5.创建xxMapper.xml所对应的Mapper接口 该接口的方法主要对应mapper.xml的id
接下来我们按照步骤丢出代码 并简单理解里面的配置
1:创建数据库sql (自行插入两条数据)
CREATE TABLE `user` (
`id` varchar(255) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL ,
`name` varchar(255) CHARACTER SET latin1 COLLATE latin1_swedish_ci NULL DEFAULT NULL ,
`age` int(11) NULL DEFAULT NULL
)
ENGINE=InnoDB
DEFAULT CHARACTER SET=latin1 COLLATE=latin1_swedish_ci
ROW_FORMAT=COMPACT
;
2:javaBean:(不做过多解释)
package com.mybatis.entity;
import java.io.Serializable;
public class User implements Serializable {
private String id;
private String name;
private Integer age;
private static final long serialVersionUID = 1L;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id == null ? null : id.trim();
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name == null ? null : name.trim();
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
}
3 配置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>
<!--录入jdbc配置文件-->
<properties resource="db.properties"></properties> //这里是读取db.propertie对象
<typeAliases> //如果这里用了别名 那么在mapper文件夹下面的mapper语句 的resultType可以写对应的实体类
<!--这里直接扫描包 就可以用类里面的pojo当做Mapper映射里面的resultType-->
<package name="com.mybatis.entity"></package>
</typeAliases>
<!--配置数据库连接属性-->
<environments default="test">//配置环境
<environment id="test">
<transactionManager type="JDBC"></transactionManager>//开启事务
<dataSource type="POOLED">//配置数据库连接池
<property name="driver" value="${jdbc.driver}"></property>
<property name="url" value="${jdbc.url}"></property>
<property name="username" value="${jdbc.username}"></property>
<property name="password" value="${jdbc.password}"></property>
</dataSource>
</environment>
</environments>
<!--定义mapper辐射的地址-->
<mappers>
<!--<mapper resource="com\mybatis\mapper\UserMapper.xml"></mapper>-->
<package name="com.mybatis.mapper"></package>//将mapper文件载入进来
</mappers>
</configuration>
4.创建xxMapper.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.mybatis.mapper.UserMapper">
<resultMap id="BaseResultMap" type="com.mybatis.entity.User">
<result column="id" jdbcType="VARCHAR" property="id"/>
<result column="name" jdbcType="VARCHAR" property="name"/>
<result column="age" jdbcType="INTEGER" property="age"/>
</resultMap> //resultMap定义了数据局对应的字段属性 column为数据库字段 property对应我们定义的javaBean字段
//selectByPrimaryKey 对应Mapper接口中的方法 parameterType对应该方法的参数 resultMap返回的结果
<select id="selectByPrimaryKey" parameterType="String" resultMap="BaseResultMap">
select * from user where id =#{id}
</select>
<insert id="insert" parameterType="User">
insert into user (id, name, age) values (#{id}, #{name}, #{age})
</insert>
</mapper>
5 创建xxMapper.xml所对应的Mapper接口
package com.mybatis.mapper;
import com.mybatis.entity.User;
public interface UserMapper {
int deleteByPrimaryKey(String id);
int insert(User record);
int insertSelective(User record);
User selectByPrimaryKey(String id);
int updateByPrimaryKeySelective(User record);
int updateByPrimaryKey(User record);
}
以上是一个简单的操作Mybatis的流程代码
我们来测试一下
package com.mybatis.test;
import com.mybatis.entity.User;
import com.mybatis.mapper.UserMapper;
import com.mybatis.util.mybatisUtil;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;
public class mabitsTest {
@Test
public void UserTest() {
SqlSession sqlSession = mybatisUtil.getSession();
// 方式1(我在数据库插入了相应的数据 id为"122")
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
User user = mapper.selectByPrimaryKey("122");
System.out.println(user);
// 方式2
User user2 = sqlSession.selectOne("com.mybatis.mapper.UserMapper.selectByPrimaryKey", "122");
System.out.println(user2);
sqlSession.close();
}
输出如下:
可以观察 两种方式都可以得到User对象 可以看出mapper的接口主要是为mapper.xml服务
简单的配置mybaits就到这里 下面提供一个文档可供学习http://www.mybatis.org/mybatis-3/zh/getting-started.html