zoukankan      html  css  js  c++  java
  • JavaWeb_(Mybatis框架)输入和输出参数_五

      系列博文:  

        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

    package com.Gary.bean;
    
    
    //包装类
    public class UserVo {
    
        //包装类
        
        //需要全部的user对象信息
        private User user;
    
        public User getUser() {
            return user;
        }
    
        public void setUser(User user) {
            this.user = user;
        }
        
        //需要表B的id name 属性
        
    }
    UserVo.java

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

    package com.Gary.mapper;
    
    import java.util.List;
    
    import com.Gary.bean.User;
    import com.Gary.bean.UserVo;
    
    public interface UserMapper {
    
        //通过id查询一个用户
        public User selectUserById(Integer id);
        
        //通过用户名模糊查询 获取用户列表
        public List<User> selectUserByName(String name);
        
        //通过UserVo id 查询一个用户
        public User selectUserByVoId(UserVo id);
        
    }
    UserMapper.java

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

         <!-- 根据UserVo中的User对象的u_id去查询查询用户 -->
         <select id="selectUserByVoId" parameterType="UserVo" resultType="user">
             select * from user where u_id = #{user.u_id}
         </select>
    <?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.Gary.mapper.UserMapper">
     
         <select id="selectUserById" parameterType="Integer" resultType="user">
             select * from user where u_id = #{id}
         </select>
         
         <!-- #{}占位符 尽量使用#{}来解决问题 -->
         <!-- ${}字符串拼接   容易sql注入 (or 1 = 1) -->
         
         <!-- ${value}中间的字符串一定需要使用value -->
         <select id="selectUserByName" parameterType="String" resultType="com.Gary.bean.User">
             <!-- select * from user where u_username like '%${value}%' -->
                  select * from user where u_username like "%"#{name}"%"
         </select>
         
         <!-- 添加用户 参数为全包名 -->
         <insert id="insertUser" parameterType="com.Gary.bean.User">
             insert into user values(null,#{u_username},#{u_password},#{u_sex},#{u_createTime},#{u_cid})
         </insert>
         
        <!-- 根据id修改username字段的语句 -->
         <update id="updateUser" parameterType="com.Gary.bean.User">
             update user set u_username = #{u_username} where u_id = #{u_id}
         </update>
         
         <!-- 根据id删除用户 -->
         <delete id="deleteUserById" parameterType="Integer">
             delete from user where u_id = #{id}
         </delete>
         
         <!-- 根据UserVo中的User对象的u_id去查询查询用户 -->
         <select id="selectUserByVoId" parameterType="UserVo" resultType="user">
             select * from user where u_id = #{user.u_id}
         </select>
         
    </mapper>
    
    
     
     
    UserMapper.xml

      测试

      

    package com.Gary.test;
    
    import java.io.IOException;
    import java.io.InputStream;
    import java.util.List;
    
    import org.apache.ibatis.io.Resources;
    import org.apache.ibatis.session.SqlSession;
    import org.apache.ibatis.session.SqlSessionFactory;
    import org.apache.ibatis.session.SqlSessionFactoryBuilder;
    import org.junit.Test;
    
    import com.Gary.bean.User;
    import com.Gary.bean.UserVo;
    import com.Gary.mapper.UserMapper;
    
    public class MapperTest3 {
    
        @Test
        public void Test3() throws IOException {
            //读取配置文件
            String resource = "sqlMapConfig.xml";
                    
            InputStream in = Resources.getResourceAsStream(resource);
                    
            //创建sqlSessionFactory
            SqlSessionFactory ssf = new SqlSessionFactoryBuilder().build(in);
                    
            //生产一个sqlSession
            SqlSession session = ssf.openSession();
                    
            UserMapper mapper = session.getMapper(UserMapper.class);
            
            UserVo vo = new UserVo();
            User u= new User();
            u.setU_id(5);
            vo.setUser(u);
            
            User user = mapper.selectUserByVoId(vo);
            System.out.println(user);
            
            
        }
        
    }
    MapperTest3.java

    2、输出映射resultType

      实现查询数据库中总条数

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

        <!-- 查询用户的总条数 -->
        <select id="selectUserCount" resultType="Integer">
            select count(*) from user
        </select>    
    <?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.Gary.mapper.UserMapper">
     
         <select id="selectUserById" parameterType="Integer" resultType="user">
             select * from user where u_id = #{id}
         </select>
         
         <!-- #{}占位符 尽量使用#{}来解决问题 -->
         <!-- ${}字符串拼接   容易sql注入 (or 1 = 1) -->
         
         <!-- ${value}中间的字符串一定需要使用value -->
         <select id="selectUserByName" parameterType="String" resultType="com.Gary.bean.User">
             <!-- select * from user where u_username like '%${value}%' -->
                  select * from user where u_username like "%"#{name}"%"
         </select>
         
         <!-- 添加用户 参数为全包名 -->
         <insert id="insertUser" parameterType="com.Gary.bean.User">
             insert into user values(null,#{u_username},#{u_password},#{u_sex},#{u_createTime},#{u_cid})
         </insert>
         
        <!-- 根据id修改username字段的语句 -->
         <update id="updateUser" parameterType="com.Gary.bean.User">
             update user set u_username = #{u_username} where u_id = #{u_id}
         </update>
         
         <!-- 根据id删除用户 -->
         <delete id="deleteUserById" parameterType="Integer">
             delete from user where u_id = #{id}
         </delete>
         
         <!-- 根据UserVo中的User对象的u_id去查询查询用户 -->
         <select id="selectUserByVoId" parameterType="UserVo" resultType="user">
             select * from user where u_id = #{user.u_id}
         </select>
         
         <!-- 查询用户的总条数 -->
         <select id="selectUserCount" resultType="Integer">
             select count(*) from user
         </select>
         
    </mapper>
    
    
     
     
    UserMapper.xml

     

    package com.Gary.test;
    
    import java.io.IOException;
    import java.io.InputStream;
    import java.util.List;
    
    import org.apache.ibatis.io.Resources;
    import org.apache.ibatis.session.SqlSession;
    import org.apache.ibatis.session.SqlSessionFactory;
    import org.apache.ibatis.session.SqlSessionFactoryBuilder;
    import org.junit.Test;
    
    import com.Gary.bean.User;
    import com.Gary.bean.UserVo;
    import com.Gary.mapper.UserMapper;
    
    public class MapperTest4 {  
    
        @Test
        public void Test4() throws IOException {
            //读取配置文件
            String resource = "sqlMapConfig.xml";
                    
            InputStream in = Resources.getResourceAsStream(resource);
                    
            //创建sqlSessionFactory
            SqlSessionFactory ssf = new SqlSessionFactoryBuilder().build(in);
                    
            //生产一个sqlSession
            SqlSession session = ssf.openSession();
                    
            UserMapper mapper = session.getMapper(UserMapper.class);
            
            Integer count = mapper.selectUserCount();
            System.out.println(count);
            
            
        }
        
    }
    MapperTest4.java

    3、输出映射resultMap

       创建一个Country.class

    package com.Gary.bean;
    
    public class Country {
    
        private Integer id;
        private String c_countryname;
        private String c_capital;
        public Integer getId() {
            return id;
        }
        public void setId(Integer id) {
            this.id = id;
        }
        public String getC_countryname() {
            return c_countryname;
        }
        public void setC_countryname(String c_countryname) {
            this.c_countryname = c_countryname;
        }
        public String getC_capital() {
            return c_capital;
        }
        public void setC_capital(String c_capital) {
            this.c_capital = c_capital;
        }
        @Override
        public String toString() {
            return "Country [id=" + id + ", c_countryname=" + c_countryname + ", c_capital=" + c_capital + "]";
        }
        
        
        
        
    }
    Country.java

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

    package com.Gary.mapper;
    
    import java.util.List;
    
    import com.Gary.bean.Country;
    
    public interface CountryMapper {
    
        //查询所有
        List<Country> selectAll();
        
    }
    CountryMapper.java

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

    <mapper namespace="com.Gary.mapper.CountryMapper">
        
        <resultMap type="Country" id="country">
            <result property="id" column="c_id"/>
        </resultMap>
        
        <!-- 查询所有 -->
        <select id="selectAll" resultMap="country">
            select * from country
        </select>
        
    </mapper>
    <?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.Gary.mapper.CountryMapper">
        
        <resultMap type="Country" id="country">
            <result property="id" column="c_id"/>
        </resultMap>
        
        <!-- 查询所有 -->
        <select id="selectAll" resultMap="country">
            select * from country
        </select>
        
    </mapper>
    CountryMapper.xml

      

    package com.Gary.test;
    
    import java.io.IOException;
    import java.io.InputStream;
    import java.util.List;
    
    import org.apache.ibatis.io.Resources;
    import org.apache.ibatis.session.SqlSession;
    import org.apache.ibatis.session.SqlSessionFactory;
    import org.apache.ibatis.session.SqlSessionFactoryBuilder;
    import org.junit.Test;
    
    import com.Gary.bean.Country;
    import com.Gary.bean.User;
    import com.Gary.bean.UserVo;
    import com.Gary.mapper.CountryMapper;
    import com.Gary.mapper.UserMapper;
    
    public class MapperTest5 {  
    
        @Test
        public void Test4() throws IOException {
            //读取配置文件
            String resource = "sqlMapConfig.xml";
                    
            InputStream in = Resources.getResourceAsStream(resource);
                    
            //创建sqlSessionFactory
            SqlSessionFactory ssf = new SqlSessionFactoryBuilder().build(in);
                    
            //生产一个sqlSession
            SqlSession session = ssf.openSession();
                    
            CountryMapper mapper = session.getMapper(CountryMapper.class);
            
            List<Country> list = mapper.selectAll();
            
            for(Country country:list)
            {
                System.out.println(country);
            }
            
            
        }
        
    }
    MapperTest5.java

           

  • 相关阅读:
    sharepoint环境的安装及form表单验证等遇到的问题及总结。
    话说在这里开辟个情感专栏怎么样呢?
    Android学习4—短信发送器的实现
    Android学习2项目文件列表简单分析
    Android学习3—电话拨号器
    腾讯内推一面记录
    日程日历示例
    屏幕设配介绍
    深入理解移动开发的模板复用机制
    沉浸屏幕状态栏
  • 原文地址:https://www.cnblogs.com/1138720556Gary/p/11970953.html
Copyright © 2011-2022 走看看