MyBatis - 使用示例 (一)单独使用
MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录
越来越多的企业已经将 MyBatis 使用到了正式的生产环境,本系列就先介绍几种简单使用 MyBatis 的方式。
一、单独使用 MyBatis 访问数据库
(一)引入依赖
各位参照的小伙伴们,注意下版本最好一致,避免出现不可预估的问题。
<dependencies>
<!--mybatis依赖包-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.6</version>
</dependency>
<!--测试包-->
<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.20</version>
</dependency>
<!--lombok-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.12</version>
</dependency>
<!--JSON格式解析-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.73</version>
</dependency>
</dependencies>
(二)添加mybatis-config.xml
注意:
plugins在配置文件中的位置必须符合要求,否则会报错,顺序如下:
properties?, settings?, typeAliases?, typeHandlers?, objectFactory?,objectWrapperFactory?, plugins?, environments?,databaseIdProvider?, mappers?
<?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>
<!-- 配置mybatis的缓存,延迟加载等等一系列属性 -->
<settings>
<!-- 全局映射器启用缓存 -->
<setting name="cacheEnabled" value="false" />
<!-- 对于未知的SQL查询,允许返回不同的结果集以达到通用的效果 -->
<setting name="multipleResultSetsEnabled" value="true" />
<!-- 是否开启自动驼峰命名规则映射,数据库的A_COLUMN映射为Java中的aColumn -->
<setting name="mapUnderscoreToCamelCase" value="true" />
<!-- MyBatis利用本地缓存机制(Local Cache)防止循环引用(circular references)和加速重复嵌套查询 -->
<setting name="localCacheScope" value="STATEMENT" />
</settings>
<!-- 指定路径下的实体类支持别名(默认实体类的名称,首字母小写), @Alias注解可设置别名 -->
<typeAliases>
<package name="cn.tzh.mybatisdemo.entity"/>
</typeAliases>
<!-- 配置当前环境信息 -->
<environments default="development">
<environment id="development">
<transactionManager type="JDBC">
<property name="" value=""/>
</transactionManager>
<!-- 配置数据源 -->
<dataSource type="UNPOOLED">
<property name="driver" value="com.mysql.cj.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/gsfy_user?useUnicode=true&characterEncoding=UTF-8&useSSL=false"/>
<property name="username" value="user"/>
<property name="password" value="password"/>
</dataSource>
</environment>
</environments>
<!-- 指定Mapper接口的路径 -->
<mappers>
<package name="cn.tzh.myabtisdemo.mapper"/>
</mappers>
</configuration>
(三)准备实体类
package cn.tzh.mybatisdemo.entity;
import lombok.Data;
import java.io.Serializable;
/**
* @author tzh
* @date 2020/12/28 14:32
*/
@Data
public class User implements Serializable {
private Long id;
private String userName;
private Integer age;
private String phone;
private String desc;
}
(四)创建Mapper接口
package cn.tzh.mybatisdemo.mapper;
import cn.tzh.mybatisdemo.entity.User;
import org.apache.ibatis.annotations.Param;
/**
* @author tzh
* @date 2020/12/28 14:29
*/
public interface UserMapper {
/**
* 查询用户
*
* @param id id
* @return {@link User}
* @author tzh
* @date 2020/12/30
*/
User selectUser(@Param("id") Long id);
}
(五)创建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="cn.tzh.mybatisdemo.mapper.UserMapper">
<!--标识开起二级缓存-->
<cache/>
<!--查询语句-->
<select id="selectUser" resultType="User">
select *
from user
where id = #{id}
</select>
</mapper>
(六)测试
package cn.tzh.mybatisdemo;
import cn.tzh.mybatisdemo.entity.User;
import cn.tzh.mybatisdemo.mapper.UserMapper;
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;
/**
* @author tzh
* @date 2020/12/28 14:36
*/
public class MybatisTest {
@Test
public void test() throws IOException {
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); //new DefaultSqlSessionFactory(config);
SqlSession sqlSession = sqlSessionFactory.openSession(true);
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
User user = mapper.selectUser(155L);
System.out.println(user.toString());
}
}
--------------最后感谢大家的阅读,愿大家技术越来越流弊!--------------
--------------也希望大家给我点支持,谢谢各位大佬了!!!--------------