@Insert(“update user set username=#{username}, password=#{password}, name=#{name}, email=#{email},birthday=#{birthday},sex=#{sex}, state=#{state} where uid=#{uid}”) public Integer update(User user);
测试类
package com.czxy.ssm.test;
import com.czxy.ssm.domain.User;
import com.czxy.ssm.mapper.UserMapper;
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 java.io.IOException;
import java.io.InputStream;
import java.util.Date;
public class Test04_Update {
public static void main(String[] args) throws IOException {
//1 加载配置文件
// 1.1 获得资源流
InputStream is = Resources.getResourceAsStream("SqlMapConfig.xml");
// 1.2 获得工厂
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(is);
//2 获得会话(连接)
SqlSession session = factory.openSession();
//3获得功能接口
UserMapper userMapper = session.getMapper(UserMapper.class);
//4 调用功能
User user = new User();
user.setUid("1");
user.setUsername("jack1");
user.setPassword("12341");
user.setName("杰克");
user.setEmail("sky@163.com");
user.setBirthday(new Date());
user.setSex("男");
user.setSex("0");
Integer result = userMapper.update(user);
System.out.println(result);
//5 提交资源
session.commit();
//6 释放资源
session.close();
}
}
1.4 删除数据
功能接口中的方法
@Delete(“delete from user where uid = #{uid}”) public Integer deleteByPrimaryKey(@Param(“uid”) Integer uid);
@Select(“select * from user where uid = #{uid}”) @ResultMap(“userResult”) public User selectById(@Param(“uid”) String uid);
订单功能:通过id查询订单详情
@Select(“select * from orders where oid = #{oid}”) @Results({ @Result(property=“oid” , column=“oid”), @Result(property=“ordertime” , column=“ordertime”), @Result(property=“total” , column=“total”), @Result(property=“state” , column=“state”), @Result(property=“address” , column=“address”), @Result(property=“name” , column=“name”), @Result(property=“telephone” , column=“telephone”), @Result(property=“uid” , column=“uid”), @Result(property=“user” , one=@One(select=“com.czxy.ssm.mapper.UserMapper.selectById”) , column=“uid”), }) public Order selectById(@Param(“oid”) String id);
1.6 关联查询:多对多
1.6.1 学生和老师数据模型
表间关系
#老师表 CREATE TABLE teacher( tid INT PRIMARY KEY, NAME VARCHAr(50) ); #学生表 CREATE TABLE student( sid INT PRIMARY KEY, NAME VARCHAr(50) ); #中间表 CREATE TABLE teacher_student( teacher_id INT , student_id INT, ConSTRAINT ts_t_fk FOREIGN KEY (teacher_id) REFERENCES teacher(tid), ConSTRAINT ts_s_fk FOREIGN KEY (student_id) REFERENCES student(sid) ); INSERT INTO teacher VALUES (1,‘肖老师’); INSERT INTO teacher VALUES (2,‘马老师’); INSERT INTO student VALUES (1,‘张三’); INSERT INTO student VALUES (2,‘李四’); INSERT INTO student VALUES (3,‘王五’); INSERT INTO teacher_student VALUES (1,1); INSERT INTO teacher_student VALUES (1,2); INSERT INTO teacher_student VALUES (1,3); INSERT INTO teacher_student VALUES (2,1); INSERT INTO teacher_student VALUES (2,2);
JavaBean及其关系1
JavaBean:Student
package com.czxy.ssm.domain; import java.util.ArrayList; import java.util.List; public class Student { private Integer sid; private String name; private List teacherList = new ArrayList<>(); public Integer getSid() { return sid; } public void setSid(Integer sid) { this.sid = sid; } public String getName() { return name; } public void setName(String name) { this.name = name; } public List getTeacherList() { return teacherList; } public void setTeacherList(List teacherList) { this.teacherList = teacherList; } @Override public String toString() { return “Student{” + “sid=” + sid + “, name=’” + name + ‘’’ + “, teacherList=” + teacherList + ‘}’; } }
JavaBean:Teacher
package com.czxy.ssm.domain; import java.util.ArrayList; import java.util.List; public class Teacher { private Integer tid; private String name; private List studentList = new ArrayList<>(); public Integer getTid() { return tid; } public void setTid(Integer tid) { this.tid = tid; } public String getName() { return name; } public void setName(String name) { this.name = name; } public List getStudentList() { return studentList; } public void setStudentList(List studentList) { this.studentList = studentList; } @Override public String toString() { return “Teacher{” + “tid=” + tid + “, name=’” + name + ‘’’ + “, studentList=” + studentList + ‘}’; } }
1.6.2 多对多:老师–>学生
需要根据老师tid查询中间表中,对应的所有学生id
student 映射
package com.czxy.ssm.mapper;
import com.czxy.ssm.domain.Student;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
public interface StudentMapper {
@Select("select * from student s where s.sid in (select student_id from teacher_student where teacher_id = #{tid} )")
public Student findStudentByTeacherId(@Param("tid") Integer tid) throws Exception;
}
teacher 映射
package com.czxy.ssm.mapper;
import com.czxy.ssm.domain.Teacher;
import org.apache.ibatis.annotations.*;
public interface TeacherMapper {
@Select("select * from teacher t where t.tid = #{tid}")
@Results({
@Result(property="tid" , column="tid"),
@Result(property="name" , column="name"),
@Result(property="studentList" , many=@Many(select="com.czxy.ssm.mapper.StudentMapper.findStudentByTeacherId") , column="tid"),
})
public Teacher selectById(@Param("tid") Integer tid);
}
package com.czxy.ssm.test;
import com.czxy.ssm.domain.User;
import com.czxy.ssm.mapper.UserMapper;
import com.czxy.ssm.mapper.UserMapper2;
import com.czxy.ssm.utils.MyBatisUtils;
import org.junit.Test;
import java.io.IOException;
import java.util.List;
public class Test13_Mapper {
@Test
public void testSelectByPrimaryKey() {
UserMapper2 userMapper2 = MyBatisUtils.getMapper(UserMapper2.class);
User user = userMapper2.selectByPrimaryKey("1");
System.out.println(user);
MyBatisUtils.commitAndclose();
}
}
2.4.2 查询所有
@Test
public void testSelectAll() {
UserMapper2 userMapper2 = MyBatisUtils.getMapper(UserMapper2.class);
List list = userMapper2.selectAll();
// 打印
list.forEach(System.out::println);
MyBatisUtils.commitAndclose();
}
2.4.3 添加
@Test
public void testInsert() {
UserMapper2 userMapper2 = MyBatisUtils.getMapper(UserMapper2.class);
User user = new User();
user.setUid("2");
user.setUsername("jack");
user.setPassword("1234");
user.setName("杰克");
user.setEmail("sky@163.com");
user.setBirthday(new Date());
user.setSex("男");
user.setSex("0");
int result = userMapper2.insert(user);
// 打印
System.out.println(result);
MyBatisUtils.commitAndclose();
}
2.4.4 修改
@Test
public void testUpdate() {
UserMapper2 userMapper2 = MyBatisUtils.getMapper(UserMapper2.class);
User user = new User();
user.setUid("2");
user.setUsername("jack");
user.setPassword("1234");
user.setName("杰克");
user.setEmail("sky@163.com");
user.setBirthday(new Date());
user.setSex("男");
user.setSex("0");
int result = userMapper2.updateByPrimaryKey(user);
// 打印
System.out.println(result);
MyBatisUtils.commitAndclose();
}
2.4.5 删除
@Test
public void testDelete() {
UserMapper2 userMapper2 = MyBatisUtils.getMapper(UserMapper2.class);
int result = userMapper2.deleteByPrimaryKey("2");
// 打印
System.out.println(result);
MyBatisUtils.commitAndclose();
}
2.4.6 多条件查询
语法:
// 获得多条件对象 Example example = new Example(对象.class); Example.Criteria criteria = example.createCriteria(); // 常见条件方法 andLike() //模糊查询 andEqualTo() //等值查询 andLessThanOrEqualTo() //<=查询 andGreaterThanOrEqualTo() //>=查询 andBetween() //区间查询
@Test
public void testCondition() {
UserMapper2 userMapper2 = MyBatisUtils.getMapper(UserMapper2.class);
Example example = new Example(User.class);
Example.Criteria criteria = example.createCriteria();
criteria.andLike("name", "%王%");
criteria.andEqualTo("sex", "男");
List list = userMapper2.selectByExample(example);
for (User user : list) {
System.out.println(user);
}
MyBatisUtils.commitAndclose();
}
package com.czxy.ssm.mapper;
import com.czxy.ssm.domain.User;
import com.czxy.ssm.vo.UserVo;
import org.apache.ibatis.annotations.;
import java.util.List;
public interface UserMapper {
public User selectById(String uid);
public List selectAll();
public List selectByName(@Param("name") String name);
public Integer insert(User user);
public Integer updateByPrimaryKey(User user);
public Integer deleteByPrimaryKey(@Param("uid") String uid);
public List condition(UserVo userVo);
}
3.4.3 Mapper 映射文件
3.4.4 测试
package com.czxy.ssm.test;
import com.czxy.ssm.domain.User;
import com.czxy.ssm.mapper.UserMapper;
import com.czxy.ssm.utils.MyBatisUtils;
import org.junit.Test;
import java.util.Date;
import java.util.List;
public class TestUserMapper {
@Test
public void testSelectById() {
UserMapper userMapper = MyBatisUtils.getMapper(UserMapper.class);
User user = userMapper.selectById("1");
System.out.println(user);
MyBatisUtils.commitAndclose();
}
@Test
public void testSelectAll() {
UserMapper UserMapper = MyBatisUtils.getMapper(UserMapper.class);
List list = UserMapper.selectAll();
// 打印
list.forEach(System.out::println);
MyBatisUtils.commitAndclose();
}
@Test
public void testSelectByName() {
UserMapper UserMapper = MyBatisUtils.getMapper(UserMapper.class);
List list = UserMapper.selectByName("%张%");
// 打印
list.forEach(System.out::println);
MyBatisUtils.commitAndclose();
}
@Test
public void testInsert() {
UserMapper UserMapper = MyBatisUtils.getMapper(UserMapper.class);
User user = new User();
user.setUid("2");
user.setUsername("jack");
user.setPassword("1234");
user.setName("杰克");
user.setEmail("sky@163.com");
user.setBirthday(new Date());
user.setSex("男");
user.setSex("0");
int result = UserMapper.insert(user);
// 打印
System.out.println(result);
MyBatisUtils.commitAndclose();
}
@Test
public void testUpdate() {
UserMapper UserMapper = MyBatisUtils.getMapper(UserMapper.class);
User user = new User();
user.setUid("2");
user.setUsername("jack");
user.setPassword("1234");
user.setName("杰克");
user.setEmail("sky@163.com");
user.setBirthday(new Date());
user.setSex("男");
user.setSex("0");
int result = UserMapper.updateByPrimaryKey(user);
// 打印
System.out.println(result);
MyBatisUtils.commitAndclose();
}
@Test
public void testDelete() {
UserMapper UserMapper = MyBatisUtils.getMapper(UserMapper.class);
int result = UserMapper.deleteByPrimaryKey("2");
// 打印
System.out.println(result);
MyBatisUtils.commitAndclose();
}
}
uid, username, password, name, email, birthday, sex, state
select from user
3.6 关系映射:一对多
3### .6.1 mapper接口
UserMapper,已有
public interface UserMapper {
public User selectById(String uid);
}
OrderMapper
package com.czxy.ssm.mapper;
import com.czxy.ssm.domain.Order;
import org.apache.ibatis.annotations.Param;
public interface OrderMapper {
public Order findOrdersByUserId(@Param("uid") Integer uid) ;
}
3### .6.2 Mapper 映射文件
OrdersMapper.xml
select * from orders where uid = #{uid}
UserMapper.xml
select * from user where uid = #{id}
3.6.3 核心配置文件
3.6.4 测试
public class TestUserMapper {
@Test
public void testSelectById() {
UserMapper userMapper = MyBatisUtils.getMapper(UserMapper.class);
User user = userMapper.selectById("u001");
System.out.println(user);
MyBatisUtils.commitAndclose();
}
}
3.7 关系映射:多对一
3.7.1 mapper接口
package com.czxy.ssm.mapper;
import com.czxy.ssm.domain.Order;
import org.apache.ibatis.annotations.Param;
import java.util.List;
public interface OrderMapper {
public Order selectById(@Param("oid") String oid);
}
3.7.2 映射文件OrdersMapper.xml
select * from orders where oid = #{oid}
3.7.3 测试类
package com.czxy.ssm.test;
import com.czxy.ssm.domain.Order;
import com.czxy.ssm.domain.User;
import com.czxy.ssm.mapper.OrderMapper;
import com.czxy.ssm.mapper.UserMapper;
import com.czxy.ssm.utils.MyBatisUtils;
import com.czxy.ssm.vo.UserVo;
import org.junit.Test;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
public class TestOrderMapper {
@Test
public void testSelectById() {
OrderMapper orderMapper = MyBatisUtils.getMapper(OrderMapper.class);
Order order = orderMapper.selectById("x001");
System.out.println(order);
MyBatisUtils.commitAndclose();
}
}