- 浏览: 188635 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (321)
- eclipse (4)
- idea (2)
- Html (8)
- Css (14)
- Javascript (8)
- Jquery (6)
- Ajax Json (4)
- Bootstrap (0)
- EasyUI (0)
- Layui (0)
- 数据结构 (0)
- Java (46)
- DesPattern (24)
- Algorithm (2)
- Jdbc (8)
- Jsp servlet (13)
- Struts2 (17)
- Hibernate (11)
- Spring (5)
- S2SH (1)
- SpringMVC (4)
- SpringBoot (11)
- WebService CXF (4)
- Poi (2)
- JFreeChart (0)
- Shiro (6)
- Lucene (5)
- ElasticSearch (0)
- JMS ActiveMQ (3)
- HttpClient (5)
- Activiti (0)
- SpringCloud (11)
- Dubbo (6)
- Docker (0)
- MySQL (27)
- Oracle (18)
- Redis (5)
- Mybatis (11)
- SSM (1)
- CentOS (10)
- Ant (2)
- Maven (4)
- Log4j (7)
- XML (5)
最新评论
1. MyBatis3动态SQL
2. 动态SQL实例
1. if 条件 2. choose,when和otherwise条件 3. where条件 1) 自动加上where; 2) 如果where子句以and或者or开头,则自动删除第一个and或者or; 4. trim条件 功能和where元素类似,提供了前缀,后缀功能,更加灵活; prefix="where":表示加入前缀where; prefixOverrides="and|or":表示自动覆盖第一个"and"或者"or"; 5. foreach循环 6. set条件 1) 自动加上set; 2) 自动剔除最后一个逗号",";
2. 动态SQL实例
jdbc.driverClassName=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql://localhost:3306/db_mybatis jdbc.username=root jdbc.password=root
<?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="jdbc.properties"/> <typeAliases> <package name="com.andrew.model"/> </typeAliases> <environments default="development"> <environment id="development"> <transactionManager type="JDBC" /> <dataSource type="POOLED"> <property name="driver" value="${jdbc.driverClassName}" /> <property name="url" value="${jdbc.url}" /> <property name="username" value="${jdbc.username}" /> <property name="password" value="${jdbc.password}" /> </dataSource> </environment> </environments> <mappers> <package name="com.andrew.mappers"/> </mappers> </configuration>
package com.andrew.util; import java.io.InputStream; import org.apache.ibatis.io.Resources; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder; public class SqlSessionFactoryUtil { private static SqlSessionFactory sqlSessionFactory; public static SqlSessionFactory getSqlSessionFactory() { if(sqlSessionFactory==null){ InputStream inputStream=null; try { inputStream=Resources.getResourceAsStream("mybatis-config.xml"); sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); } catch(Exception e) { e.printStackTrace(); } } return sqlSessionFactory; } public static SqlSession openSession() { return getSqlSessionFactory().openSession(); } }
package com.andrew.model; public class Student { private Integer id; private String name; private Integer age; public Student() { super(); } public Student(String name, Integer age) { super(); this.name = name; this.age = age; } public Student(Integer id, String name, Integer age) { super(); this.id = id; this.name = name; this.age = age; } @Override public String toString() { return "Student [id=" + id + ", name=" + name + ", age=" + age + "]"; } // getter and setter }
package com.andrew.mappers; import java.util.List; import java.util.Map; import com.andrew.model.Student; public interface StudentMapper { public List<Student> searchStudents(Map<String,Object> map); public List<Student> searchStudents2(Map<String,Object> map); public List<Student> searchStudents3(Map<String,Object> map); public List<Student> searchStudents4(Map<String,Object> map); public List<Student> searchStudents5(Map<String,Object> map); public int updateStudent(Student student); }
<?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="com.andrew.mappers.StudentMapper"> <resultMap type="Student" id="StudentResult"> <id property="id" column="id"/> <result property="name" column="name"/> <result property="age" column="age"/> </resultMap> <select id="searchStudents" parameterType="Map" resultMap="StudentResult"> select * from t_student where gradeId = #{gradeId} <if test="name!=null"> and name like #{name} </if> <if test="age!=nulll"> and age = #{age} </if> </select> <select id="searchStudents2" parameterType="Map" resultMap="StudentResult"> select * from t_student <choose> <when test="searchBy=='gradeId'"> where gradeId = #{gradeId} </when> <when test="searchBy=='name'"> where name like #{name} </when> <otherwise> where age = #{age} </otherwise> </choose> </select> <select id="searchStudents3" parameterType="Map" resultMap="StudentResult"> select * from t_student <where> <if test="gradeId!=null"> gradeId = #{gradeId} </if> <if test="name!=null"> and name like #{name} </if> <if test="age!=nulll"> and age = #{age} </if> </where> </select> <select id="searchStudents4" parameterType="Map" resultMap="StudentResult"> select * from t_student <trim prefix="where" prefixOverrides="and|or"> <if test="gradeId!=null"> gradeId = #{gradeId} </if> <if test="name!=null"> and name like #{name} </if> <if test="age!=nulll"> and age = #{age} </if> </trim> </select> <select id="searchStudents5" parameterType="Map" resultMap="StudentResult"> select * from t_student <if test="gradeIds!=null"> <where> gradeId in <foreach item="gradeId" collection="gradeIds" open="(" separator="," close=")"> #{gradeId} </foreach> </where> </if> </select> <update id="updateStudent" parameterType="Student"> update t_student <set> <if test="name!=null"> name=#{name}, </if> <if test="age!=null"> age=#{age}, </if> </set> where id=#{id} </update> </mapper>
package com.andrew.service; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import org.apache.ibatis.session.SqlSession; import org.apache.log4j.Logger; import org.junit.After; import org.junit.Before; import org.junit.Test; import com.andrew.mappers.StudentMapper; import com.andrew.model.Student; import com.andrew.util.SqlSessionFactoryUtil; public class StudentJunitTest { private static Logger logger = Logger.getLogger(StudentJunitTest.class); private SqlSession sqlSession = null; private StudentMapper studentMapper = null; @Before public void setUp() throws Exception { sqlSession = SqlSessionFactoryUtil.openSession(); studentMapper = sqlSession.getMapper(StudentMapper.class); } @After public void tearDown() throws Exception { sqlSession.close(); } @Test public void testSearchStudents1() { Map<String, Object> map = new HashMap<String, Object>(); map.put("gradeId", 2); // map.put("name", "%3%"); // map.put("age", 23); List<Student> studentList = studentMapper.searchStudents(map); for (Student student : studentList) { System.out.println(student); } } @Test public void testSearchStudents2() { Map<String, Object> map = new HashMap<String, Object>(); map.put("searchBy", "gradeId"); map.put("gradeId", 2); map.put("name", "%6%"); map.put("age", 22); List<Student> studentList = studentMapper.searchStudents2(map); for (Student student : studentList) { System.out.println(student); } } @Test public void testSearchStudents3() { Map<String, Object> map = new HashMap<String, Object>(); map.put("gradeId", 2); map.put("name", "%李%"); map.put("age", 11); List<Student> studentList = studentMapper.searchStudents3(map); for (Student student : studentList) { System.out.println(student); } } @Test public void testSearchStudents4() { Map<String, Object> map = new HashMap<String, Object>(); // map.put("gradeId", 2); // map.put("name", "%五%"); map.put("age", 22); List<Student> studentList = studentMapper.searchStudents4(map); for (Student student : studentList) { System.out.println(student); } } @Test public void testSearchStudents5() { Map<String, Object> map = new HashMap<String, Object>(); List<Integer> gradeIds = new ArrayList<Integer>(); // gradeIds.add(1); gradeIds.add(2); map.put("gradeIds", gradeIds); List<Student> studentList = studentMapper.searchStudents5(map); for (Student student : studentList) { System.out.println(student); } } @Test public void testUpdateStudent() { Student student = new Student(); student.setId(1); student.setName("张三2"); student.setAge(12); studentMapper.updateStudent(student); sqlSession.commit(); } }
发表评论
-
MyBatis3注解的动态SQL
2018-12-14 08:33 8921. MyBatis3注解的动态SQL @InsertP ... -
MyBatis3注解的关系映射
2018-12-14 08:32 4731. MyBatis3注解的关系映射 1) 一对 ... -
MyBatis3使用注解配置SQL映射器
2018-12-14 08:32 5021. MyBatis3使用注解配置SQL映射器 新建My ... -
MyBatis3缓存与分页
2018-12-13 08:40 5171. MyBatis3缓存 Mybatis默认情况下,M ... -
MyBatis3文件类型与多个参数传入
2018-12-13 08:40 4411. MyBatis3处理CLOB、BLOB类型数据 在 ... -
MyBatis3一对多关系映射
2018-12-13 08:39 4891. MyBatis3关系映射,一对多关系 创建t_gr ... -
MyBatis3一对一关系映射
2018-12-13 08:39 3891. MyBatis3关系映射,一对一关系 创建t_ad ... -
MyBatis3使用xml配置sql映射器
2018-12-12 09:31 5571. MyBatis3使用xml配置sql映射器 1) ... -
MyBatis3配置
2018-12-12 09:21 4761. MyBatis3配置说明 1. environme ... -
MyBatis3实现
2018-12-12 09:06 4941. MyBatis3实现 官方网站:http:// ...
相关推荐
Mybatis的自带分页方法只是逻辑分页,如果数据量很大,内存会溢出, 不知道为什么开源组织不在里面实现类似Hibernate的物理分页处理方法。 在不改动Mybatis源代码的情况下实现Mybatis支持物理分页
动态 SQL 是 MyBatis 的一大特色,它允许我们在运行时根据条件构建 SQL 语句,极大地提高了代码的可维护性和灵活性。 动态 SQL 在 MyBatis 中主要通过 XML 映射文件或者注解来实现。在 XML 映射文件中,我们可以...
mybatis动态sql,动态sql解析引擎,类似mybatis动态sql的功能。 mybatis动态sql,动态sql解析引擎,类似mybatis动态sql的功能。mybatis动态sql,动态sql解析引擎,类似mybatis动态sql的功能。mybatis动态sql,...
在实际开发过程中,我们往往需要编写复杂的SQL语句,拼接稍有不注意就会导致错误,Mybatis给开发者提供了动态SQL,大大降低了拼接SQL导致的错误。 动态标签 if标签 if标签通常用那个胡where语句,update语句,insert...
这就是MyBatis动态SQL的功能所在。 动态SQL是MyBatis的一大特色,它使得我们能够在运行时根据条件构建SQL语句。MyBatis通过`<if>`, `<choose>`, `<when>`, `<otherwise>`, `<where>`, `<set>`, `<foreach>`等标签来...
在《一头扎进MyBatis3》第六讲中,你将会详细学习如何在MyBatis的配置文件中使用这些标签,以及如何通过Mapper接口和SqlSession来执行动态SQL。通过实践和理解,你将能更好地掌握MyBatis动态SQL的精髓,提高你的开发...
1. **动态SQL**:MyBatis的一个强大特性是其支持动态SQL,允许在XML映射文件或注解中构建SQL语句。比如,我们可以使用`<if>`、`<choose>`、`<when>`、`<otherwise>`、`<where>`等标签来根据条件动态地插入、删除或...
MyBatis动态SQL和批量插入的应用 MyBatis是一款功能强大且灵活的持久层框架,提供了多种方式来对数据库进行交互。其中,动态SQL是一种非常强大的特性,能够根据不同的条件生成不同的SQL语句。下面将详细介绍MyBatis...
if 、where、set、trim、choose 、foreach等在mybatis中的具体用法,有具体实例可供参考,玩转mybatis
附件是MyBatis 动态 SQL 示例,MyBatis 是一个持久层框架,它允许用户在 XML 文件中编写动态 SQL 语句。MyBatis 的动态 SQL 功能非常强大,它允许开发者根据运行时的条件动态地生成 SQL 语句。这使得 MyBatis 能够...
附件是MyBatis 动态SQL示例,MyBatis 是一个持久层框架,它允许用户在 XML 文件中编写动态 SQL 语句。MyBatis 的动态 SQL 功能非常强大,它允许开发者根据运行时的条件动态地生成 SQL 语句。这使得 MyBatis 能够灵活...
mybatis中,sqlserver分页
基于mybatis的慢SQL小插件,原理是mybatis拦截器。只需要在springboot的配置文件做简单的配置,mybatis拦截器将SQL中所有参数自动做了填充。拦截器监控慢SQL并将完整的可执行的SQL语句打印在日志文件中,复制该SQL...
在使用MyBatis框架开发应用程序时,合理使用参数绑定技术(如`#{}`)以及对动态参数进行有效的过滤处理是防止SQL注入的关键。通过对MyBatis的正确配置和编程实践,可以大大降低应用程序面临的SQL注入风险,确保系统...
"Mybatis实现动态代理,动态SQL" Mybatis框架可以通过配置的形式为DAO接口生成动态代理实现类,从而简化程序开发,提高开发效率。在实现动态代理时,需要满足以下条件:接口全命名必须和SQL映射文件中的namespace...
mybatis动态sql批量增删改查,增强了mybatis的认识。
MyBatis-SQL生成器是MyBatis框架的一个强大工具,它能够自动生成SQL语句、DAO接口和实现类,极大地提高了开发效率。这个工具基于Java,与MyBatis框架紧密集成,支持XML配置和注解方式,适用于各种数据库环境。 在...
### 什么是MyBatis动态SQL MyBatis作为一种流行的Java持久层框架,为开发者提供了将数据库操作与Java对象之间的映射进行简化的便捷方法。它不仅支持传统的SQL查询方式,还引入了动态SQL这一概念,这使得MyBatis在...
标题 "mybatissql_mybatis解决sql注入" 暗示了我们正在讨论MyBatis框架如何处理SQL注入问题。SQL注入是一种常见的安全漏洞,攻击者可以通过恶意输入篡改SQL查询,获取、修改或删除数据库中的敏感数据。MyBatis,作为...