mybatis实战之路,疯狂的数据库操作框架、动态sql实现CRUD及带条件的增CRUD
2017-03-19 15:54
786 查看
1、带条件的增加
mapper如下:
if标签内和java中if相似,以上代码中是判null和''.
详细说明:
java代码:连接数据库,因为连接数据是可以并发操作的,所以可以直接获取一次,但是CURD每一次操作都是一个事务,必须重新开启
接下来就是在java中操作:因为是对jdbc的封装,所以在java代码中要手动提交事务,特别是insert,和update语句
注意:SqlSession对象相当于开启了一个事务,
因为不能并发(同时)操作一条数据或者字段,
所以不能只获取一次,他是线程不安全的,必须
每次操作都开启一个事务,操作完成后提交事务,
特别注意insert和update
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="UserMapper"> <resultMap type="cn.banwxf.shoppingmall.beans.UserInfo" id="selectUser"> <id property="userId" column="user_id" /> <result property="password" column="user_password" /> <result property="userName" column="user_name" /> <result property="userScore" column="user_score" /> <result property="userLevel" column="user_grade" /> <result property="isVip" column="is_vip" /> <result property="headImage" column="head_image" /> </resultMap> <!-- 查询指定id的所有数据, 当然可以不是全部,但字段必须一一对应 --> <select id="login" parameterType="String" resultMap="selectUser"> select user_id,user_name,user_password,user_score,user_grade,head_image,is_vip from "user" where user_id=${value} </select> <!-- 插入一条数据 里面也可以用if标签 where标签 --> <insert id="register" parameterType="cn.banwxf.shoppingmall.beans.UserInfo"> insert into "user"(user_id,user_name,user_password,user_score,user_grade,head_image,is_vip) values(#{userId},#{userName},#{password},#{userScore},#{userLevel},#{headImage},#{isVip}) </insert> <!-- 更新某个字段数据,或者全部数据 if标签用于动态拼接sql,也可以用where标签动态拼接条件 --> <update id="update_info" parameterType="cn.banwxf.shoppingmall.beans.UserInfo"> update "user" set <trim prefixOverrides=","> <if test="password!=null and password!=''">user_password=#{password} </if> <if test="userName!=null and userName!=''">,user_name=#{userName} </if> <if test="headImage!=null and headImage!=''">,head_image=#{headImage} </if> <if test="userScore!=null and userScore!=''">,user_score=#{userScore} </if> <if test="userLevel!=null and userLevel!=''">,user_grade=#{userLevel} </if> <if test="isVip!=null and isVip!=''">,is_vip=#{isVip} </if> </trim> where user_id=#{userId} </update> </mapper>各种各样的标签是为了动态的拼接sql,可以灵活使用,使开发者能面向逻辑编程,快速开发
if标签内和java中if相似,以上代码中是判null和''.
详细说明:
java代码:连接数据库,因为连接数据是可以并发操作的,所以可以直接获取一次,但是CURD每一次操作都是一个事务,必须重新开启
public class SessionFactory { public static SqlSessionFactory sqlSessionFactory; static{ if (sqlSessionFactory==null) { initSqlSessionFactory(); } } public static void initSqlSessionFactory() { InputStream is = null; try { is = Resources.getResourceAsStream("Config.xml"); sqlSessionFactory = new SqlSessionFactoryBuilder().build(is); System.out.println(sqlSessionFactory.toString()); } catch (IOException e) { e.printStackTrace(); } finally { try { is.close(); } catch (IOException e) { e.printStackTrace(); } } } }
接下来就是在java中操作:因为是对jdbc的封装,所以在java代码中要手动提交事务,特别是insert,和update语句
public class UserDao { /** * 查询 * * @param userId * @return */ public UserInfo selectUser(String userId) { SqlSession sqlSession = SessionFactory.sqlSessionFactory.openSession(); UserInfo userInfo = sqlSession.selectOne("UserMapper.login", userId); return userInfo; } /** * 插入 * * @param info * @return */ public int registUser(UserInfo info) { SqlSession sqlSession = SessionFactory.sqlSessionFactory.openSession(); int insert = sqlSession.insert("UserMapper.register", info); sqlSession.commit(); return insert; } /** * 更新 * * @param info * @return */ public int updateUserInfo(UserInfo info) { SqlSession sqlSession = SessionFactory.sqlSessionFactory.openSession(); System.out.println(info.toString()); int i = sqlSession.update("UserMapper.update_info", info); sqlSession.commit(); return i; } }说明:
注意:SqlSession对象相当于开启了一个事务,
因为不能并发(同时)操作一条数据或者字段,
所以不能只获取一次,他是线程不安全的,必须
每次操作都开启一个事务,操作完成后提交事务,
特别注意insert和update
相关文章推荐
- mybatis实战之路,疯狂的数据库操作框架、动态sql的mybats之快速搭建基本环境
- MyBatis中的动态SQL,实现不确定条件的CRUD-----使用Map来传递查询的参数
- JAVAWEB开发之mybatis详解(一)——mybatis的入门(实现增删改查操作)、自定义别名、抽取代码块以及动态SQL的使用
- 框架 day54 BOS项目练习(权限/角色/用户管理(CRUD),基于数据库实现动态授权,ehcache缓存权限,shiro标签,菜单权限展示)
- JAVAWEB开发之mybatis详解(一)——mybatis的入门(实现增删改查操作)、自定义别名、抽取代码块以及动态SQL的使用
- Linq To Sql数据库操作基类实现不同条件的增删改查
- MyBatis框架(三)动态SQL,分页,二进制存入数据库图片
- 初识Mybatis框架,实现增删改查等操作(动态拼接和动态修改)
- 从HBase数据库表中读取数据动态转为DataFrame格式,方便后续用Spark SQL操作(scala实现)
- Mybatis原理解析(一)--java.sql数据库操作的基本实现方式
- tp数据库与模型——查询条件生成方法、查询构造器实现CRUD操作
- Java的MyBatis框架中对数据库进行动态SQL查询的教程
- spring多数据源的处理 mybatis实现跨库查询 实现Myibatis动态sql跨数据库的处理 Spring动态配置多数据源,即在大型应用中对数据进行切分,并且采用多个数据库实例进行管理,这样
- mybatis学习之路----动态sql之if条件判断各种使用方式
- 搭建SpringMVC+Mybatis框架并实现数据库的操作
- Android数据库CRUD操作的封装与实现
- .NET数据库编程求索之路--8.使用LinqToSQL实现
- Linq to sql 实现多条件的动态查询(方法一)
- vb sql server创建数据库实现增、删、改、查等基本操作
- SpeedPHP框架学习-2.数据库CRUD操作和Smarty操作