第一步:导入相关依赖jar包

<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>2.0.6</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.2</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.47</version>
</dependency>
<!-- 引入spring-jdbc -->
<!-- https://mvnrepository.com/artifact/org.springframework/spring-jdbc -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>5.0.2.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.0.2.RELEASE</version>
</dependency>

第二步:在数据库中新建spring数据库,并创建User表

DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
`uid` int(10) NOT NULL AUTO_INCREMENT,
`uname` varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL,
`usex` varchar(10) COLLATE utf8_unicode_ci DEFAULT NULL,
PRIMARY KEY (`uid`)
) ENGINE=InnoDB AUTO_INCREMENT=41 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

第三步:编写实体类User

package com.lzp.pojo;

/**
* @Author LZP
* @Date 2021/2/2 9:27
* @Version 1.0
*/ public class User {
private int id;
private String name;
private String sex; public User() {
} public User(int id, String name, String sex) {
this.id = id;
this.name = name;
this.sex = sex;
} public int getId() {
return id;
} public void setId(int id) {
this.id = id;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public String getSex() {
return sex;
} public void setSex(String sex) {
this.sex = sex;
} @Override
public String toString() {
return "User{" +
"id=" + id +
", name='" + name + '\'' +
", sex='" + sex + '\'' +
'}';
}
}

第四步:编写mybatis-config.xml文件

<?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核心配置文件 -->
<configuration> <!-- 别名 -->
<typeAliases>
<package name="com.lzp.pojo"/>
</typeAliases> </configuration>

第五步:编写spring-dao.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd"> <!--
配置Spring的数据源 DriverManagerDataSource
这里的配置driver url username password 跟mybatis中的数据源配置是一样的
-->
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/spring?useSSL=true&amp;useUnicode=true&amp;characterEncoding=UTF-8"/>
<property name="username" value="root"/>
<property name="password" value="123"/>
</bean> <!-- 配置SqlSessionFactory -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<!-- 配置mybatis核心配置文件的位置以及映射文件的位置 ————》可配可不配-->
<property name="configLocation" value="classpath:mybatis-config.xml"/>
<property name="mapperLocations" value="classpath*:com/lzp/mapper/*.xml"/>
</bean> <!--
配置SqlSessionTemplate:
在 MyBatis 中,你可以使用 SqlSessionFactory 来创建 SqlSession。
一旦你获得一个 session 之后,你可以使用它来执行映射了的语句,提交或
回滚连接,最后,当不再需要它的时候,你可以关闭 session。使用 MyBatis-Spring
之后,你不再需要直接使用 SqlSessionFactory 了,因为你的 bean 可以被注入一个
线程安全的 SqlSession,它能基于 Spring 的事务配置来自动提交、回滚、关闭 session。
-->
<bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate">
<constructor-arg index="0" ref="sqlSessionFactory"/>
</bean>
</beans>

第六步:编写applicationContext.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd"> <!-- 导入spring-dao.xml文件即可 -->
<import resource="spring-dao.xml"/> <!-- 这里别忘了给userMapper注册SqlSessionTemplate对象 -->
<bean id="userMapper" class="com.lzp.mapper.UserMapperImpl">
<property name="sqlSession" ref="sqlSession"/>
</bean>
</beans>

第七步:编写UserMapper接口

package com.lzp.mapper;

import com.lzp.pojo.User;

import java.util.List;

/**
* @Author LZP
* @Date 2021/2/2 9:32
* @Version 1.0
*/
public interface UserMapper {
List<User> queryUsers();
}

第八步:编写UserMapper.xml文件

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.lzp.mapper.UserMapper"> <!-- 查询所有用户 -->
<select id="queryUsers" resultMap="userMap">
select * from spring.user
</select> <resultMap id="userMap" type="user">
<result property="id" column="uid"/>
<result property="name" column="uname"/>
<result property="sex" column="usex"/>
</resultMap>
</mapper>
  并且新增一个UserMapperImpl实体类,这里就相当于加了一层,是为了更好的让spring自动管理事务
package com.lzp.mapper;

import com.lzp.pojo.User;
import org.mybatis.spring.SqlSessionTemplate; import java.util.List; /**
* @Author LZP
* @Date 2021/2/2 10:24
* @Version 1.0
*
* 程序经典语录:
* 没有什么是加一层不能解决的,如果不行,那就再加一层。
* 新增一个实现类
* 相当于加了一层,这是为了让Spring能对mybatis中使用到的Bean对象进行管理,同时
* 它也能基于 Spring 的事务配置来自动提交、回滚、关闭 session。原来只有一个接口和
* 一个与接口对应的XXXMapper.xml文件,这两个都不能实例化,也就不能交给Spring去管理,
* 这样就无法做到Spring中事务的一致性和安全性,不如将其也交给Spring所管理,那么这样
* 一来,Spring就能统一管理与事务相关的所有Bean来保证事务操作的一致性和安全性。
*/
public class UserMapperImpl implements UserMapper { private SqlSessionTemplate sqlSession; public void setSqlSession(SqlSessionTemplate sqlSession) {
this.sqlSession = sqlSession;
} @Override
public List<User> queryUsers() {
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
return userMapper.queryUsers();
}
}

最后一步:编写测试类

package com.lzp.test;

import com.lzp.mapper.UserMapper;
import com.lzp.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.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext; import java.io.IOException;
import java.io.InputStream;
import java.util.List; /**
* @Author LZP
* @Date 2021/2/2 9:40
* @Version 1.0
*
* 回顾Mybatis
*/
public class UserMapperTest {
public static void main(String[] args) {
ApplicationContext app = new ClassPathXmlApplicationContext("applicationContext.xml");
UserMapper userMapper = app.getBean("userMapper", UserMapper.class);
List<User> users = userMapper.queryUsers();
for (User user : users) {
System.out.println(user);
} }
}

测试结果:

最新文章

  1. Linux平台 Oracle 11gR2 RAC安装Part3:DB安装
  2. Qt 之 数字钟
  3. 数据持久化以及DAO模式的简单使用
  4. SELECT控件操作的JS代码示例
  5. LeetCode---Binary Search
  6. select、poll、poll的比较(转)
  7. [SmartFoxServer入门]服务器安装
  8. 快速安装 GitLab 并汉化
  9. poj 3020 最短路径覆盖 Antenna Placement
  10. 【海岛帝国系列赛】No.6 海岛帝国:战争前线
  11. Java--&gt;IO流模拟实现用户登录以及登录信息
  12. C语言---递归反向输出任意长度的字符串
  13. MVC无刷新查询,PagedList分页控件使用,导出Excel
  14. python2.7.5 安装pip 良心推荐,超级简单.
  15. LongAdder 测试
  16. 如何通过SSH工具(SecureCRT、XShell)连接Vmware虚拟机中的Linux(CentOS7)
  17. IDEA控制台问题:At least one JAR was scanned for TLDs yet contained no TLD
  18. 学习记录特别篇之sql,类的继承
  19. C++学习(二十五)(C语言部分)之 结构体2
  20. CentOS7.5搭建Flask环境python3.6+mysql+redis+virtualenv

热门文章

  1. 【中文】【deplearning.ai】【吴恩达课后作业目录】
  2. 如何封装Promise对象?
  3. 一键测试VPS到国内速度脚本 SuperBench.sh,以及一键验收云主机脚本
  4. 使用Python对MySQL数据库插入二十万条数据
  5. CODING 再携手腾讯云 Serverless,让开发者跑步上云
  6. CSGO项目
  7. Redis 底层数据结构设计
  8. postgresql 知识的整理
  9. Promise 中reject 和 catch 处理上有什么区别
  10. 【题解】洛谷P3119 Grass Cownoisseur G