今天主要高了一下这下面两个el表达式的用法
输入参数:parameterType
1.类型为简单类型(8个基本类型+String)int,char,boolean,float,double,byte,long,short
#{任意值}
${value}
#{}自动给string加上’’(自动类型转换)
原
样
输
出
适
用
于
动
态
排
序
(
动
态
字
段
)
在
m
a
p
p
e
r
.
x
m
l
文
件
中
<
s
e
l
e
c
t
>
标
签
中
{}原样输出 适用于动态排序(动态字段) 在mapper.xml文件中<select>标签中
原样输出适用于动态排序(动态字段)在mapper.xml文件中<select>标签中{value}会出错,’‘需要在数据库中体现,
可以写成’${value}’
2.对象类型
#{任意值}
属
性
名
e
g
:
{属性名}eg:
属性名eg:{stuName}
3.#{}可以防止sql注入
${}不可以
获取对象值:
select * from student where stuAge=#{stuAge} or stuName like #{stuName}
这种写法用student.setStuName("%sd%");
select * from student where stuAge=#{stuAge} or stuName like ‘%${stuName}%’
这种写法用student.setStuName(“sd”);
新的mapper.xml文件
<?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">
<!-- namespace:该Mapper.xml文件的唯一标识符 -->
<mapper namespace="org.qgm.Mapper.StudentMapper">
<!-- id是用来唯一定位sql语句,parameterType是where后面要查找的类型,resulttype是*的返回值,*返回时类全部。 -->
<select id="queryStudentByAddress" parameterType="student" resultType="student">
select * from student where schoolAddress=#{address.schoolAddress} or homeAddress='${address.homeAddress}'
</select>
<select id="queryStudentByColumn" parameterType="String" resultType="student">
select * from student order by ${value} DESC
</select>
<select id="queryStudentBystuno" parameterType="int"
resultType="Student">
select * from student where stuNo=${value}
</select>
<select id="queryStudentByHashmap" parameterType="Hashmap"
resultType="student"
>
select * from student where stuAge=#{stuAge} or stuName like #{stuName}
<!-- select * from student where stuAge=#{stuAge} or stuName like '%${stuName}%' -->
</select>
<select id="queryStudentBystuAgeorstuName" parameterType="student"
resultType="student"
>
select * from student where stuAge=#{stuAge} or stuName like #{stuName}
<!-- select * from student where stuAge=#{stuAge} or stuName like '%${stuName}%' -->
</select>
<select id="queryStudentBystuName" parameterType="String"
resultType="Student">
select * from student where stuName=#{stuName}
<!-- select * from student where stuName='${value}' $只有这样写才能被识别-->
</select>
<!--
使用转换器查询
如果类属性与表中字段合理识别(string-varchar)则使用resultType
否则使用resultmap
-->
<select id="queryStudentBystunoWithConverter" parameterType="int"
resultMap="studentResult">
select * from student where stuNo=#{stuNo}
</select>
<resultMap type="student" id="studentResult">
<!-- 分为主键和非主键
主键用id,非主键用result
-->
<id property="stuNo" column="stuNo" />
<result property="stuName" column="stuName"/>
<result property="stuAge" column="stuAge"/>
<result property="graName" column="graName"/>
<result property="stuSex" column="stuSex" javaType="boolean" jdbcType="INTEGER"/>
</resultMap>
<insert id="addStudent" parameterType="Student">
insert into
student(stuNo,stuName,stuAge,graName)
values(#{stuNo},#{stuName},#{stuAge},#{graName})
</insert>
<insert id="addStudentWithConverter" parameterType="Student">
insert into
student(stuNo,stuName,stuAge,graName,stuSex)
values(#{stuNo},#{stuName},#{stuAge},#{graName},#{stuSex,javaType=Boolean,jdbcType=INTEGER})
</insert>
<delete id="deleteStudentByStuno" parameterType="int">
delete from student where stuNo=#{stuNo}
</delete>
<update id="updataStudentByStuno" parameterType="Student">
update student set stuName=#{stuName},stuAge=#{stuAge},graName=#{graName} where stuNo=#{stuNo}
</update>
<select id="queryAllStudent" resultType="Student">
select * from student
</select>
</mapper>
新的TEST文件
package org.qgm.test;
import java.io.IOException;
import java.io.Reader;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
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.qgm.Mapper.StudentMapper;
import org.qgm.entity.Address;
import org.qgm.entity.Student;
public class Test {
// 用转换器查询单个
public static void queryStudentByStunoWithConverter() throws IOException {
// 将一个文件读入reader流中,变成一个对象
Reader reader = Resources.getResourceAsReader("conf.xml");
// 将reader对象变成sqlsession对象
SqlSessionFactory sqlsessionfactory = new SqlSessionFactoryBuilder().build(reader, "development");// 强制修改default的参数
// 从工厂中取出
SqlSession Session = sqlsessionfactory.openSession();
// 由于之前在mapper中设置过了返回值对象,所以object对象即为student
StudentMapper studentmapper = Session.getMapper(StudentMapper.class);
Student student = studentmapper.queryStudentBystunoWithConverter(7);// 接口中的方法
System.out.println(student);
Session.close();
}
// 查询单个
public static void queryStudentByStuno() throws IOException {
// 将一个文件读入reader流中,变成一个对象
Reader reader = Resources.getResourceAsReader("conf.xml");
// 将reader对象变成sqlsession对象
SqlSessionFactory sqlsessionfactory = new SqlSessionFactoryBuilder().build(reader, "development");// 强制修改default的参数
// 从工厂中取出
SqlSession Session = sqlsessionfactory.openSession();
// 由于之前在mapper中设置过了返回值对象,所以object对象即为student
StudentMapper studentmapper = Session.getMapper(StudentMapper.class);
Student student = studentmapper.queryStudentBystuno(7);// 接口中的方法
System.out.println(student);
Session.close();
}
// 查询单个用嵌套
public static void queryStudentByAddress() throws IOException {
// 将一个文件读入reader流中,变成一个对象
Reader reader = Resources.getResourceAsReader("conf.xml");
// 将reader对象变成sqlsession对象
SqlSessionFactory sqlsessionfactory = new SqlSessionFactoryBuilder().build(reader, "development");// 强制修改default的参数
// 从工厂中取出
SqlSession Session = sqlsessionfactory.openSession();
// 由于之前在mapper中设置过了返回值对象,所以object对象即为student
StudentMapper studentmapper = Session.getMapper(StudentMapper.class);
Student student = new Student();
Address address = new Address();
address.setHomeAddress("nmsl");
address.setSchoolAddress("dnmd");
student.setAddress(address);
List<Student> students = studentmapper.queryStudentByAddress(student);// 接口中的方法
System.out.println(students);
Session.close();
}
// 查询单个
public static void queryStudentByHashmap() throws IOException {
// 将一个文件读入reader流中,变成一个对象
Reader reader = Resources.getResourceAsReader("conf.xml");
// 将reader对象变成sqlsession对象
SqlSessionFactory sqlsessionfactory = new SqlSessionFactoryBuilder().build(reader, "development");// 强制修改default的参数
// 从工厂中取出
SqlSession Session = sqlsessionfactory.openSession();
// 由于之前在mapper中设置过了返回值对象,所以object对象即为student
Map<String , Object>studentMap=new HashMap<String, Object>();
studentMap.put("stuAge", 18);
studentMap.put("stuName", "gou");
StudentMapper studentmapper = Session.getMapper(StudentMapper.class);
List<Student> students=studentmapper.queryStudentByHashmap(studentMap);
System.out.println(students);
Session.close();
}
// 查询单个
public static void queryStudentBystuAgeorstuName() throws IOException {
// 将一个文件读入reader流中,变成一个对象
Reader reader = Resources.getResourceAsReader("conf.xml");
// 将reader对象变成sqlsession对象
SqlSessionFactory sqlsessionfactory = new SqlSessionFactoryBuilder().build(reader, "development");// 强制修改default的参数
// 从工厂中取出
SqlSession Session = sqlsessionfactory.openSession();
// 由于之前在mapper中设置过了返回值对象,所以object对象即为student
StudentMapper studentmapper = Session.getMapper(StudentMapper.class);
Student student = new Student();
student.setStuAge(9);
student.setStuName("%sd%");// 实现模糊查询
List<Student> students = studentmapper.queryStudentBystuAgeorstuName(student);// 接口中的方法
System.out.println(students);
Session.close();
}
// 查询单个byName
public static void queryStudentByStuName() throws IOException {
// 将一个文件读入reader流中,变成一个对象
Reader reader = Resources.getResourceAsReader("conf.xml");
// 将reader对象变成sqlsession对象
SqlSessionFactory sqlsessionfactory = new SqlSessionFactoryBuilder().build(reader, "development");// 强制修改default的参数
// 从工厂中取出
SqlSession Session = sqlsessionfactory.openSession();
// 由于之前在mapper中设置过了返回值对象,所以object对象即为student
StudentMapper studentmapper = Session.getMapper(StudentMapper.class);
Student student = studentmapper.queryStudentBystuName("gouge");// 接口中的方法
System.out.println(student);
Session.close();
}
// 查询全部学生
public static void queryAllStudentBystuno() throws IOException {
// 将一个文件读入reader流中,变成一个对象
Reader reader = Resources.getResourceAsReader("conf.xml");
// 将reader对象变成sqlsession对象
SqlSessionFactory sqlsessionfactory = new SqlSessionFactoryBuilder().build(reader, "development");// 强制修改default的参数
// 从工厂中取出
SqlSession Session = sqlsessionfactory.openSession();
StudentMapper studentmapper = Session.getMapper(StudentMapper.class);
// 由于之前在mapper中设置过了返回值对象,所以object对象即为student
List<Student> students = studentmapper.queryAllStudent();
System.out.println(students);
Session.close();
}
// 查询全部学生
public static void queryStudentByColumn() throws IOException {
// 将一个文件读入reader流中,变成一个对象
Reader reader = Resources.getResourceAsReader("conf.xml");
// 将reader对象变成sqlsession对象
SqlSessionFactory sqlsessionfactory = new SqlSessionFactoryBuilder().build(reader, "development");// 强制修改default的参数
// 从工厂中取出
SqlSession Session = sqlsessionfactory.openSession();
StudentMapper studentmapper = Session.getMapper(StudentMapper.class);
// 由于之前在mapper中设置过了返回值对象,所以object对象即为student
List<Student> students = studentmapper.queryStudentByColumn("stuName");
System.out.println(students);
Session.close();
}
// 用转换器增加学生
public static void addStudentWithConverter() throws IOException {
// 将一个文件读入reader流中,变成一个对象
Reader reader = Resources.getResourceAsReader("conf.xml");
// 将reader对象变成sqlsession对象
SqlSessionFactory sqlsessionfactory = new SqlSessionFactoryBuilder().build(reader, "development");// 强制修改default的参数
// 从工厂中取出
SqlSession Session = sqlsessionfactory.openSession();
StudentMapper studentmapper = Session.getMapper(StudentMapper.class);
Student student = new Student(9, "gouge", 18, "suipi", true);
studentmapper.addStudentWithConverter(student);
System.out.println("增加成功");
Session.close();
}
// 增加学生
public static void addStudent() throws IOException {
// 将一个文件读入reader流中,变成一个对象
Reader reader = Resources.getResourceAsReader("conf.xml");
// 将reader对象变成sqlsession对象
SqlSessionFactory sqlsessionfactory = new SqlSessionFactoryBuilder().build(reader, "development");// 强制修改default的参数
// 从工厂中取出
SqlSession Session = sqlsessionfactory.openSession();
StudentMapper studentmapper = Session.getMapper(StudentMapper.class);
Student student = new Student(7, "sd", 48, "sdw");
studentmapper.addStudent(student);
System.out.println("增加成功");
Session.close();
}
// 删除学生
public static void deleteStudentBystuNo() throws IOException {
// 将一个文件读入reader流中,变成一个对象
Reader reader = Resources.getResourceAsReader("conf.xml");
// 将reader对象变成sqlsession对象
SqlSessionFactory sqlsessionfactory = new SqlSessionFactoryBuilder().build(reader, "development");// 强制修改default的参数
// 从工厂中取出
SqlSession Session = sqlsessionfactory.openSession();
StudentMapper studentmapper = Session.getMapper(StudentMapper.class);
studentmapper.deleteStudentByStuno(4);
System.out.println("删除成功");
Session.close();
}
// 修改
public static void updateStudentBystuNo() throws IOException {
// 将一个文件读入reader流中,变成一个对象
Reader reader = Resources.getResourceAsReader("conf.xml");
// 将reader对象变成sqlsession对象
SqlSessionFactory sqlsessionfactory = new SqlSessionFactoryBuilder().build(reader, "development");// 强制修改default的参数
// 从工厂中取出
SqlSession Session = sqlsessionfactory.openSession();
StudentMapper studentmapper = Session.getMapper(StudentMapper.class);
Student student = new Student();
// 修改谁
student.setStuNo(2);
// 改成啥
student.setStuName("qwe");
student.setStuAge(8488);
student.setGraName("wdnmd");
studentmapper.updataStudentByStuno(student);
System.out.println("更新成功");
Session.close();
}
public static void main(String[] args) throws IOException {
queryStudentByHashmap();
}
}
hashmap明天搞