前言
学校:许昌学院
学院:信息工程学院
实验环境:操作系统:Windows10 ; JDK版本:1.8 ; 开发工具:IDEA&&Eclipse
参考资料:
Spring+Spring MVC+MyBatis框架技术精讲与整合案例
JAVAEE技术
官方文档
一、MyBatis 入门
本博客写的不够简练,推荐阅读这篇博客:MyBatis-Mapper映射文件配置
另外建议大家多阅读:官方文档
1.1MyBatis简介
MyBatis 是支持普通 SQL查询,存储过程和高级映射的优秀持久层框架。
MyBatis 消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索。
MyBatis 使用简单的 XML或注解用于配置和原始映射,将接口和 Java 的POJOs(Plain Ordinary Java Objects,普通的 Java对象)映射成数据库中的记录。
每个MyBatis应用程序主要都是使用SqlSessionFactory实例的,一个SqlSessionFactory实例可以通过SqlSessionFactoryBuilder获得。
SqlSessionFactoryBuilder可以从一个xml配置文件或者一个预定义的配置类的实例获得。
用xml文件构建SqlSessionFactory实例是非常简单的事情。
推荐在这个配置中使用类路径资源(classpath resource),但你可以使用任何Reader实例,包括用文件路径或file://开头的url创建的实例。
MyBatis有一个实用类----Resources,它有很多方法,可以方便地从类路径及其它位置加载资源。
注:以上来自于:百度百科
1.2MyBatis下载安装
1、手动下载
通过官方网站https://github.com/mybatis/mybatis-3/releases下载MyBatis的最新版本mybatis-3.4.6.zip 。
MyBatis压缩包的文件结构 :
将相应的架包 <mybatis-3.4.6.jar> 引入项目工程
2、通过Maven安装
2.1 引入mysql依赖包
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.32</version>
</dependency>
2.2、引入mybatis依赖包
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.2.8</version>
</dependency>
3、引入日志依赖包
3.1、手动引入
将mybatis-3.4.6\lib\目录下的log4j-1.2.17.jar添加至项目工程
添加文件 :log4j.xml 文件
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
<!-- Console output -->
<appender name="STDOUT" class="org.apache.log4j.ConsoleAppender">
<layout class="org.apache.log4j.PatternLayout">
<!-- <param name="ConversionPattern" value="%-5p %d{MM-dd HH:mm:ss} %m (%F:%L) \n" /> -->
<param name="ConversionPattern" value="%-5p [%t] - %m%n" />
</layout>
</appender>
<logger name="java.sql">
<level value="debug" />
</logger>
<logger name="org.apache.ibatis">
<level value="debug" />
</logger>
<root>
<level value="debug" />
<appender-ref ref="STDOUT" />
</root>
</log4j:configuration>
3.2、Maven引入
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.5</version>
</dependency>
添加:log4j.properties文件
log4j.rootLogger=DEBUG,A1
log4j.logger.org.apache=DEBUG
log4j.appender.A1=org.apache.log4j.ConsoleAppender
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%-d{
yyyy-MM-dd HH:mm:ss,SSS} [%t] [%c]-[%p] %m%n
1.3MyBatis工作原理
使用MyBatis操作数据库时,大致经过以下步骤。
(1) 读取MyBatis配置文件mybatis-config.xml
(2) 加载映射文件mapper.xml
(3) 创建会话工厂:SqlSessionFactory
(4) 创建会话:SqlSession
(5) 通过Executor操作数据库
(6) 输入参数和输出结果的映射
1.4简单增删改查
- 创建全局配置文件 mybatis-config.xml
#链接mysql的配置文件
jdbc.driver=com.mysql.jdbc.Driver #驱动包
jdbc.url=jdbc:mysql://localhost:3306/eshop #数据库地址
jdbc.username=root #数据库用户名
jdbc.password=123456 #数据库密码
<?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>
<!-- 加载属性文件(MySQL链接信息) <也可不加载直接写在该文件> -->
<properties resource="db.properties"/>
<!-- 给包中的类注册别名 -->
<typeAliases>
<package name="com.mybatis.pojo"/> #实体类所在的包路径
</typeAliases>
<!-- 配置环境:可以有多个,ID为唯一标识 -->
<environments default="test">
<!-- id:唯一标识 -->
<environment id="test">
<!-- 事务管理器,JDBC类型的事务管理器 -->
<transactionManager type="JDBC" />
<!-- 数据源,池类型的数据源 -->
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://127.0.0.1:3306/mybatis-110" />
<property name="username" value="root" />
<property name="password" value="123456" />
</dataSource>
</environment>
<environment id="development">
<!-- 使用JDBC事务 -->
<transactionManager type="JDBC"/>
<!-- 数据库连接使用 指定数据源,使用数据库连接池 -->
<dataSource type="POOLED">
<property name="driver" value="${jdbc.driver}"/> <!-- 配置了properties,所以可以直接引用 -->
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
</dataSource>
</environment>
</environments>
<!-- 引用映射文件 -->
<mappers>
<mapper resource="com/mybatis/mapper/UserInfoMapper.xml"/>
</mappers>
</configuration>
- 配置Map.xml:UserInfoMapper.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.UserInfoMapper">
<!-- 根据用户编号查询用户 -->
<select id="findUserInfoById" parameterType="int" resultType="UserInfo">
select * from user_info where id=#{id}
</select>
<!-- 根据用户名查询用户 -->
<select resultType="UserInfo" parameterType="String" id="findUserInfoByUserName">
select * from user_info where userName like CONCAT(CONCAT('%',#{userName}),'%')
</select>
<!-- 添加用户 -->
<insert id="addUserInfo" parameterType="UserInfo">
insert into user_info(userName,password) values (#{userName},#{password})
</insert>
<!-- 修改用户信息 -->
<update parameterType="UserInfo" id="updateUserInfo">
update user_info set userName=#{userName}, password=#{password} where id=#{id}
</update>
<!-- 根据用户编号删除用户 -->
<delete parameterType="int" id="deleteUserInfo">
delete from user_info where id=#{id}
</delete>
</mapper>
- 测试:
public class MybatisTest {
private SqlSessionFactory sqlSessionFactory;
private SqlSession sqlSession;
@Before
public void init() {
// 读取mybatis配置文件
String resource = "mybatis-config.xml";
InputStream inputStream;
try {
// 得到配置文件流
inputStream = Resources.getResourceAsStream(resource);
// 根据配置文件信息,创建会话工厂
sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
// 通过工厂得到SqlSession
sqlSession = sqlSessionFactory.openSession();
} catch (IOException e) {
e.printStackTrace();
}
}
// 根据id查询用户
@Test
public void testFindUserInfoById() {