创建com.mybatis包,包含:UserMapper.xml和mybatis-config.xml

UserMapper.xml代码:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE mapper
  3. PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  4. "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  5. <!--命名空间应该是对应接口的包名+接口名 -->
  6. <mapper namespace="com.dao.UserDao">
  7. <!--id应该是接口中的方法,结果类型如没有配置别名则应该使用全名称 -->
  8. <!-- if标签 -->
  9. <select id="selectUserByIf" resultType="com.po.MyUser"
  10. parameterType="com.po.MyUser">
  11. select * from user where 1=1
  12. <if test ="uname != null and uname !=''">
  13. and uname like concat('%',#{uname},'%')
  14. </if>
  15. <if test="usex != null and usex !=''">
  16. and usex=#{usex}
  17. </if>
  18. </select>
  19. <!-- choose标签 -->
  20. <select id="selectUserByChoose" resultType="com.po.MyUser"
  21. parameterType="com.po.MyUser">
  22. select * from user where 1=1
  23. <choose>
  24. <when test="uname != null and uname !=''">
  25. and uname like concat('%',#{uname},'%')
  26. </when>
  27. <when test="usex != null and usex !=''">
  28. and usex=#{usex}
  29. </when>
  30. <otherwise>
  31. and uid >= 10
  32. </otherwise>
  33. </choose>
  34. </select>
  35. <!-- trim标签 -->
  36. <select id="selectUserByTrim" resultType="com.po.MyUser"
  37. parameterType="com.po.MyUser">
  38. select * from user
  39. <trim prefix="where" prefixOverrides="and |or">
  40. <!-- prefix指的是将整个语句的前缀‘and’被‘where’覆盖, 若不覆盖sql语句会变成:
  41. select * from user and uname like concat('%',#{uname},'%') -->
  42. <if test="uname != null and uname != ''">
  43. and uname like concat('%',#{uname},'%')
  44. </if>
  45. <if test="usex != null and usex !=''">
  46. and usex=#{usex}
  47. </if>
  48. </trim>
  49. </select>
  50. <!-- set标签 -->
  51. <update id="updateUserBySet" parameterType="com.po.MyUser">
  52. update user
  53. <set>
  54. <if test="uname!=null">uname=#{uname},</if>
  55. <if test="usex!=null">usex=#{sex}</if>
  56. </set>
  57. where uid=#{uid}
  58. </update>
  59. <!-- foreach标签 -->
  60. <!-- 三种用法详解:https://blog.csdn.net/hjh908778/article/details/79034395 -->
  61. <select id="selectUserByForceah" resultType="com.po.MyUser"
  62. parameterType="List">
  63. select * from user where uid in
  64. <foreach item="item" index="index" collection="list"
  65. open="(" separator="," close=")">
  66. <!--collection:代表传递进来的参数名称,可以是一个数组、List、Set等集合
  67. item:配置的是循环中的当前元素
  68. index:配置的是当前元素在集合中的位置下标
  69. open和close:配置的是以什么符号将这些集合元素包装起来
  70. separator:是各个元素的间隔符 -->
  71. #{item}
  72. </foreach>
  73. </select>
  74. </mapper>

mybatis-config.xml代码:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE configuration
  3. PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
  4. "http://mybatis.org/dtd/mybatis-3-config.dtd">
  5. <configuration>
  6. <mappers>
  7. <mapper resource="com/mybatis/UserMapper.xml"/>
  8. </mappers>
  9. </configuration>

创建com.dao包,包含:UserDao.java代码:

  1. package com.dao;
  2.  
  3. import java.util.List;
  4.  
  5. import org.apache.ibatis.annotations.Mapper;
  6. import org.springframework.stereotype.Repository;
  7.  
  8. import com.po.MyUser;
  9. @Repository("userDao")
  10. @Mapper
  11. public interface UserDao {
  12. public MyUser selectUserById(Integer uid);
  13. public List<MyUser> selectAllUser();
  14. public int addUser(MyUser user);
  15. public int updateUser(MyUser user);
  16. public int deleteUser(Integer uid);
  17. }

创建com.po包,包括:MyUser.java代码:

  1. package com.po;
  2.  
  3. public class MyUser {
  4. private Integer uid;
  5. private String uname;
  6. private String usex;
  7. public Integer getUid() {
  8. return uid;
  9. }
  10. public void setUid(Integer uid) {
  11. this.uid = uid;
  12. }
  13. public String getUname() {
  14. return uname;
  15. }
  16. public void setUname(String uname) {
  17. this.uname = uname;
  18. }
  19. public String getUsex() {
  20. return usex;
  21. }
  22. public void setUsex(String usex) {
  23. this.usex = usex;
  24. }
  25. public String toString() {
  26. return "User[uid="+ uid +",uname="+uname+",usex"+usex+"]";
  27. }
  28. }

创建com.controller包,包括:TestController.java和UserController.java

UserController.java代码:

  1. package com.controller;
  2.  
  3. import java.util.List;
  4.  
  5. import org.springframework.beans.factory.annotation.Autowired;
  6. import org.springframework.stereotype.Controller;
  7.  
  8. import com.dao.UserDao;
  9. import com.po.MyUser;
  10. @Controller("userController")
  11. public class UserController {
  12. @Autowired
  13. private UserDao userDao;
  14. public void test() {
  15. MyUser auser = userDao.selectUserById(1);
  16. System.out.println(auser);
  17. System.out.println("====================");
  18. MyUser addmu = new MyUser();
  19. addmu.setUid(1);
  20. addmu.setUname("陈恒");
  21. addmu.setUsex("男");
  22. int add=userDao.addUser(addmu);
  23. System.out.println("=====================");
  24. MyUser updatemu = new MyUser();
  25. updatemu.setUid(1);
  26. updatemu.setUname("张三");
  27. updatemu.setUsex("女");
  28. int up = userDao.updateUser(updatemu);
  29. System.out.println("修改了"+up+"条记录");
  30. System.out.println("=====================");
  31. int dl = userDao.deleteUser(9);
  32. System.out.println("删除了"+dl+"条记录");
  33. System.out.println("=====================");
  34. List<MyUser>list =userDao.selectAllUser();
  35. for(MyUser myUser: list) {
  36. System.out.println(myUser);
  37. }
  38. }
  39. }

TestController.java代码:

  1. package com.controller;
  2.  
  3. import org.springframework.context.ApplicationContext;
  4. import org.springframework.context.support.ClassPathXmlApplicationContext;
  5.  
  6. public class TestController {
  7. public static void main(String[] args) {
  8. ApplicationContext appCon = new ClassPathXmlApplicationContext("applicationContext.xml");
  9. UserController ct = (UserController)appCon.getBean("userController");
  10. ct.test();
  11. }
  12. }

在src下直接创建applicationContext.xml,代码:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xmlns:tx="http://www.springframework.org/schema/tx"
  5. xmlns:context="http://www.springframework.org/schema/context"
  6. xsi:schemaLocation="http://www.springframework.org/schema/beans
  7. http://www.springframework.org/schema/beans/spring-beans.xsd
  8. http://www.springframework.org/schema/context
  9. http://www.springframework.org/schema/context/spring-context.xsd
  10. http://www.springframework.org/schema/tx
  11. http://www.springframework.org/schema/tx/spring-tx.xsd">
  12. <context:component-scan base-package="com.dao"/>
  13. <context:component-scan base-package="com.controller"/>
  14. <!-- 配置数据源 -->
  15. <bean id="dataSource" class="org.apache.commons.dbcp2.BasicDataSource">
  16. <property name="driverClassName" value="com.mysql.cj.jdbc.Driver"/>
  17. <property name="url" value="jdbc:mysql://localhost:3306/springtest?characterEncoding=utf8"/>
  18. <property name="username" value="root"/>
  19. <property name="password" value="root"/>
  20. <property name="maxTotal" value="30"/>
  21. <property name="maxIdle" value="10"/>
  22. <property name="initialSize" value="5"/>
  23. </bean>
  24. <!-- 添加事务支持 -->
  25. <bean id="txManager"
  26. class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
  27. <property name="dataSource" ref="dataSource"/>
  28. </bean>
  29. <!-- 开启事务注解 -->
    <!-- 事务管理器 的作用就是告诉spring容器利用jdbc的技术进行处理,如果是采用的hibernate则需要配置HibernateTransactionManager来实现-->
  30. <tx:annotation-driven transaction-manager="txManager" />
  31. <!-- 配制MyBatis工厂,同时指定数据源,并与MyBatis完美结合 -->
  32. <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
  33. <property name="dataSource" ref="dataSource"/>
  34. <!-- configLocation 的属性为MyBatis的核心配置文件 -->
  35. <property name="configLocation" value="classpath:com/mybatis/mybatis-config.xml"/>
  36. </bean>
  37. <!-- 扫描所有被@Mapper注解的接口 -->
  38. <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
  39. <property name="basePackage" value="com.dao"/>
  40. <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
  41. </bean>
  42. </beans>

动态SQL各个标签作用以及注意事项详解的更多相关文章

  1. JAVA 注解的几大作用及使用方法详解

    JAVA 注解的几大作用及使用方法详解 (2013-01-22 15:13:04) 转载▼ 标签: java 注解 杂谈 分类: Java java 注解,从名字上看是注释,解释.但功能却不仅仅是注释 ...

  2. 技巧:Linux 动态库与静态库制作及使用详解

    技巧:Linux 动态库与静态库制作及使用详解 标准库的三种连接方式及静态库制作与使用方法 Linux 应用开发通常要考虑三个问题,即:1)在 Linux 应用程序开发过程中遇到过标准库链接在不同 L ...

  3. dede的pagelist标签的listsize数字属性详解(借鉴)

    dede的pagelist标签的listsize数字属性详解.见远seo经常用织梦搭建各种网站,有次发现列表页面的分页显示超过div的界限,也就是溢出了或者说是撑破了.后来经过研究发现是pagelis ...

  4. SQL Server日期时间格式转换字符串详解

    本文我们主要介绍了SQL Server日期时间格式转换字符串的相关知识,并给出了大量实例对其各个参数进行对比说明,希望能够对您有所帮助. 在SQL Server数据库中,SQL Server日期时间格 ...

  5. dede的pagelist标签的listsize数字属性详解

    转载▼http://blog.sina.com.cn/s/blog_a4f3bd4e01012c8n.html dede的pagelist标签的listsize数字属性详解.见远seo经常用织梦搭建各 ...

  6. SQLServer 常见SQL笔试题之语句操作题详解

    SqlServer 常见SQL笔试题之语句操作题详解 by:授客 QQ:1033553122 测试数据库 CREATE DATABASE handWriting ON PRIMARY ( name = ...

  7. Mybatis学习笔记之---动态sql中标签的使用

    动态Sql语句中标签的使用 (一)常用标签 1.<if> if标签通常用于WHERE语句中,通过判断参数值来决定是否使用某个查询条件, 他也经常用于UPDATE语句中判断是否更新某一个字段 ...

  8. 动态SQL之标签

    本节主要讲了动态SQL的几个标签:where set trim where: 检出where语句的最前面是否含有AND和一个空格 或者 or和一个空格 ,如果有的话删除 set: 检出set的最后是否 ...

  9. 动态SQL常用标签

    动态 SQL 目的:为了摆脱在不同条件拼接 SQL 语句的痛苦 在不同条件在生成不同的SQL语句 本质上仍然是SQL语句,不过是多了逻辑代码去拼接SQL,只要保证SQL的正确性按照格式去排列组合 可以 ...

随机推荐

  1. shell脚本编程(ubantu)

    项目 内容 这个作业属于那个课程 这里是链接 作业要求在哪里 这里是链接 学号-姓名 17041506-张政 作业学习目标 了解shell脚本的概念及使用:掌握shell脚本语言的基本语法:学习简单的 ...

  2. python3(二)

    # 布尔值和Java一样不做验证了 # 空值None是一个特殊的空值 # 变量 变量名必须是大小写英文.数字和_的组合,且不能用数字开头,等号=是赋值语句,可以把任意数据类型赋值给变量,同一个变量可以 ...

  3. Java序列化机制中的类版本问题 serialVersionUID的静态字段 含义

    Java序列化机制中的类版本问题 分类: [Java 基础]2014-10-31 21:13 480人阅读 评论(0) 收藏 举报   目录(?)[+]       原文地址:http://yanwu ...

  4. Three.js实现3D地图实例分享

    本文主要给大家介绍了关于利用Three.js开发实现3D地图的实践过程,文中通过示例代码介绍的非常详细,对大家学习或者使用three.js具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习 ...

  5. mvc传递json数据到view简单实例

    基于extjs4.2 controller //存储数据的类 public class DataLink { public string Name { get; set; } public strin ...

  6. D - Leading and Trailing LightOJ - 1282

    题解:求n^k的前三位和后三位. 后三位直接快速幂对1000去余就可以了.前三位可以转换成浮点数来操作,也是用快速幂,我们只保留答案的前三位,当前值大于1000.0的话就除以10,直到结果小于等于10 ...

  7. E - Farthest Nodes in a Tree

    Given a tree (a connected graph with no cycles), you have to find the farthest nodes in the tree. Th ...

  8. 原创zookeeper3.4.6集群安装

    tar -zxvf zookeeper-3.4.6.tar.gz -C /home/hadoop/ vi ~/.bash_profile export ZOOKEEPER_HOME=/home/had ...

  9. jmeter元件的执行顺序

    元件的执行顺序 在同一作用域范围内,test plan中的元件按照以下顺序执行:1) Config Elements--配置元件2) Pre-porcessors --前置处理器3) Timer-定时 ...

  10. 微信小程序基本知识

    逻辑实现 1 使用动态数据展示列表(可以考虑使用wx:for属性配合动态数组渲染全部列表项,以减少WXML页面的代码量) eg:  <view class='listGroup' wx:for= ...