
- MyBatis 是一个基于java的持久层框架
- 支持定制化SQL,储存过程以及高级映射
- 避免大部分jdbc代码和手动设置参数以及获取结果集
- 使用简单的xml或注解用于配置和原始映射,将接口或java对象映射成数据库中的记录(半自动)
- *** 作简便,开发效率高
- 将SQL和java编码分开,功能便捷清晰
数据库连接,使用要创建,不使用需要立即释放
对数据库频繁的连接开启和关闭,造成数据库资源浪费
将SQL语句编码到java代码,要修改SQL需要重新编译java代码,不利于系统维护
遍历result结果集时,需要手动的讲数据映射成java对象
2、搭建
1.创建maven工程,引入依赖
最先起码,有个数据库表,并创建实体类,可在idea中安装MybatisX插件,可实现在xml映射文件和接口方法间相互跳转,提高编程效率
<dependencies>
<dependency>
<groupId>org.mybatisgroupId>
<artifactId>mybatisartifactId>
<version>3.5.7version>
dependency>
<dependency>
<groupId>junitgroupId>
<artifactId>junitartifactId>
<version>4.12version>
<scope>testscope>
dependency>
<dependency>
<groupId>mysqlgroupId>
<artifactId>mysql-connector-javaartifactId>
<version>8.0.26version>
dependency>
<dependency>
<groupId>log4jgroupId>
<artifactId>log4jartifactId>
<version>1.2.17version>
dependency>
dependencies>
2、创建MyBatis的核心配置文件
- 一般是mybatis-config.xml,只是建议,可以改成任意名,放在src/main/resources目录下
- 可去官网查看
DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.cj.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/MyBatis"/>
<property name="username" value="root"/>
<property name="password" value="123456"/>
dataSource>
environment>
environments>
<mappers>
<mapper resource="mappers/UserMapper.xml"/>
mappers>
configuration>
DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<properties resource="jdbc.properties"/>
<typeAliases>
<typeAlias type="com.sanxia.mybatis.pojo.User"
alias="User">typeAlias>
<package name="com.sanxia.mybatis.pojo.User"/>
typeAliases>
<environments default="development">
<environment id="development">
<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>
<environment id="test">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.cj.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/web"/>
<property name="username" value="root"/>
<property name="password" value="123456"/>
dataSource>
environment>
environments>
<mappers>
<package name="com.sanxia.mybatis.mapper"/>
mappers>
configuration>
3、创建mapper接口,及一个SQL语句
- mapper接口相当于以前的dao,但仅仅是接口,不需要提供实现类
package com.atguigu.mybatis.mapper;
public interface UserMapper {
/**
* 添加用户信息
*/
int insertUser();
}
4、创建MyBatis的映射文件
- xxxMapper.xml 文件
DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.atguigu.mybatis.mapper.UserMapper">
<insert id="insertUser">
insert into t_user values(null,'张三','123',23,'女')
insert>
mapper>
5、测试
- 编写一个测试类,来验证程序可行性
package com.sanxia.mybatis.test;
import com.sanxia.mybatis.mapper.UserMapper;
import com.sanxia.mybatis.pojo.User;
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 org.junit.Test;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;
public class MyBatisTest {
/**
* SqlSession默认不自动提交事务,若需要自动提交事务
* 可以使用SqlSessionFactory.openSession(true);
*
*/
@Test
public void testMyBatis() throws IOException {
//加载核心配置文件
InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
//获取SQLSessionFactoryBuilder
SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();
//获取SQLSessionFactory
SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(is);
//获取sqlSession
SqlSession sqlSession = sqlSessionFactory.openSession(true);
//获取mapper接口对象
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
//test
int result = mapper.insertUser();
//提交事务
// sqlSession.commit();
System.out.println(result);
}
使用resultMap,输出映射
- 使用resultType进行输出映射,只有查询出来的列名和pojo中的属性一致,才能成功,查询结果只有一行一列
- 如果查询出来的列名和属性名不一致,通过定义一个resultMap对列名和属性名之间做一个映射关系
- 定义resultMap
- 使用resultMap,在映射配置文件中使用resultMap定义 字段 和 属性 的映射关系
<resultMap id="brandResultMap" type="brand">
<result column="brand_name" property="brandName"/>
<result column="company_name" property="companyName"/>
resultMap>
mybatis的增删改查了解跟多,请自行去官方了解——MyBatis中文官方网站
我的Mybatis代码
如果嫌这些太麻烦了,还是去学学mybatis plus
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)