【注意点】

  • choose与if区别,只取第一个符合条件password并没有进入sql语句中
  • //【请注意】增删改必须提交事务。。。。。。。。。。。。。。。。。
  • 在批量更新中需要将deconfig的配置文件url的尾部添加
    即url=jdbc:mysql://localhost:3306/mybatisplus?allowMultiQueries=true

pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.henu</groupId><artifactId>mybatis02_activeSql</artifactId><version>1.0-SNAPSHOT</version><packaging>jar</packaging><dependencies><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.4.5</version></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.6</version></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.10</version></dependency><dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version>1.2.12</version></dependency></dependencies></project>

dbconfig.properties

driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/mybatisplus?allowMultiQueries=true
name=root
password=123456

log4j.properties

# Global logging configuration
log4j.rootLogger=debug, stdout
# MyBatis logging configuration...
log4j.logger.cn.wolfcode.mybatis=TRACE
# Console output...
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n

MybatisConfig.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><properties resource="dbconfig.properties"></properties><typeAliases><typeAlias type="com.henu.bean.User" alias="User" /><typeAlias type="com.henu.dao.UserDao" alias="UserDao" /></typeAliases><environments default="mysql"><environment id="mysql"><transactionManager type="JDBC"></transactionManager><dataSource type="POOLED"><property name="driver" value="${driver}"></property><property name="url" value="${url}"></property><property name="username" value="${name}"></property><property name="password" value="${password}"></property></dataSource></environment></environments><mappers><mapper resource="com/henu/dao/UserDao.xml"></mapper></mappers></configuration>

User

UserDao

package com.henu.dao;import com.henu.bean.User;import java.util.List;/*** @author George* @description**/
public interface UserDao {/*** 查询全部* @return*/List<User> findAll();/*** 根据不同条件查询* @return*/List<User> findUserByCondition(User user);/*** 根据不同条件查询* @return*/List<User> findUserByChoose(User user);/*** 更新用户* @param user* @return*/int updateUserBySet(User user);/*** 批量删除* @param list* @return*/int deleteUserByforeach(List<Integer> list);/*** 批量插入* @param list* @return*/int insertUserByForeach(List<User> list);/*** 批量更新* @param list* @return*/int updateUserByForeach(List<User> list);
}

UserDao.xml

MybatisTest

package com.henu.test;import com.henu.bean.User;
import com.henu.dao.UserDao;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.ResultHandler;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;/*** @author George* @description**/
public class MybatisTest {private static InputStream is;private static SqlSessionFactoryBuilder builder;private static SqlSessionFactory factory;private static SqlSession sqlSession;@Beforepublic void init() throws IOException {is = Resources.getResourceAsStream("MybatisConfig.xml");builder = new SqlSessionFactoryBuilder();factory = builder.build(is);sqlSession = factory.openSession();}@Afterpublic void destory() throws IOException {sqlSession.close();is.close();}@Testpublic void findAll(){UserDao userDao = sqlSession.getMapper(UserDao.class);List<User> users = userDao.findAll();for (User user : users) {System.out.println(user);}}@Testpublic void findUserByCondition(){UserDao userDao = sqlSession.getMapper(UserDao.class);User user = new User();user.setUsername("乔治");user.setPassword("123456");List<User> users = userDao.findUserByCondition(user);for (User u : users) {System.out.println(u);}}@Testpublic void findUserByChoose(){UserDao userDao = sqlSession.getMapper(UserDao.class);User user = new User();user.setUsername("乔治");//select * from user where 1 = 1 and username=?/*choose与if区别,只取第一个符合条件password并没有进入sql语句中*/user.setPassword("123456");List<User> users = userDao.findUserByChoose(user);for (User u : users) {System.out.println(u);}}@Testpublic void UpdateUserBySet(){UserDao userDao = sqlSession.getMapper(UserDao.class);User user = new User("2","魔鬼","56345");userDao.updateUserBySet(user);//【请注意】增删改必须提交事务。。。。。。。。。。。。。。。。。sqlSession.commit();System.out.println("success");}@Testpublic void deleteUserByforeach(){UserDao userDao = sqlSession.getMapper(UserDao.class);List<Integer> list = new ArrayList<Integer>();list.add(3);list.add(4);userDao.deleteUserByforeach(list);//【请注意】增删改必须提交事务。。。。。。。。。。。。。。。。。sqlSession.commit();System.out.println("success");}@Testpublic void insertUserByForeach(){UserDao userDao = sqlSession.getMapper(UserDao.class);List<User> list = new ArrayList<User>();list.add(new User("10","贝弗利","1224"));list.add(new User("11","黑贝","1224"));userDao.insertUserByForeach(list);//【请注意】增删改必须提交事务。。。。。。。。。。。。。。。。。sqlSession.commit();System.out.println("success");}@Testpublic void updateUserByForeach(){UserDao userDao = sqlSession.getMapper(UserDao.class);List<User> list = new ArrayList<User>();list.add(new User("10","ooxx","56345"));list.add(new User("11","xxoo","56345"));userDao.updateUserByForeach(list);sqlSession.commit();System.out.println("success");}}

mybatis实现动态sql语句相关推荐

  1. java day55【 Mybatis 连接池与事务深入 、 Mybatis 的动态 SQL 语句、 Mybatis 多表查询之一对多 、 Mybatis 多表查询之多对多】...

    第1章 Mybatis 连接池与事务深入 1.1 Mybatis 的连接池技术 1.1.1 Mybatis 连接池的分类 1.1.2 Mybatis 中数据源的配置 1.1.3 Mybatis 中 D ...

  2. MyBatis中动态sql语句标签详解

    动态 SQL 通常写在mapper包下面的地址映射配置文件(.xml)中.根据条件的不同, SQL 语句也会随之动态的改变. MyBatis 中,提供了一组标签用于实现动态 SQL. 动态SQL语句标 ...

  3. Mybatis的动态sql语句的查询

    if <select id="findActiveBlogWithTitleLike"resultType="Blog">SELECT * FROM ...

  4. Mybatis中动态Sql语句的拼接分析

    一.动态查询 1.方式一: <!--if标签--><!--if中的test属性必须录入,其内部为ognl表达式,不需要#{}.如果test内满足,则主体语句执行--><s ...

  5. Mybatis 动态Sql语句《常用》

    MyBatis 的强大特性之一便是它的动态 SQL.如果你有使用 JDBC 或其他类似框架的经验,你就能体会到根据不同条件拼接 SQL 语句有多么痛苦.拼接的时候要确保不能忘了必要的空格,还要注意省掉 ...

  6. 【转】mybatis实战教程(mybatis in action)之八:mybatis 动态sql语句

    转自:除非申明,文章均为一号门原创,转载请注明本文地址,谢谢! 转载地址:http://blog.csdn.net/kutejava/article/details/9164353#t5 1. if ...

  7. Mybatis—动态SQL语句与逆向工程

    Mybatis动态SQL语句与逆向工程 MyBatis动态SQL语句与逆向工程 1.动态SQL语句 1.1.动态SQL是什么 1.2.动态SQL有什么用 1.3.基于XML的实现 1.3.2.接口文件 ...

  8. Java神鬼莫测之MyBatis注解开发之动态SQL语句(六)

    1.Mybatis注解开发之动态SQL语句 背景:使用mybatis的注解开发动态Sql会比较麻烦, 很不方便, 所以不太推荐使用,该文章以查询作为案例,演示动态sql语句. 注意:Mybatis的动 ...

  9. Mybatis解析动态sql原理分析

    前言 废话不多说,直接进入文章. 我们在使用mybatis的时候,会在xml中编写sql语句. 比如这段动态sql代码: <update id="update" parame ...

最新文章

  1. 【直播】陈信达:零基础计算机视觉之机器学习基础
  2. 程序员的24小时,简单纯粹又扎心...
  3. 售后服务成OA品牌竞争重要因素
  4. 会计记忆总结之五:会计账薄
  5. [转]Displaying standard DataTables in MVC
  6. 【转】刨根究底CSS(2):CSS中的各种值——初始值,就是默认值吗?
  7. 05-sqlyog的安装与基本使用
  8. Cracking the Coding Interview Q1.2
  9. IT从业人员的10个专业论坛
  10. 一个白学家眼里的 WebAssembly
  11. 最新版idea2017+kemulator搭建J2ME开发环境
  12. Oracle并集union和union all
  13. Verilog基础知识-——计数器设计以及任意分频设计与modelsim仿真
  14. 刘强东带到石头村什么宝贝?飞翔鸽、“村长刘”品牌、歌唱家!
  15. C++11绑定器bind及function机制
  16. c语言正切值怎么表示,C语言中正切的相关函数总结
  17. linux擦除nandflash分区,【Linux公开课】NAND Flash存储器分区、烧写流程图、格式化NAND Flash...
  18. c语言背包问题装字母,C语言动态规划之背包问题详解
  19. carbonData使用文档
  20. Trunk知识思维导图

热门文章

  1. HDU - 5090 Game with Pearls(二分图最大匹配)
  2. # 字符串从右往左查找_python数据类型及字符串(2)
  3. cocos2d-x游戏实例(13)-简易摇杆控制主角
  4. 对一次ARP欺骗分析
  5. 趣谈设计模式 | 命令模式(Command):将命令封装为对象
  6. QUIC实战(五) 使用nginx quic开发分支部署支持HTTP3 的NGINX
  7. 成为技术大牛,只能靠天赋吗?
  8. Kafka解析之失效副本
  9. RabbitMQ之TTL(Time-To-Live 过期时间)
  10. Salsify:高流畅度的实时视频传输新方式