Mybatis的学习(三)

7 篇文章 0 订阅
5 篇文章 0 订阅
  1. 动态代理: 使用SqlSession.getMapper(dao接口.class) 获取这个dao接口的对象

  2. 传入参数: 从java代码中把数据传入到mapper文件的sql语句中。
    1)parameterType : 写在mapper文件中的 一个属性。 表示dao接口中方法的参数的数据类型。
    例如StudentDao接口
    public Student selectStudentById(Integer id)

    1. 一个简单类型的参数:
      简单类型: mybatis把java的基本数据类型和String都叫简单类型。
      在mapper文件获取简单类型的一个参数的值,使用 #{任意字符}

    接口:public Student selectStudentById(Integer id)
    mapper:select id,name, email,age from student where id=#{studentId}

3) 多个参数,使用@Param命名参数
  接口 public List<Student> selectMulitParam(@Param("myname") String name, @Param("myage") Integer age)
  使用  @Param("参数名")  String name 
 mapper文件:
     <select>
         select * from student where name=#{myname} or age=#{myage}
	  </select>

4) 多个参数,使用java对象
   语法 #{属性名}

vo: value object , 放一些存储数据的类。比如说 提交请求参数, name ,age
现在想把name ,age 传给一个service 类。

vo: view object , 从servlet把数据返回给浏览器使用的类,表示显示结果的类。

pojo: 普通的有set, get方法的java类。 普通的java对象

	  Servlet --- StudentService( addStudent( MyParam  param)  )

entity(domain域): 实体类, 和数据库中的表对应的类,

5) # 和  $

  select id,name, email,age from student where id=#{studentId}
  # 的结果: select id,name, email,age from student where id=? 
   select id,name, email,age from student where id=${studentId}
  $ 的结果:select id,name, email,age from student where id=1001

  String sql="select id,name, email,age from student where id=" + "1001";
  使用的Statement对象执行sql, 效率比PreparedStatement低。
  $:可以替换表名或者列名, 你能确定数据是安全的。可以使用$
  # 和 $区别
  1. #使用 ?在sql语句中做站位的, 使用PreparedStatement执行sql,效率高
  2. #能够避免sql注入,更安全。
  3. $不使用占位符,是字符串连接方式,使用Statement对象执行sql,效率低
  4. $有sql注入的风险,缺乏安全性。
  5. $:可以替换表名或者列名
  1. mybatis的输出结果
    mybatis执行了sql语句,得到java对象。

    1)resultType结果类型, 指sql语句执行完毕后, 数据转为的java对象, java类型是任意的。
    resultType结果类型的它值 1. 类型的全限定名称 2. 类型的别名, 例如 java.lang.Integer别名是int

    处理方式:
       1. mybatis执行sql语句, 然后mybatis调用类的无参数构造方法,创建对象。
    	2. mybatis把ResultSet指定列值付给同名的属性。
    
		<select id="selectMultiPosition" resultType="com.bjpowernode.domain.Student">
      select id,name, email,age from student
    </select>

	  对等的jdbc
	  ResultSet rs = executeQuery(" select id,name, email,age from student" )
	  while(rs.next()){
           Student  student = new Student();
				student.setId(rs.getInt("id"));
				student.setName(rs.getString("name"))
	  }
  1. 定义自定义类型的别名
    1)在mybatis主配置文件中定义,使定义别名
    2)可以在resultType中使用自定义别名

3)resultMap:结果映射, 指定列名和java对象的属性对应关系。
1)你自定义列值赋值给哪个属性
2)当你的列名和属性名不一样时,一定使用resultMap

	 resultMap和resultType不要一起用,二选一
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值