系列博文:  

    JavaWeb_(Mybatis框架)JDBC操作数据库和Mybatis框架操作数据库区别_一    传送门

    JavaWeb_(Mybatis框架)使用Mybatis对表进行增、删、改、查操作_二        传送门

    JavaWeb_(Mybatis框架)Mapper动态代理开发_三                 传送门

    JavaWeb_(Mybatis框架)主配置文件介绍_四                     传送门

    JavaWeb_(Mybatis框架)输入和输出参数_五                   传送门

    JavaWeb_(Mybatis框架)关联查询_六传送门                   传送门

    JavaWeb_(Mybatis框架)动态sql_七传送门                   传送门

  1、输入映射parameterType;
    a)基本类型;
    b)自定义对象; 
    c)自定义包装类;
  2、输出映射resultType、resultMap;
    a)resultType:
      i.基本类型;
      ii.自定义对象;
      iii.集合; 
    b)resultMap;
      i.bean对象字段与数据表字段不匹配;
      ii.自定义包装类;
      iii.关联查询;

  

1、输入映射parameterType[废弃的]

  创建一个自定义对象UserVo

  1. package com.Gary.bean;
  2.  
  3. //包装类
  4. public class UserVo {
  5.  
  6. //包装类
  7.  
  8. //需要全部的user对象信息
  9. private User user;
  10.  
  11. public User getUser() {
  12. return user;
  13. }
  14.  
  15. public void setUser(User user) {
  16. this.user = user;
  17. }
  18.  
  19. //需要表B的id name 属性
  20.  
  21. }

UserVo.java

  在UserMapper接口中定义一个selectUserByVoId(UserVo id)方法,通过UserVo id 查询一个用户

  1. package com.Gary.mapper;
  2.  
  3. import java.util.List;
  4.  
  5. import com.Gary.bean.User;
  6. import com.Gary.bean.UserVo;
  7.  
  8. public interface UserMapper {
  9.  
  10. //通过id查询一个用户
  11. public User selectUserById(Integer id);
  12.  
  13. //通过用户名模糊查询 获取用户列表
  14. public List<User> selectUserByName(String name);
  15.  
  16. //通过UserVo id 查询一个用户
  17. public User selectUserByVoId(UserVo id);
  18.  
  19. }

UserMapper.java

  在UserMapper.xml中实现这个查询方法

  1. <!-- 根据UserVo中的User对象的u_id去查询查询用户 -->
  2. <select id="selectUserByVoId" parameterType="UserVo" resultType="user">
  3. select * from user where u_id = #{user.u_id}
  4. </select>
  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.Gary.mapper.UserMapper">
  7.  
  8. <select id="selectUserById" parameterType="Integer" resultType="user">
  9. select * from user where u_id = #{id}
  10. </select>
  11.  
  12. <!-- #{}占位符 尽量使用#{}来解决问题 -->
  13. <!-- ${}字符串拼接 容易sql注入 (or 1 = 1) -->
  14.  
  15. <!-- ${value}中间的字符串一定需要使用value -->
  16. <select id="selectUserByName" parameterType="String" resultType="com.Gary.bean.User">
  17. <!-- select * from user where u_username like '%${value}%' -->
  18. select * from user where u_username like "%"#{name}"%"
  19. </select>
  20.  
  21. <!-- 添加用户 参数为全包名 -->
  22. <insert id="insertUser" parameterType="com.Gary.bean.User">
  23. insert into user values(null,#{u_username},#{u_password},#{u_sex},#{u_createTime},#{u_cid})
  24. </insert>
  25.  
  26. <!-- 根据id修改username字段的语句 -->
  27. <update id="updateUser" parameterType="com.Gary.bean.User">
  28. update user set u_username = #{u_username} where u_id = #{u_id}
  29. </update>
  30.  
  31. <!-- 根据id删除用户 -->
  32. <delete id="deleteUserById" parameterType="Integer">
  33. delete from user where u_id = #{id}
  34. </delete>
  35.  
  36. <!-- 根据UserVo中的User对象的u_id去查询查询用户 -->
  37. <select id="selectUserByVoId" parameterType="UserVo" resultType="user">
  38. select * from user where u_id = #{user.u_id}
  39. </select>
  40.  
  41. </mapper>

UserMapper.xml

  测试

  

  1. package com.Gary.test;
  2.  
  3. import java.io.IOException;
  4. import java.io.InputStream;
  5. import java.util.List;
  6.  
  7. import org.apache.ibatis.io.Resources;
  8. import org.apache.ibatis.session.SqlSession;
  9. import org.apache.ibatis.session.SqlSessionFactory;
  10. import org.apache.ibatis.session.SqlSessionFactoryBuilder;
  11. import org.junit.Test;
  12.  
  13. import com.Gary.bean.User;
  14. import com.Gary.bean.UserVo;
  15. import com.Gary.mapper.UserMapper;
  16.  
  17. public class MapperTest3 {
  18.  
  19. @Test
  20. public void Test3() throws IOException {
  21. //读取配置文件
  22. String resource = "sqlMapConfig.xml";
  23.  
  24. InputStream in = Resources.getResourceAsStream(resource);
  25.  
  26. //创建sqlSessionFactory
  27. SqlSessionFactory ssf = new SqlSessionFactoryBuilder().build(in);
  28.  
  29. //生产一个sqlSession
  30. SqlSession session = ssf.openSession();
  31.  
  32. UserMapper mapper = session.getMapper(UserMapper.class);
  33.  
  34. UserVo vo = new UserVo();
  35. User u= new User();
  36. u.setU_id(5);
  37. vo.setUser(u);
  38.  
  39. User user = mapper.selectUserByVoId(vo);
  40. System.out.println(user);
  41.  
  42. }
  43.  
  44. }

MapperTest3.java

2、输出映射resultType

  实现查询数据库中总条数

  在CountryMapper.java中编写接口selectAll(),UserMapper.xml中是实现selectUserCount查询用户总条数sql语句

  1. <!-- 查询用户的总条数 -->
  2. <select id="selectUserCount" resultType="Integer">
  3. select count(*) from user
  4. </select>
  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.Gary.mapper.UserMapper">
  7.  
  8. <select id="selectUserById" parameterType="Integer" resultType="user">
  9. select * from user where u_id = #{id}
  10. </select>
  11.  
  12. <!-- #{}占位符 尽量使用#{}来解决问题 -->
  13. <!-- ${}字符串拼接 容易sql注入 (or 1 = 1) -->
  14.  
  15. <!-- ${value}中间的字符串一定需要使用value -->
  16. <select id="selectUserByName" parameterType="String" resultType="com.Gary.bean.User">
  17. <!-- select * from user where u_username like '%${value}%' -->
  18. select * from user where u_username like "%"#{name}"%"
  19. </select>
  20.  
  21. <!-- 添加用户 参数为全包名 -->
  22. <insert id="insertUser" parameterType="com.Gary.bean.User">
  23. insert into user values(null,#{u_username},#{u_password},#{u_sex},#{u_createTime},#{u_cid})
  24. </insert>
  25.  
  26. <!-- 根据id修改username字段的语句 -->
  27. <update id="updateUser" parameterType="com.Gary.bean.User">
  28. update user set u_username = #{u_username} where u_id = #{u_id}
  29. </update>
  30.  
  31. <!-- 根据id删除用户 -->
  32. <delete id="deleteUserById" parameterType="Integer">
  33. delete from user where u_id = #{id}
  34. </delete>
  35.  
  36. <!-- 根据UserVo中的User对象的u_id去查询查询用户 -->
  37. <select id="selectUserByVoId" parameterType="UserVo" resultType="user">
  38. select * from user where u_id = #{user.u_id}
  39. </select>
  40.  
  41. <!-- 查询用户的总条数 -->
  42. <select id="selectUserCount" resultType="Integer">
  43. select count(*) from user
  44. </select>
  45.  
  46. </mapper>

UserMapper.xml

  1. package com.Gary.test;
  2.  
  3. import java.io.IOException;
  4. import java.io.InputStream;
  5. import java.util.List;
  6.  
  7. import org.apache.ibatis.io.Resources;
  8. import org.apache.ibatis.session.SqlSession;
  9. import org.apache.ibatis.session.SqlSessionFactory;
  10. import org.apache.ibatis.session.SqlSessionFactoryBuilder;
  11. import org.junit.Test;
  12.  
  13. import com.Gary.bean.User;
  14. import com.Gary.bean.UserVo;
  15. import com.Gary.mapper.UserMapper;
  16.  
  17. public class MapperTest4 {
  18.  
  19. @Test
  20. public void Test4() throws IOException {
  21. //读取配置文件
  22. String resource = "sqlMapConfig.xml";
  23.  
  24. InputStream in = Resources.getResourceAsStream(resource);
  25.  
  26. //创建sqlSessionFactory
  27. SqlSessionFactory ssf = new SqlSessionFactoryBuilder().build(in);
  28.  
  29. //生产一个sqlSession
  30. SqlSession session = ssf.openSession();
  31.  
  32. UserMapper mapper = session.getMapper(UserMapper.class);
  33.  
  34. Integer count = mapper.selectUserCount();
  35. System.out.println(count);
  36.  
  37. }
  38.  
  39. }

MapperTest4.java

3、输出映射resultMap

  创建一个Country.class

  1. package com.Gary.bean;
  2.  
  3. public class Country {
  4.  
  5. private Integer id;
  6. private String c_countryname;
  7. private String c_capital;
  8. public Integer getId() {
  9. return id;
  10. }
  11. public void setId(Integer id) {
  12. this.id = id;
  13. }
  14. public String getC_countryname() {
  15. return c_countryname;
  16. }
  17. public void setC_countryname(String c_countryname) {
  18. this.c_countryname = c_countryname;
  19. }
  20. public String getC_capital() {
  21. return c_capital;
  22. }
  23. public void setC_capital(String c_capital) {
  24. this.c_capital = c_capital;
  25. }
  26. @Override
  27. public String toString() {
  28. return "Country [id=" + id + ", c_countryname=" + c_countryname + ", c_capital=" + c_capital + "]";
  29. }
  30.  
  31. }

Country.java

  在CountryMapper.java接口中定义一个查询所有国家的方法selectAll()

  1. package com.Gary.mapper;
  2.  
  3. import java.util.List;
  4.  
  5. import com.Gary.bean.Country;
  6.  
  7. public interface CountryMapper {
  8.  
  9. //查询所有
  10. List<Country> selectAll();
  11.  
  12. }

CountryMapper.java

  在CountryMapper.xml中编写Sql查询语句,因为数据库中没有id这个属性类名,所以需要一个<resultMap>去将id映射成c_id

  1. <mapper namespace="com.Gary.mapper.CountryMapper">
  2.  
  3. <resultMap type="Country" id="country">
  4. <result property="id" column="c_id"/>
  5. </resultMap>
  6.  
  7. <!-- 查询所有 -->
  8. <select id="selectAll" resultMap="country">
  9. select * from country
  10. </select>
  11.  
  12. </mapper>
  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.Gary.mapper.CountryMapper">
  7.  
  8. <resultMap type="Country" id="country">
  9. <result property="id" column="c_id"/>
  10. </resultMap>
  11.  
  12. <!-- 查询所有 -->
  13. <select id="selectAll" resultMap="country">
  14. select * from country
  15. </select>
  16.  
  17. </mapper>

CountryMapper.xml

  

  1. package com.Gary.test;
  2.  
  3. import java.io.IOException;
  4. import java.io.InputStream;
  5. import java.util.List;
  6.  
  7. import org.apache.ibatis.io.Resources;
  8. import org.apache.ibatis.session.SqlSession;
  9. import org.apache.ibatis.session.SqlSessionFactory;
  10. import org.apache.ibatis.session.SqlSessionFactoryBuilder;
  11. import org.junit.Test;
  12.  
  13. import com.Gary.bean.Country;
  14. import com.Gary.bean.User;
  15. import com.Gary.bean.UserVo;
  16. import com.Gary.mapper.CountryMapper;
  17. import com.Gary.mapper.UserMapper;
  18.  
  19. public class MapperTest5 {
  20.  
  21. @Test
  22. public void Test4() throws IOException {
  23. //读取配置文件
  24. String resource = "sqlMapConfig.xml";
  25.  
  26. InputStream in = Resources.getResourceAsStream(resource);
  27.  
  28. //创建sqlSessionFactory
  29. SqlSessionFactory ssf = new SqlSessionFactoryBuilder().build(in);
  30.  
  31. //生产一个sqlSession
  32. SqlSession session = ssf.openSession();
  33.  
  34. CountryMapper mapper = session.getMapper(CountryMapper.class);
  35.  
  36. List<Country> list = mapper.selectAll();
  37.  
  38. for(Country country:list)
  39. {
  40. System.out.println(country);
  41. }
  42.  
  43. }
  44.  
  45. }

MapperTest5.java

JavaWeb_(Mybatis框架)输入和输出参数_五的更多相关文章

  1. JavaWeb_(Mybatis框架)Mapper动态代理开发_三

    系列博文: JavaWeb_(Mybatis框架)JDBC操作数据库和Mybatis框架操作数据库区别_一 传送门 JavaWeb_(Mybatis框架)使用Mybatis对表进行增.删.改.查操作_ ...

  2. JavaWeb_(Mybatis框架)关联查询_六

    系列博文: JavaWeb_(Mybatis框架)JDBC操作数据库和Mybatis框架操作数据库区别_一 传送门 JavaWeb_(Mybatis框架)使用Mybatis对表进行增.删.改.查操作_ ...

  3. JavaWeb_(Mybatis框架)主配置文件介绍_四

    系列博文: JavaWeb_(Mybatis框架)JDBC操作数据库和Mybatis框架操作数据库区别_一 传送门 JavaWeb_(Mybatis框架)使用Mybatis对表进行增.删.改.查操作_ ...

  4. JavaWeb_(Mybatis框架)JDBC操作数据库和Mybatis框架操作数据库区别_一

    系列博文: JavaWeb_(Mybatis框架)JDBC操作数据库和Mybatis框架操作数据库区别_一 传送门 JavaWeb_(Mybatis框架)使用Mybatis对表进行增.删.改.查操作_ ...

  5. JavaWeb_(Mybatis框架)使用Mybatis对表进行增、删、改、查操作_二

    系列博文: JavaWeb_(Mybatis框架)JDBC操作数据库和Mybatis框架操作数据库区别_一 传送门 JavaWeb_(Mybatis框架)使用Mybatis对表进行增.删.改.查操作_ ...

  6. JavaWeb_(Mybatis框架)动态sql_七

    系列博文: JavaWeb_(Mybatis框架)JDBC操作数据库和Mybatis框架操作数据库区别_一 传送门 JavaWeb_(Mybatis框架)使用Mybatis对表进行增.删.改.查操作_ ...

  7. mybatis入门系列二之输入与输出参数

    mybatis入门系列二之详解输入与输出参数   基础知识   mybatis规定mapp.xml中每一个SQL语句形式上只能有一个@parameterType和一个@resultType 1. 返回 ...

  8. JavaWeb_(Struts2框架)参数传递之接收参数与传递参数

    此系列博文基于同一个项目已上传至github 传送门 JavaWeb_(Struts2框架)Struts创建Action的三种方式 传送门 JavaWeb_(Struts2框架)struts.xml核 ...

  9. BackgroundWorker 的输入、输出参数、进度条与文字刷新、取消机制、返回事件

    1. 定义全局变量 BackgroundWorker backgroundwoker; 2. 点击开始按钮或其它时机初始化 backgroundwoker = new BackgroundWorker ...

随机推荐

  1. (二)SpringBoot之springboot开发工具的使用以及springboot插件的功能

    一.springboot开发工具的使用 1.1 在项目中添加springoot开发工具 1.2 功能 修改代码后点击保存自动重启 二.springboot插件的功能 2.1 maven配置 <p ...

  2. 取代Ajax.BeginForm的ajax使用方法

    原文:取代Ajax.BeginForm的ajax使用方法 一.前提概要 Asp.net core中已经取消了Ajax.BeginForm,也不会计划出ajax tag helper,所以得利用插件jq ...

  3. 解决https 请求过程中SSL问题

    最近一个项目中用到了https的请求,在实际调用过程中发现之前的http方法不支持https,调用一直报错. 查询了一下,添加几行代码解决问题. public string HttpPost(stri ...

  4. 一步一步写News App(一)

    一. 新建一个安卓工程,安卓版本全部选2.3.3 二.第一步,添加一个tabhost控件 在MainActivity中声明TabHost tabHost; 然后新建一个private void ini ...

  5. Spring Boot笔记

    @SpringBootApplication中有以下注解:@Target({ElementType.TYPE})@Retention(RetentionPolicy.RUNTIME)@Document ...

  6. github安全整理

    漏洞及渗透练习平台: WebGoat漏洞练习平台: https://github.com/WebGoat/WebGoat webgoat-legacy漏洞练习平台: https://github.co ...

  7. maven的一些命令以及说明 ——1

    mvn  compile  :  编译源文件 mvn  test-compile : 编译Junit测试文件 mvn test : 运行junit测试文件 mvn package : 编译 + 测试 ...

  8. 什么是 java 序列化?(未完成)什么情况下需要序列化?(未完成)

    什么是 java 序列化?(未完成)什么情况下需要序列化?(未完成)

  9. 若干简单的进程和作业调度的C++模拟程序

    进程调度(时间片轮转,动态优先级,链表形式): #include<cstdio> #include<cstdlib> struct PCB { ]; char state; / ...

  10. selenium 模拟键盘事件 复制粘贴、右键、回车等

    #coding=utf-8 ''' selenium ''' from selenium import webdriver as wd import time bc=wd.Chrome(executa ...