浅入mybatis(1)(初识篇 简单配置mybatis)
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