由来 MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 。2013年11月迁移到Github。
Mybatis是什么;
MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。
总结:简化了以前的Dao层的增删改查服务代码的开发,使SQL更灵活
为什么需要Mybatis
- 帮助程序员将数据存到数据库中。
- 方便
- 传统的JDBC代码太复杂,它简化。框架。自动化
- 不用Mybatis也可以,但是它更容易上手。
搭建步骤
-
1, 创建Maven项目
-
2,导入Jar包
<dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.5.2</version> </dependency> <dependencies> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.23</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <scope>test</scope> </dependency>
-
3, 编写配置文件
db.properties配置文件:
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/mybatis?useSSL=true&useUnicode=true&characterEncoding=UTF-8
username=root
password=root
<?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.properties"/>
<!-- typeAliases标签typeAlias给实体类起别名
packge扫描包中的实体类-->
<typeAliases>
<typeAlias type="com.kuang.pojo.User" alias="user"/>
<package name="com.kuang.pojo"/>
</typeAliases>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="${driver}"/>
<property name="url" value="${url}"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="com/kuang/dao/UserMappr.xml"/>
</mappers>
</configuration>
* 4,编写 Mybatis工具类(MybatisUtils)
package com.kuang.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 MybatisUtils {
public static SqlSessionFactory sqlSessionFactory;
static {
try {
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
} catch (IOException e) {
e.printStackTrace();
}
}
//用sqlSessionFactory来获取sqlSession
public static SqlSession getSqlSession(){
return sqlSessionFactory.openSession();
}
}
* 5,创建UserMapper接口
public interface UserMapper {
//查询全部用户
List<User> getUserList();
//根据ID查询用户
User getUserById(int id);
//insert 一个用户
int addUser(User user);
//修改用户
int updateUser(User user);
//dalete一个用户信息
int deleteUser(int id);
}
* 6,创建UserMapper.xml(相当于是UserMapper的实现类)
<?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.kuang.dao.UserMapper">,绑定接口
<!-- 结果集映射,防止属性名与字段名不一致造成结果错误,resultMap中的ID对应select的resultType;-->
<select id="getUserList" resultType="com.kuang.pojo.User"> id:绑定接口中的方法名
select * from mybatis.user
</select>
parameterType:接受传递值,resultType:返回值类型;
<select id="getUserById" parameterType="int" resultType="com.kuang.pojo.User">
select * from mybatis.user where id = #{id}
</select>
<insert id="addUser" parameterType="com.kuang.pojo.User">
insert into mybatis.user(id, name, pwd) values (#{id},#{name},#{pwd})
</insert>
<update id="updateUser" parameterType="com.kuang.pojo.User">
update mybatis.user set name = #{name},pwd = #{pwd} where id = #{id};
</update>
<delete id="deleteUser" parameterType="int">
delete from mybatis.user where id = #{id}
</delete>
</mapper>
@Test//增删改必须提交事务
public void addUser(){
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserDao mapper = sqlSession.getMapper(UserDao.class);
int cont = mapper.addUser(new User(4, "哈哈", "444"));
if (cont>0){
System.out.println("插入成功");
}
sqlSession.commit();
sqlSession.close();
}