mybatis实现动态sql语句
【注意点】
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语句相关推荐
- 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 ...
- MyBatis中动态sql语句标签详解
动态 SQL 通常写在mapper包下面的地址映射配置文件(.xml)中.根据条件的不同, SQL 语句也会随之动态的改变. MyBatis 中,提供了一组标签用于实现动态 SQL. 动态SQL语句标 ...
- Mybatis的动态sql语句的查询
if <select id="findActiveBlogWithTitleLike"resultType="Blog">SELECT * FROM ...
- Mybatis中动态Sql语句的拼接分析
一.动态查询 1.方式一: <!--if标签--><!--if中的test属性必须录入,其内部为ognl表达式,不需要#{}.如果test内满足,则主体语句执行--><s ...
- Mybatis 动态Sql语句《常用》
MyBatis 的强大特性之一便是它的动态 SQL.如果你有使用 JDBC 或其他类似框架的经验,你就能体会到根据不同条件拼接 SQL 语句有多么痛苦.拼接的时候要确保不能忘了必要的空格,还要注意省掉 ...
- 【转】mybatis实战教程(mybatis in action)之八:mybatis 动态sql语句
转自:除非申明,文章均为一号门原创,转载请注明本文地址,谢谢! 转载地址:http://blog.csdn.net/kutejava/article/details/9164353#t5 1. if ...
- Mybatis—动态SQL语句与逆向工程
Mybatis动态SQL语句与逆向工程 MyBatis动态SQL语句与逆向工程 1.动态SQL语句 1.1.动态SQL是什么 1.2.动态SQL有什么用 1.3.基于XML的实现 1.3.2.接口文件 ...
- Java神鬼莫测之MyBatis注解开发之动态SQL语句(六)
1.Mybatis注解开发之动态SQL语句 背景:使用mybatis的注解开发动态Sql会比较麻烦, 很不方便, 所以不太推荐使用,该文章以查询作为案例,演示动态sql语句. 注意:Mybatis的动 ...
- Mybatis解析动态sql原理分析
前言 废话不多说,直接进入文章. 我们在使用mybatis的时候,会在xml中编写sql语句. 比如这段动态sql代码: <update id="update" parame ...
最新文章
- 【直播】陈信达:零基础计算机视觉之机器学习基础
- 程序员的24小时,简单纯粹又扎心...
- 售后服务成OA品牌竞争重要因素
- 会计记忆总结之五:会计账薄
- [转]Displaying standard DataTables in MVC
- 【转】刨根究底CSS(2):CSS中的各种值——初始值,就是默认值吗?
- 05-sqlyog的安装与基本使用
- Cracking the Coding Interview Q1.2
- IT从业人员的10个专业论坛
- 一个白学家眼里的 WebAssembly
- 最新版idea2017+kemulator搭建J2ME开发环境
- Oracle并集union和union all
- Verilog基础知识-——计数器设计以及任意分频设计与modelsim仿真
- 刘强东带到石头村什么宝贝?飞翔鸽、“村长刘”品牌、歌唱家!
- C++11绑定器bind及function机制
- c语言正切值怎么表示,C语言中正切的相关函数总结
- linux擦除nandflash分区,【Linux公开课】NAND Flash存储器分区、烧写流程图、格式化NAND Flash...
- c语言背包问题装字母,C语言动态规划之背包问题详解
- carbonData使用文档
- Trunk知识思维导图
热门文章
- HDU - 5090 Game with Pearls(二分图最大匹配)
- # 字符串从右往左查找_python数据类型及字符串(2)
- cocos2d-x游戏实例(13)-简易摇杆控制主角
- 对一次ARP欺骗分析
- 趣谈设计模式 | 命令模式(Command):将命令封装为对象
- QUIC实战(五) 使用nginx quic开发分支部署支持HTTP3 的NGINX
- 成为技术大牛,只能靠天赋吗?
- Kafka解析之失效副本
- RabbitMQ之TTL(Time-To-Live 过期时间)
- Salsify:高流畅度的实时视频传输新方式