博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Spring整合Mybatis案例,献给初学的朋友
阅读量:5760 次
发布时间:2019-06-18

本文共 8665 字,大约阅读时间需要 28 分钟。

  • 今天我们来学习Spring整合Mybatis。

  开发环境:Ide:MyEclipse 2017 CI

      JDK:1.8

   首先我们简单的认识下这两个框架

 1、Mybatis

 

   MyBatis是一个支持普通SQL查询存储过程高级映射的优秀持久层框架。MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装。MyBatis可以使用简单的XML或注解用于配置和原始映射,将接口和Java的POJO(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录。

  入门:1.所需Jar包 

  

 2、数据库搭建

  

1 DROP TABLE IF EXISTS `smbms_user`; 2 CREATE TABLE `smbms_user`  ( 3   `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键ID', 4   `userCode` varchar(15) CHARACTER SET utf8 COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '用户编码', 5   `userName` varchar(15) CHARACTER SET utf8 COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '用户名称', 6   `userPassword` varchar(15) CHARACTER SET utf8 COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '用户密码', 7   `gender` int(10) DEFAULT NULL COMMENT '性别(1:女、 2:男)', 8   `birthday` date DEFAULT NULL COMMENT '出生日期', 9   `phone` varchar(15) CHARACTER SET utf8 COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '手机',10   `address` varchar(30) CHARACTER SET utf8 COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '地址',11   `userRole` bigint(20) DEFAULT NULL COMMENT '用户角色(取自角色表-角色id)',12   `createdBy` bigint(20) DEFAULT NULL COMMENT '创建者(userId)',13   `creationDate` datetime(0) DEFAULT NULL COMMENT '创建时间',14   `modifyBy` bigint(20) DEFAULT NULL COMMENT '更新者(userId)',15   `modifyDate` datetime(0) DEFAULT NULL COMMENT '更新时间',16   PRIMARY KEY (`id`) USING BTREE17 ) ENGINE = InnoDB AUTO_INCREMENT = 35 CHARACTER SET = utf8 COLLATE = utf8_unicode_ci ROW_FORMAT = Dynamic;18 19 -- ----------------------------20 -- Records of smbms_user21 -- ----------------------------22 INSERT INTO `smbms_user` VALUES (1, 'admin', '系统管理员', '1234567', 1, '1983-10-10', '13688889999', '北京市海淀区成府路207号', 1, 1, '2013-03-21 16:52:07', NULL, NULL);23 INSERT INTO `smbms_user` VALUES (2, 'liming', '李明', '0000000', 2, '1983-12-10', '13688884457', '北京市东城区前门东大街9号', 2, 2, '2014-12-31 19:52:09', NULL, NULL);24 INSERT INTO `smbms_user` VALUES (5, 'hanlubiao', '韩路彪', '0000000', 2, '1984-06-05', '18567542321', '北京市朝阳区北辰中心12号', 2, 3, '2014-12-31 19:52:09', NULL, NULL);25 INSERT INTO `smbms_user` VALUES (6, 'zhanghua', '张华', '0000000', 2, '1983-06-15', '13544561111', '北京市海淀区学院路61号', 3, NULL, '2013-02-11 10:51:17', NULL, NULL);26 INSERT INTO `smbms_user` VALUES (7, 'wangyang', '王洋', '0000000', 2, '1982-12-31', '13444561124', '北京市海淀区西二旗辉煌国际16层', 3, NULL, '2014-06-11 19:09:07', NULL, NULL);27 INSERT INTO `smbms_user` VALUES (8, 'zhaoyan', '赵燕', '0000000', 2, '1986-03-07', '18098764545', '北京市海淀区回龙观小区10号楼', 3, NULL, '2016-04-21 13:54:07', NULL, NULL);28 INSERT INTO `smbms_user` VALUES (10, 'sunlei', '孙磊', '0000000', 3, '1981-01-04', '13387676765', '北京市朝阳区管庄新月小区12楼', 3, NULL, '2015-05-06 10:52:07', NULL, NULL);29 INSERT INTO `smbms_user` VALUES (11, 'sunxing', '孙兴', '0000000', 3, '1978-03-12', '13367890900', '北京市朝阳区建国门南大街10号', 3, NULL, '2016-11-09 16:51:17', NULL, NULL);30 INSERT INTO `smbms_user` VALUES (12, 'zhangchen', '张晨', '0000000', 3, '1986-03-28', '18098765434', '朝阳区管庄路口北柏林爱乐三期13号楼', 3, NULL, '2016-08-09 05:52:37', 1, '2016-04-14 14:15:36');31 INSERT INTO `smbms_user` VALUES (13, 'dengchao', '系邓超', '0000000', 1, '1981-11-04', '13689674534', '北京市海淀区北航家属院10号楼', 3, NULL, '2016-07-11 08:02:47', NULL, NULL);32 INSERT INTO `smbms_user` VALUES (14, 'yangguo', '系杨过', '0000000', 1, '1980-01-01', '13388886623', '北京市朝阳区北苑家园茉莉园20号楼', 3, NULL, '2015-02-01 03:52:07', NULL, NULL);33 INSERT INTO `smbms_user` VALUES (15, 'zhaomin', '系赵敏', '0000000', 1, '1987-12-04', '18099897657', '北京市昌平区天通苑3区12号楼', 2, NULL, '2015-09-12 12:02:12', NULL, NULL);

 

 3、导入Log4j配置

log4j.rootLogger=debug, stdout,logfilelog4j.appender.stdout=org.apache.log4j.ConsoleAppenderlog4j.appender.stdout.Target=System.errlog4j.appender.stdout.layout=org.apache.log4j.SimpleLayoutlog4j.appender.logfile=org.apache.log4j.FileAppenderlog4j.appender.logfile.File=jbit.loglog4j.appender.logfile.layout=org.apache.log4j.PatternLayoutlog4j.appender.logfile.layout.ConversionPattern=%d{yyyy-MM-dd HH\:mm\:ss}%l %F %p %m%n

  4、导入Jdbc配置

jdbc.driver=com.mysql.jdbc.Driverjdbc.uri=jdbc\:mysql\://localhost\:3306/smbms?useUnicode\=true&characterEncoding\=utf8jdbc.name=rootjdbc.pwd=1234

  项目目录:

  Mybatis是一个开源的持久化框架,用于优化项目中的Dao的Impl,替代Dao的为Mapper的接口,具体实现一样,只是名字不一,便于区分

  我们在对应的Mapper中写入具体需要执行的操作,并且建立对应相同名字的Xml文件

  

  

  类:UserMapper.java

    

package com.mapper;import java.util.List;import com.entuty.User;public interface UserMapper {    /*     * 查询所有的用户     */    List
Cxall();}

  UserMapper.xml配置

1 
2 3 4
5
8

  注意上述4行 需要引入Mapper命名空间,如果在整合Spring时使用的是Mapper 代理的方式需要注意 Id必须和UserMapper中的方法名保持一致。

  创建SqlMapperConfig.xml(Mybatis核心配置文件)

1 
2 3
4
5
给当前包中的所有类取别名,别名为类名 6
7
     8
                                配置数据源 9
10
11
12
13
14
15
16
17
18
19
                                      配置映射的Mapper20
21
22

  Mybatis环境搭建完毕。

  2、Spring

  导入Spring Jar包 其中的核心包是

  创建业务层和业务层的实现类

  创建Spring核心配置文件 applicationContext.xml

  在Spring发布的时候并未想到和Mybatis整合,而后也没为了mybatis发布版本,所以是由Mybtais 提供的整合。

  1、优化数据源 将数据源转交给Spring容器管理,那么Mybatis配置中的原有配置数据源以及 对应实现类的Mapper.xml都交于Spring容器

  

1 
2 3
5
给当前包中的所有类取别名,别名为类名 6
7
     8

 

  2.applicationContext.xml

  将jdbc配置也使用Spring获取  同时使用Dbcp数据源创建JDBc链接<?xml version="1.0" encoding="UTF-8"?>

   在Mybatis中 用户执行一个操作的顺序是 首先获取Sqlsessionfactoey     然后由Selsessionfactory创建 Sqlsession     之后确认是Mapper代理还是 原生的Steamnemet     在Spring中配置SqlsessionFactoryBean
com/mapper/*.xml

  Userserviceimpl.Java

  

package com.service.impl;import java.util.List;import org.apache.ibatis.session.SqlSession;import org.apache.ibatis.session.SqlSessionFactory;import org.mybatis.spring.SqlSessionTemplate;import org.mybatis.spring.support.SqlSessionDaoSupport;import com.entuty.User;import com.mapper.UserMapper;import com.service.Userservice;public class Userserviceimpl implements Userservice {        private UserMapper userMapper;    public void setUserMapper(UserMapper userMapper) {        this.userMapper = userMapper;    }    @Override    public List
Cxall() { return userMapper.Cxall(); }}

  对 private UserMapper userMapper; 进行注入

  同时使Spring容器来扫描对应的Mapper

  

      

   测试:

    

package com.Test;import java.io.IOException;import java.io.InputStream;import java.util.List;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.mybatis.spring.SqlSessionFactoryBean;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;import com.entuty.User;import com.mapper.UserMapper;import com.service.Userservice;import com.service.impl.Userserviceimpl;public class Test {    public static void main(String[] args) {        ApplicationContext ap=new ClassPathXmlApplicationContext("applicationContext.xml");        Userservice us=(Userservice) ap.getBean("sqlFactory");        List
arr=us.Cxall(); for (User user : arr) { System.out.println(user.getUsername()); } }}

  结果:

  

DEBUG - Fetching JDBC Connection from DataSourceDEBUG - JDBC Connection [1606286799, URL=jdbc:mysql://localhost:3306/smbms?useUnicode=true&characterEncoding=utf8, UserName=root@localhost, MySQL-AB JDBC Driver] will not be managed by SpringDEBUG - ==>  Preparing: select * from smbms_user DEBUG - ==> Parameters: DEBUG - <==      Total: 22DEBUG - Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@757277dc]DEBUG - Returning JDBC Connection to DataSource系统管理员李明韩路彪张华王洋赵燕孙磊孙兴张晨系邓超系杨过系赵敏admin张三张三张三啊张三啊张三啊张三啊张三啊张三啊张三啊

  感谢大家,如有问题,敬请大牛指正! 

  

转载于:https://www.cnblogs.com/Mzcc/p/10241159.html

你可能感兴趣的文章
(七)Zabbix_windows客户端安装
查看>>
证书相关命令(个人保留)
查看>>
(Portal 开发读书笔记)Portlet间交互-PortletSession
查看>>
【资料搬迁】windows 下更改mysql的root密码
查看>>
openfiler简单使用
查看>>
Linux基于libmemcached,php扩展memcached的安装
查看>>
搭建vsftpd服务器,使用匿名账户登入
查看>>
AMD改善Linux驱动,支持动态电源管理
查看>>
idea 用Tomcat进行热部署遇到的问题
查看>>
webmagic入门-菜鸟教程html to markdown
查看>>
JAVA中循环删除list中元素的方法总结
查看>>
spring security的原理及教程
查看>>
Java虚拟机管理的内存运行时数据区域解释
查看>>
人人都会深度学习之Tensorflow基础快速入门
查看>>
ChPlayer播放器的使用
查看>>
这10个问题你一定要会!
查看>>
数据库获取 Android 短信
查看>>
如何应对业务安全问题,阿里聚安全专家笙华为你支招
查看>>
js 经过修改改良的全浏览器支持的软键盘,随机排列
查看>>
Mysql读写分离
查看>>