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

基本配置

  <!-- spring和MyBatis完美整合,不需要mybatis的配置映射文件 -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="mapperLocations" value="classpath:mapping/*.xml"></property>
<!-- 分页插件 -->
<property name="plugins">
<array>
<bean class="com.github.pagehelper.PageHelper">
<property name="properties">
<value>
dialect=mysql
</value>
</property>
</bean>
</array>
</property>
</bean> <bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate">
<constructor-arg index="0" ref="sqlSessionFactory" />
</bean>

Mapper实现

 <?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="sysUserMapper">
<select id="SelectOne" parameterType="java.util.HashMap" resultType="java.util.HashMap">
select * from user_ where id = #{id,jdbcType=VARCHAR} limit 0,20
</select>
<select id="SelectProc" parameterType="java.util.HashMap" resultType="java.util.HashMap" >
{call get_user(#{id,jdbcType=VARCHAR})}
</select>
<select id="SelectList" parameterType="java.util.HashMap" resultType="java.util.HashMap" >
select * from user_
<where>
<if test="male_ != null and male_!=''">
AND male_ = #{male_,jdbcType=VARCHAR}
</if>
</where>
limit 0,20
</select>
<insert id="insert" parameterType="java.util.HashMap">
insert into user_test(id, name) values(#{id}, #{name})
</insert>
</mapper>

数据实现

首先我们 添加SqlSession 属性注入

 @Autowired
private SqlSession sqlSession;

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

 public Map<String, String> SelectOne(String method,Object Para)
{
return sqlSession.selectOne(method, Para);
} public List<Map<String, String>> SelectList(String method,Object Para)
{
return sqlSession.selectList(method, Para);
} public List<Map<String, String>> SelectProc(String method,Object Para)
{
return sqlSession.selectList(method, Para);
} public void insert(String method,Object Para)
{
if(Para.getClass().getName().equals("java.util.ArrayList"))
{
ArrayList list = (ArrayList) Para;
for (int i = 0; i < list.size(); i++) {
HashMap hm = (HashMap) list.get(i);
sqlSession.insert(method, hm);
}
}
else
{
sqlSession.insert(method, Para);
}
} public void update(String method,Object Para)
{
if(Para.getClass().getName().equals("java.util.ArrayList"))
{
ArrayList list = (ArrayList) Para;
for (int i = 0; i < list.size(); i++) {
HashMap hm = (HashMap) list.get(i);
sqlSession.update(method, hm);
}
}
else
{
sqlSession.update(method, Para);
} } public void delete(String method,Object Para)
{
if(Para.getClass().getName().equals("java.util.ArrayList"))
{
ArrayList list = (ArrayList) Para;
for (int i = 0; i < list.size(); i++) {
HashMap hm = (HashMap) list.get(i);
sqlSession.delete(method, hm);
}
}
else
{
sqlSession.delete(method, Para);
}
}

路由中转操作

 public  Object doProess(String BsCode,String Operation, Object Para) {
String method=BsCode.trim()+"."+Operation.trim();
// try {
switch (Operation) {
case "SelectOne":
return SelectOne(method, Para);
case "SelectList":
return SelectList(method, Para);
case "SelectProc":
return SelectProc(method, Para);
case "insert":
insert(method, Para);
return 1;
case "update":
update(method, Para);
return 1;
case "delete":
delete(method, Para);
return 1;
default:
return "无相关操作类型"; }
// }catch (Exception e)
// {
// return e.getMessage();
// }
}

数据验证测试

 @RunWith(SpringJUnit4ClassRunner.class)  //使用junit4进行测试
@ContextConfiguration({"classpath:spring-base.xml"})
public class commServiceImplTest { @Autowired
private commService commservice; @Test
public void selectOne() throws Exception {
String bsCode="sysUserMapper";
String Operation="SelectOne";
Map<String, String> para=new HashMap<String, String>();
para.put("id","fjx");
Map<String, String> userinfo=(Map<String, String>) commservice.doProess(bsCode,Operation, para);
System.out.print(userinfo);
} @Test
public void doProess2() throws Exception {
String bsCode="sysUserMapper";
String Operation="SelectProc";
Map<String, String> para=new HashMap<String, String>();
para.put("id","fjx");
Object userinfo=commservice.doProess(bsCode,Operation,para);
System.out.print(userinfo);
} @Test
public void doProess3() throws Exception {
String bsCode="sysUserMapper";
String Operation="SelectList";
Map<String, String> para=new HashMap<String, String>();
para.put("male_","1");
Object users=commservice.doProess(bsCode,Operation,para);
System.out.print(users);
} }

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. list去重方法

    list去重 方法1:利用循环去重 s= [1,1,2,2,2,3,4,4] res= [] for i in s: if i not in res: res.append(i) print(res) ...

  2. idea将本地项目推送到git远程库

    如何将本地项目推送到github远程仓库? 1. 在github上创建一个仓库,取名mybatis 2. 在idea中将项目交由git管理 注意,文件名会变红了, 说明这些文件在git工作区,但还没规 ...

  3. Angular JS - 9 - SeaJS加载js模块

    seajs加载模块的三种方式 1.seajs.use() 加载入口模块,类似于Java的main函数 2.require:      当在一个模块中需要用到其它模块时一般用require加载 1)   ...

  4. [CSP-S模拟测试]:Race(数学+Trie树)

    题目描述 一年一度的运动会开始了.有$N$个选手参赛,第$i$个选手有一个能力值(保证$A[i]$两两不同),比赛一共进行了天.在第$j$天($0\leqslant j\leqslant 2^{m-1 ...

  5. python中对列表元素大小排序(冒泡排序法和选择排序法)

    前言:排序(Sorting) 是计算机程序设计中的一种重要操作,它的功能是将一个数据元素(或记录)的任意序列,重新排列成一个关键字有序的序列.本文主要讲述python中经常用的两种排序算法,选择排序法 ...

  6. Flask学习之旅--分页功能:分别使用 flask--pagination 和分页插件 layPage

    一.前言 现在开发一个网站,分页是一个很常见的功能了,尤其是当数据达到一定量的时候,如果都显示在页面上,会造成页面过长而影响用户体验,除此之外,还可能出现加载过慢等问题.因此,分页就很有必要了. 分页 ...

  7. 时间复杂度为n^2的排序

    时间复杂度为n^2的排序 冒泡排序和选择排序的共同点:每次都是在找剩下元素中最小(大)的元素 不同点:冒泡排序存在多次交换,而选择排序每次只存在一次交换序号 #include<iostream& ...

  8. C#后台获取根路径

    C#后台获取当前系统根路径: string absoluteurl = Context.Request.Url.AbsoluteUri.Replace(Context.Request.RawUrl, ...

  9. css浮动以及清除

    首先要知道,div是块级元素,在页面中独占一行,自上而下排列,也就是传说中的流.如下图: 可以看出,即使div1的宽度很小,页面中一行可以容下div1和div2,div2也不会排在div1后边,因为d ...

  10. “希希敬敬对”队软件工程第九次作业-beta冲刺第三次随笔

    “希希敬敬对”队软件工程第九次作业-beta冲刺第三次随笔 队名:  “希希敬敬对” 龙江腾(队长) 201810775001 杨希                   201810812008 何敬 ...