之前我们讲的基于XML还是接口注解配置都是使用接口实现CRUD,本文我们将要讲解通过splsession来实现CRUD,这种方法比较灵活。

基本配置

  1. <!-- spring和MyBatis完美整合,不需要mybatis的配置映射文件 -->
  2. <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
  3. <property name="dataSource" ref="dataSource" />
  4. <property name="mapperLocations" value="classpath:mapping/*.xml"></property>
  5. <!-- 分页插件 -->
  6. <property name="plugins">
  7. <array>
  8. <bean class="com.github.pagehelper.PageHelper">
  9. <property name="properties">
  10. <value>
  11. dialect=mysql
  12. </value>
  13. </property>
  14. </bean>
  15. </array>
  16. </property>
  17. </bean>
  18.  
  19. <bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate">
  20. <constructor-arg index="0" ref="sqlSessionFactory" />
  21. </bean>

Mapper实现

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  3. <mapper namespace="sysUserMapper">
  4. <select id="SelectOne" parameterType="java.util.HashMap" resultType="java.util.HashMap">
  5. select * from user_ where id = #{id,jdbcType=VARCHAR} limit 0,20
  6. </select>
  7. <select id="SelectProc" parameterType="java.util.HashMap" resultType="java.util.HashMap" >
  8. {call get_user(#{id,jdbcType=VARCHAR})}
  9. </select>
  10. <select id="SelectList" parameterType="java.util.HashMap" resultType="java.util.HashMap" >
  11. select * from user_
  12. <where>
  13. <if test="male_ != null and male_!=''">
  14. AND male_ = #{male_,jdbcType=VARCHAR}
  15. </if>
  16. </where>
  17. limit 0,20
  18. </select>
  19. <insert id="insert" parameterType="java.util.HashMap">
  20. insert into user_test(id, name) values(#{id}, #{name})
  21. </insert>
  22. </mapper>

数据实现

首先我们 添加SqlSession 属性注入

  1. @Autowired
  2. private SqlSession sqlSession;

然后我们实现具体的CRUD操作

  1. public Map<String, String> SelectOne(String method,Object Para)
  2. {
  3. return sqlSession.selectOne(method, Para);
  4. }
  5.  
  6. public List<Map<String, String>> SelectList(String method,Object Para)
  7. {
  8. return sqlSession.selectList(method, Para);
  9. }
  10.  
  11. public List<Map<String, String>> SelectProc(String method,Object Para)
  12. {
  13. return sqlSession.selectList(method, Para);
  14. }
  15.  
  16. public void insert(String method,Object Para)
  17. {
  18. if(Para.getClass().getName().equals("java.util.ArrayList"))
  19. {
  20. ArrayList list = (ArrayList) Para;
  21. for (int i = 0; i < list.size(); i++) {
  22. HashMap hm = (HashMap) list.get(i);
  23. sqlSession.insert(method, hm);
  24. }
  25. }
  26. else
  27. {
  28. sqlSession.insert(method, Para);
  29. }
  30. }
  31.  
  32. public void update(String method,Object Para)
  33. {
  34. if(Para.getClass().getName().equals("java.util.ArrayList"))
  35. {
  36. ArrayList list = (ArrayList) Para;
  37. for (int i = 0; i < list.size(); i++) {
  38. HashMap hm = (HashMap) list.get(i);
  39. sqlSession.update(method, hm);
  40. }
  41. }
  42. else
  43. {
  44. sqlSession.update(method, Para);
  45. }
  46.  
  47. }
  48.  
  49. public void delete(String method,Object Para)
  50. {
  51. if(Para.getClass().getName().equals("java.util.ArrayList"))
  52. {
  53. ArrayList list = (ArrayList) Para;
  54. for (int i = 0; i < list.size(); i++) {
  55. HashMap hm = (HashMap) list.get(i);
  56. sqlSession.delete(method, hm);
  57. }
  58. }
  59. else
  60. {
  61. sqlSession.delete(method, Para);
  62. }
  63. }

路由中转操作

  1. public Object doProess(String BsCode,String Operation, Object Para) {
  2. String method=BsCode.trim()+"."+Operation.trim();
  3. // try {
  4. switch (Operation) {
  5. case "SelectOne":
  6. return SelectOne(method, Para);
  7. case "SelectList":
  8. return SelectList(method, Para);
  9. case "SelectProc":
  10. return SelectProc(method, Para);
  11. case "insert":
  12. insert(method, Para);
  13. return 1;
  14. case "update":
  15. update(method, Para);
  16. return 1;
  17. case "delete":
  18. delete(method, Para);
  19. return 1;
  20. default:
  21. return "无相关操作类型";
  22.  
  23. }
  24. // }catch (Exception e)
  25. // {
  26. // return e.getMessage();
  27. // }
  28. }

数据验证测试

  1. @RunWith(SpringJUnit4ClassRunner.class) //使用junit4进行测试
  2. @ContextConfiguration({"classpath:spring-base.xml"})
  3. public class commServiceImplTest {
  4.  
  5. @Autowired
  6. private commService commservice;
  7.  
  8. @Test
  9. public void selectOne() throws Exception {
  10. String bsCode="sysUserMapper";
  11. String Operation="SelectOne";
  12. Map<String, String> para=new HashMap<String, String>();
  13. para.put("id","fjx");
  14. Map<String, String> userinfo=(Map<String, String>) commservice.doProess(bsCode,Operation, para);
  15. System.out.print(userinfo);
  16. }
  17.  
  18. @Test
  19. public void doProess2() throws Exception {
  20. String bsCode="sysUserMapper";
  21. String Operation="SelectProc";
  22. Map<String, String> para=new HashMap<String, String>();
  23. para.put("id","fjx");
  24. Object userinfo=commservice.doProess(bsCode,Operation,para);
  25. System.out.print(userinfo);
  26. }
  27.  
  28. @Test
  29. public void doProess3() throws Exception {
  30. String bsCode="sysUserMapper";
  31. String Operation="SelectList";
  32. Map<String, String> para=new HashMap<String, String>();
  33. para.put("male_","1");
  34. Object users=commservice.doProess(bsCode,Operation,para);
  35. System.out.print(users);
  36. }
  37.  
  38. }

GITHUB

github : https://github.com/nbfujx/Goku.WebService.Bus

Mybatis基于SqlSession实现CRUD的更多相关文章

  1. Mybatis基于代理Dao实现CRUD操作 及 Mybatis的参数深入

    Mybatis基于代理Dao实现CRUD操作 使用要求: 1.持久层接口和持久层接口的映射配置必须在相同的包下 2.持久层映射配置中mapper标签的namespace属性取值必须是持久层接口的全限定 ...

  2. SSM框架之Mybatis(2)CRUD操作

    Mybatis(2)CRUD 1.基于代理Dao实现CRUD操作 使用要求: 1.持久层接口(src\main\java\dao\IUserDao.java)和持久层接口的映射配置(src\main\ ...

  3. mybatis升级案例之CRUD操作

    mybatis升级案例之CRUD操作 一.准备工作 1.新建maven工程,和入门案例一样 主要步骤如下,可参考mybatis入门实例 a.配置pom.xml文件 b.新建实例类User.DAO接口类 ...

  4. Mybatis实现简单的CRUD(增删改查)原理及实例分析

    Mybatis实现简单的CRUD(增删改查) 用到的数据库: CREATE DATABASE `mybatis`; USE `mybatis`; DROP TABLE IF EXISTS `user` ...

  5. MyBatis学习(三)MyBatis基于动态代理方式的增删改查

    1.前言 上一期讲到MyBatis-Statement版本的增删改查.可以发现.这种代码写下来冗余的地方特别多.写一套没啥.如果涉及到多表多查询的时候就容易出现问题.故.官方推荐了一种方法.即MyBa ...

  6. 【mybatis xml】数据层框架应用--Mybatis 基于XML映射文件实现数据的CRUD

    使用MyBatis框架进行持久层开发 MyBatis是支持普通SQL查询,存储过程和高级映射的优秀持久层框架. MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索. MyBa ...

  7. SpringMVC4+MyBatis+SQL Server2014 基于SqlSession实现读写分离(也可以实现主从分离)

    前言 上篇文章我觉的使用拦截器虽然方便快捷,但是在使用读串还是写串上你无法控制,我更希望我们像jdbc那样可以手动控制我使用读写串,那么这篇则在sqlsession的基础上实现读写分离, 这种方式则需 ...

  8. mybatis与spring的整合(使用sqlSession进行crud)

    上次介绍了用接口的方法极大的节省了dao层,只需通过 配置文件和接口就可以实现,这次介绍的是通过splsession来实现dao,这种方法比较灵活: 先不说,上配置文件: 1.web.xml < ...

  9. Hello Mybatis 01 第一个CRUD

    What's the Mybatis? MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google c ...

随机推荐

  1. boost unordered

    Boost.Unordered provides the classes boost::unordered_set, boost::unordered_multiset, boost::unorder ...

  2. Word图片粘贴上传控件,直接粘贴图片到编辑器-DEDE

    很多时候我们用一些管理系统的时候,发布新闻.公告等文字类信息时,希望能很快的将word里面的内容直接粘贴到富文本编辑器里面,然后发布出来.减少排版复杂的工作量. 下面是借用百度doc 来快速实现这个w ...

  3. LVS负载均衡中arp_ignore和arp_annonuce参数配置

    先简单的介绍下关于LVS负载均衡 LVS(Linux  Virtual Server)Linux服务器集群系统 针对高可伸缩,高可用服务的需求,给予IP层和内容请求分发的负载均衡调度解决方法,并在Li ...

  4. flutter图片组件

    在flutter中,image组件有很多构造函数,常用的包括Image.asset(本地图片)和Image.network(远程图片). 常用属性 不管是显示本地图片还是远程图片,image组件都包含 ...

  5. BZOJ 5137: [Usaco2017 Dec]Standing Out from the Herd(后缀自动机)

    传送门 解题思路 这个似乎和以前做过的一道题很像,只不过这个是求本质不同子串个数.肯定是先把广义\(SAM\)造出来,然后\(dfs\)时把子节点的信息合并到父节点上,看哪个只被一个串覆盖,\(ans ...

  6. (转)docker run的--rm选项详解

    转:https://blog.csdn.net/taiyangdao/article/details/73076770 在Docker容器退出时,默认容器内部的文件系统仍然被保留,以方便调试并保留用户 ...

  7. (转)阿里官方提供的dubbo-spring-boot-starter 1.0.1 整合的dubbo 2.6.0和spring boot 1.5.9 案例

    作者:许浩_5e9f链接:https://www.jianshu.com/p/5381cc8876e3來源:简书著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. springboo ...

  8. sqlserver数据库里怎样设置datetime类型的小数位数为3位

    要用datetime2(7)这种类型!将7改为3就行了

  9. git开发实战:认识git

    git简介: git是分布式版本控制系统,相比较svn相比,git会在本地保存完整的提交记录,即使远程服务器宕机数据消失,可以将本地分支提交到远程服务器,本地分支会保存完整的记录.只要文件提交到git ...

  10. 小程序BUTTON点击,去掉背景色

    添加hover-class <button form-type="submit"  hover-class="btn-hover"></but ...