栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

MyBatis K01(20211006)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

MyBatis K01(20211006)

项目目录结构:

一.万能Map

假设,我们的实体类,或者数据库中的表,字段或者参数过多(而有些字段又非必须的),我们应当考虑使用Map。

  • 传递map中的key,直接在sql中取出key即可(没有顺序要求);
  • 这种写法不规范,但可以更轻松的解决参数过多的问题。

DeptMapper.xml


	
		insert into dept(deptno,dname,loc) values (#{dno},#{dname},#{dl});
	

DeptMapper.java

public interface DeptMapper {
	int addDept(Map map);
}

SqlMapConfig.xml

	
	
		  
	

测试类:DeptTest.java

	@Test
	public void addTest() {

		// 第一步获得sqlSession对象
		SqlSession sqlSession = MybatisUtils.getSession();
		// 执行SQL
		DeptMapper mapper = sqlSession.getMapper(DeptMapper.class);

		Map map = new HashMap();
		map.put("dno", 60);
		map.put("dname", "国庆完了部");
		map.put("dl", "大连");

		mapper.addDept(map);

		// 提交事务
		sqlSession.commit();
		// 关闭sqlSession
		sqlSession.close();
		
	}
二.模糊查询
  • java代码执行的时候,传递通配符

DeptMapper.xml


	
		select * from dept where dname like #{value}
	

DeptMapper.java

public interface DeptMapper {
	List getDeptLike(String value);
}

SqlMapConfig.xml

	
	
		  
	

测试类:DeptTest.java

	@Test
	public void likeTest() {

		// 第一步获得sqlSession对象
		SqlSession sqlSession = MybatisUtils.getSession();
		// 执行SQL
		DeptMapper mapper = sqlSession.getMapper(DeptMapper.class);

		List list = mapper.getDeptLike("%部%");

		for (Dept dept : list) {
			System.out.println(dept);
		}

		// 关闭sqlSession
		sqlSession.close();
	}
  • 在sql中传递通配符,使用concat函数

DeptMapper.xml


	
		select * from dept limit #{startIndex},#{pageSize}
	

DeptMapper.java

public interface DeptMapper {
	List getDeptByLimit(Map map);
}

SqlMapConfig.xml

	
	
		  
	

测试类:DeptTest.java

	@Test
	public void getDeptByLimit() {
		SqlSession sqlSession = MybatisUtils.getSession();
		DeptMapper mapper = sqlSession.getMapper(DeptMapper.class);

		Map map = new HashMap();
		map.put("startIndex", 0);
		map.put("pageSize", 6);
		List deptByLimit = mapper.getDeptByLimit(map);

		sqlSession.close();
	}
四.设置自动提交事务
SqlSession session = sessionFactory.openSession(true);//自动提交
五.注解

直接在接口上实现sql语句的一种开发方式。

本质:反射机制
底层:动态代理

EmpMapper.java 接口

  • 方法只有一个参数时,参数直接写即可
  • 方法存在多个参数,所有的参数前面必须加上@param(“empno”)注解
  • 基本类型的参数或者String类型,需要加上
  • 引用类型不需要加
  • 如果只有一个基本类型的话,可以忽略,但是建议加上
public interface EmpMapper {
	@Select("select * from emp where empno = #{empno}")
	Emp getEmpByEmpno(@Param("empno") int empno);
	
	@Insert("insert into emp(empno,ename,job) values (#{empno},#{ename},#{job})")
	int addEmp(Emp emp);
	
	@Update("update emp set ename = #{ename} ,job = #{job} where empno = #{empno}")
	int updateEmp(Emp emp);
	
	@Delete("delete from emp where empno = #{empno}")
	int deleteEmp(@Param("empno")int empno);
}

SqlMapConfig.xml
需要在核心配置文件中绑定接口

	
	
		
	

EmpTest.java 测试类

public class EmpTest {
	
	@Test
	public void testSelect() {
		SqlSession sqlSession = MybatisUtils.getSession();

		EmpMapper mapper = sqlSession.getMapper(EmpMapper.class);
		Emp emp = mapper.getEmpByEmpno(7788);
		System.out.println(emp.getEname());

		sqlSession.close();
	}

	@Test
	public void testInsert() {
		SqlSession sqlSession = MybatisUtils.getSession();
		
		EmpMapper mapper = sqlSession.getMapper(EmpMapper.class);
		Emp emp = new Emp();
		emp.setEmpno(7890);
		emp.setEname("7890");
		emp.setJob("7890job");
		
		mapper.addEmp(emp);
		
		sqlSession.commit();
		sqlSession.close();
	}
	
	@Test
	public void testUpdate() {
		SqlSession sqlSession = MybatisUtils.getSession();
		
		EmpMapper mapper = sqlSession.getMapper(EmpMapper.class);
		Emp emp = new Emp();
		emp.setEmpno(7890);
		emp.setEname("new7890");
		emp.setJob("newjob");
		
		mapper.updateEmp(emp);
		
		sqlSession.commit();
		sqlSession.close();
	}
	
	@Test
	public void testDelete() {
		SqlSession sqlSession = MybatisUtils.getSession();
		
		EmpMapper mapper = sqlSession.getMapper(EmpMapper.class);
		
		mapper.deleteEmp(7890);
		
		sqlSession.commit();
		sqlSession.close();
	}
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/314525.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号