MyBatis最初是Apache的一个开源项目iBatis,。 iBatis3.x正式更名为MyBatis。iBatis一词来源于“internet”和“abatis”的组合,是一个基于Java的持久层框架。
文章目录
前言
MyBatis最初是Apache的一个开源项目iBatis,。 iBatis3.x正式更名为MyBatis。iBatis一词来源于“internet”和“abatis”的组合,是一个基于Java的持久层框架。
一、mybatis的优点是什么?
1) MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的持久层框架。
2) MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。
3) MyBatis可以使用简单的XML或注解用于配置和原始映射。
4) MyBatis 是一个 半自动的ORM(Object Relation Mapping)框架,简化操作。
二、mybatis的基本使用
下面向大家展示的是mybatis的基础的增删改查的基本使用。
1.创建maven工程
代码如下(示例):
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.example</groupId>
<artifactId>Mybatis_end</artifactId>
<version>1.0-SNAPSHOT</version>
<dependencies>
<!-- https://mvnrepository.com/artifact/org.projectlombok/lombok-maven-plugin -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok-maven-plugin</artifactId>
<version>1.18.20.0</version>
<scope>provided</scope>
</dependency>
<!-- Mybatis核心 -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.7</version>
</dependency>
<!-- junit测试 -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<!-- MySQL驱动 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.13</version>
</dependency>
<!-- log4j日志 -->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.4.2</version>
<configuration>
<skipTests>true</skipTests>
</configuration>
</plugin>
</plugins>
</build>
</project>
2.创建mybatis的核心配置文件
代码如下(示例):
<?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="jdbc.properties"></properties>
<settings>
<!--将_自动映射为驼峰,emp_name:empName-->
<setting name="mapUnderscoreToCamelCase" value="true"/>
<!--开启延迟加载-->
<!--<setting name="lazyLoadingEnabled" value="true"/>-->
</settings>
<typeAliases>
<package name="com.th.mybatis.end.pojo"/>
</typeAliases>
<environments default="development">
<!--
environment:配置某个具体的环境
属性:
id:表示连接数据库的环境的唯一标识,不能重复
-->
<environment id="development">
<!--
transactionManager:设置事务管理方式
属性:
type="JDBC|MANAGED"
JDBC:表示当前环境中,执行SQL时,使用的是JDBC中原生的事务管理方式,事务的提交或回滚需要手动处理
MANAGED:被管理,例如Spring
-->
<transactionManager type="JDBC"/>
<!--
dataSource:配置数据源
属性:
type:设置数据源的类型
type="POOLED|UNPOOLED|JNDI"
POOLED:表示使用数据库连接池缓存数据库连接
UNPOOLED:表示不使用数据库连接池
JNDI:表示使用上下文中的数据源
-->
<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>
<!--引入映射文件-->
<mappers>
<!--<mapper resource="mappers/UserMapper.xml"/>-->
<package name="com.th.mybatis.end.dao"/>
</mappers>
</configuration>
3.创建mapper接口
public interface UserMapper {
int insert(User user);
int update(User user);
int delete(int id);
User selectById(int id);
List<User> selectAll();
}
3.创建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.th.mybatis.end.dao.UserMapper">
<insert id="insert">
insert into tb_user values(#{id},#{username},#{password},#{gender},#{addr})
</insert>
<update id="update" >
update tb_user set username=#{username},password=#{password},gender=#{gender},
addr=#{addr} where id=#{id}
</update>
<select id="selectById" resultType="user">
select * from tb_user where id=#{id}
</select>
4.sqlsession的工具类
public class SqlSessionUtils {
public static SqlSession getSqlSession(){
SqlSession sqlSession = null;
try {
InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(is);
sqlSession = sqlSessionFactory.openSession(true);
} catch (IOException e) {
e.printStackTrace();
}
return sqlSession;
}
}
4.测试类
public class MybatisTest {
@Test
public void addTest(){
SqlSession sqlSession = SqlSessionUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
User user=new User(null,"qzc","741","男","永州");
int result = mapper.insert(user);
System.out.println(result);
}
@Test
public void updateTest(){
SqlSession sqlSession = SqlSessionUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
User user=new User(14,"hccccc","74117","女","永州");
int result = mapper.update(user);
System.out.println(result);
}
@Test
public void selectByIdTest(){
SqlSession sqlSession = SqlSessionUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
User user = mapper.selectById(1);
System.out.println(user);
}
@Test
public void selectAll(){
SqlSession sqlSession = SqlSessionUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
List<User> users = mapper.selectAll();
System.out.println(users);
}
@Test
public void addTest2(){
SqlSession sqlSession = SqlSessionUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
int delete = mapper.delete(18);
System.out.println(delete);
}
}
二、mybatis使用的注意事项
1.目录的搭建结构,java和resource的结构要一致,不然会报错找不到匹配的类。
2.resource下的包编写失效,不是目录结构。可以使用文件夹/。。/。。这种格式。
3.mybatis自带的缓存机制,有时候喜欢无缘无故的报错,需要多多的maven管理,刷新,清理,重新导包。
总结
以上是mybatis的简单的入门的基本的增删改查操作,喜欢的多多关注下。后面会继续更新更加完善的内容。