Mybatis实现部门表增删改查以及排序

废话不说,直接开门见山!

需要在WebContent下的lib下导入两个包

mybatis-3.2.5.jar

ojdbc6.jar

 1 package com.xdl.entity;
 2
 3 import java.io.Serializable;
 4
 5 public class Dept implements Serializable{
 6     private Integer deptno;//类型和名称与表保持一致
 7     private String dname;
 8     private String loc;
 9
10     public Integer getDeptno() {
11         return deptno;
12     }
13     public void setDeptno(Integer deptno) {
14         this.deptno = deptno;
15     }
16     public String getDname() {
17         return dname;
18     }
19     public void setDname(String dname) {
20         this.dname = dname;
21     }
22     public String getLoc() {
23         return loc;
24     }
25     public void setLoc(String loc) {
26         this.loc = loc;
27     }
28
29
30 }

Dept

 1 package com.xdl.Mapper;
 2
 3 import java.util.List;
 4
 5 import org.apache.ibatis.annotations.Param;
 6
 7 import com.xdl.entity.Dept;
 8
 9 public interface DeptMapper {
10     /**
11      * 查询所有
12      *
13      */
14     public List<Dept> findAll();
15
16     /**
17      * 通过id查询
18      *
19      */
20     public Dept findById(int no);
21
22     /**
23      * 插入
24      *
25      */
26     public int save(Dept dept);
27
28     /**
29      * 修改
30      *
31      */
32     public int update(Dept dept);
33
34     /**
35      * 通过id删除
36      *
37      */
38     public int delete(int no);
39
40     /**
41      * 排序
42      *
43      */
44     public List<Dept> findAllOrder(@Param("n") String no);
45 }

DeptMapper

 1 <?xml version="1.0" encoding="UTF-8" ?>
 2 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 3 "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 4 <mapper namespace="com.xdl.Mapper.DeptMapper">
 5     <select id="findAll" resultType="com.xdl.entity.Dept">
 6         select * from dept
 7     </select>
 8     <select id="findById" parameterType="int" resultType="com.xdl.entity.Dept">
 9         select *
10         from dept where deptno = #{no}
11     </select>
12     <select id="findAllOrder" parameterType="String" resultType="com.xdl.entity.Dept">
13         select * from dept order by ${n}
14     </select>
15     <insert id="save" parameterType="com.xdl.entity.Dept">
16         insert into dept
17         (deptno,dname,loc) values (dept_seq.nextval,#{dname},#{loc})
18     </insert>
19     <update id="update">
20         update dept set dname = #{dname},loc = #{loc} where
21         deptno = #{deptno}
22     </update>
23     <delete id="delete">
24         delete from dept where deptno = #{no}
25     </delete>
26 </mapper>

deptmapper.xml

 1 <?xml version="1.0" encoding="UTF-8" ?>
 2 <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
 3 "http://mybatis.org/dtd/mybatis-3-config.dtd">
 4 <configuration>
 5     <!-- 将底层日志打印 -->
 6     <settings>
 7         <setting name="logImpl" value="STDOUT_LOGGING" />
 8     </settings>
 9     <environments default="environment">
10         <environment id="environment">
11             <transactionManager type="JDBC" />
12             <!-- 指定数据库连 -->
13             <dataSource type="POOLED">
14                 <property name="driver" value="oracle.jdbc.OracleDriver" />
15                 <property name="url" value="jdbc:oracle:thin:@localhost:1521:XE" />
16                 <property name="username" value="SCOTT" />
17                 <property name="password" value="tiger" />
18             </dataSource>
19         </environment>
20     </environments>
21     <!-- 指定SQL定义文件 -->
22     <mappers>
23         <mapper resource="com/xdl/sql/DeptMapper.xml" />
24     </mappers>
25 </configuration> 

sqlmap-config.xml

 1 package com.xdl.test;
 2
 3 import java.io.Reader;
 4
 5 import org.apache.ibatis.io.Resources;
 6 import org.apache.ibatis.session.SqlSession;
 7 import org.apache.ibatis.session.SqlSessionFactory;
 8 import org.apache.ibatis.session.SqlSessionFactoryBuilder;
 9
10 public class MyBatisUtil {
11     static SqlSessionFactory factory;
12     static {
13         try {
14             String conf = "sqlmap-config.xml"; // 定义配置文件
15             SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
16             Reader reader = Resources.getResourceAsReader(conf);
17             factory = builder.build(reader);
18         } catch (Exception e) {
19             e.printStackTrace();
20         }
21     }
22
23     public static SqlSession getSession() {
24         SqlSession sqlSession = factory.openSession();
25         return sqlSession;
26     }
27 }

MybatisUtli

写一个测试类(实现查询和排序)

 1 package com.xdl.test;
 2
 3 import java.util.List;
 4
 5 import org.apache.ibatis.session.SqlSession;
 6 import org.junit.Test;
 7
 8 import com.xdl.Mapper.DeptMapper;
 9 import com.xdl.entity.Dept;
10
11 public class TestDeptMapper {
12     /**
13      * 查询所有
14      */
15     @Test
16     public void testFindAll() {
17         SqlSession sqlSession = MyBatisUtil.getSession();
18         // sqlSession.getMapper(接口.class); 根据DeptMapper映射器接口动态生成实现对象
19         DeptMapper deptDao = sqlSession.getMapper(DeptMapper.class);
20         System.out.println(deptDao.getClass().getName());
21         List<Dept> list = deptDao.findAll();
22         for (Dept dept : list) {
23             System.out.println(dept.getDeptno() + ":" + dept.getDname() + ":" + dept.getLoc());
24         }
25         sqlSession.close();
26     }
27
28     /**
29      * 进行排序
30      */
31     @Test
32     public void testOrderBy() {
33         SqlSession sqlSession = MyBatisUtil.getSession();
34         // sqlSession.getMapper(接口.class); 根据DeptMapper映射器接口动态生成实现对象
35         DeptMapper deptDao = sqlSession.getMapper(DeptMapper.class);
36         System.out.println(deptDao.getClass().getName());
37         List<Dept> list = deptDao.findAllOrder("deptno");
38         for (Dept dept : list) {
39             System.out.println(dept.getDeptno() + ":" + dept.getDname() + ":" + dept.getLoc());
40         }
41         sqlSession.close();
42     }
43 }

TestDeptMapper

写一个测试类(实现增删改查排序)

 1 package com.xdl.test;
 2
 3 import java.util.List;
 4
 5 import org.apache.ibatis.session.SqlSession;
 6 import org.junit.Test;
 7
 8 import com.xdl.entity.Dept;
 9
10 public class TestDept {
11     private static SqlSession sqlSession = MyBatisUtil.getSession();
12
13     /**
14      * 查询所有
15      */
16     @Test
17     public void testFindAll() {
18         // 使用sqlSession操作SQL selectList("id",parameterType值)
19         List<Dept> list = sqlSession.selectList("com.xdl.Mapper.DeptMapper.findAll");
20         for (Dept dept : list) {
21             System.out.println(dept.getDeptno() + ":" + dept.getDname() + ":" + dept.getLoc());
22         }
23         sqlSession.close();
24     }
25
26     /**
27      * 根据ID查询
28      */
29     @Test
30     public void testFindById() {
31         Dept dept = sqlSession.selectOne("com.xdl.Mapper.DeptMapper.findById", 10);
32         if (dept != null) {
33             System.out.println(dept.getDeptno() + ":" + dept.getDname() + ":" + dept.getLoc());
34         } else {
35             System.out.println("查询结果为空~~");
36         }
37         sqlSession.close();
38     }
39
40     /**
41      * 插入
42      */
43     @Test
44     public void testSave() {
45         Dept dept = new Dept();
46         dept.setDname("xian");
47         dept.setLoc("dayanta");
48         int rows = sqlSession.insert("com.xdl.Mapper.DeptMapper.save", dept);
49         String str = "条记录插入成功";
50         System.out.println(rows + str);
51         sqlSession.commit();
52         sqlSession.close();
53     }
54
55     /**
56      * 修改
57      */
58     @Test
59     public void testUpdate() {
60         Dept dept = new Dept();
61         dept.setDeptno(10);
62         dept.setDname("spring");
63         dept.setLoc("bj");
64         int rows = sqlSession.update("com.xdl.Mapper.DeptMapper.update", dept);
65         String str = "条记录修改成功";
66         System.out.println(rows + str);
67         sqlSession.commit();
68         sqlSession.close();
69     }
70
71     /**
72      * 通过id删除
73      */
74     @Test
75     public void testDelete() {
76         Dept dept = new Dept();
77         int rows = sqlSession.delete("com.xdl.Mapper.DeptMapper.delete", 1);
78         String str = "条记录删除成功";
79         System.out.println(rows + str);
80         sqlSession.commit();
81         sqlSession.close();
82     }
83 }

TestDept

1.在MyBatis中定义SQL语句时,如果SQL里有?号,就必须写parameterType=””参数是int就写对应的类型并且名字可以自定义

2. 在查询的时候最后会返回一个结果集对象,所以就必须在后面继续追加resultType=包名.实体类名

3 在执行DML的时候里面要执行多个参数的时候,可以选择集合或者对象,

parameterType=包名.实体类名.参数,类型和实体类要一致,参数不一致,可以通过给sql起别名解决,类型不一致就需要对框架里的部分参数进行转换

4 通过实现增删改查,发现DQL有resultType属性,DML都没有resultType属性              数据访问层(Dao)

5 mapper.xml映射器里的<mapper namespace=包名.接口名,才可以 达到Mapper.xml里的数据库代码映射到接口中

总结为:

a. Mapper接口中方法名和sql定义id值保持一致

b. Mapper接口中方法参数类型和sql定义中parameterType类型保持一致

c. Mapper接口中方法返回类型,多行查询返回List,单行查询返回对象类型和resultType保持一致DML返回类型为int或void

原文地址:https://www.cnblogs.com/resultset/p/Mybatis.html

时间: 2024-08-09 19:07:09

Mybatis实现部门表增删改查以及排序的相关文章

Mybatis实现单表增删改查操作

mybatis是对持久层进行了封装.mybatis文档地址:https://mybatis.org/mybatis-3/zh/index.html 下面实现单表的增删改查操作. 1.新建maven项目命名为mybatis.并在pom.xml中引入相关依赖 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0"

mybatis(单表增删改查)

(mybatis注意各个文件的映射问题) 用到的t_user数据库脚本: -- 导出 mybatis 的数据库结构 CREATE DATABASE IF NOT EXISTS `mybatis` /*!40100 DEFAULT CHARACTER SET utf8 */; USE `mybatis`; -- 导出 表 mybatis.t_user 结构 CREATE TABLE IF NOT EXISTS `t_user` ( `id` int(10) NOT NULL AUTO_INCREM

mybatis(单表增删改查useMapper版)

数据库脚本(注意测试时先add-->load-->update-->delete-->list)UserMapper版 -- -------------------------------------------------------- -- 主机: 127.0.0.1 -- 服务器版本: 5.5.36-MariaDB - mariadb.org binary distribution -- 服务器操作系统: Win32 -- HeidiSQL 版本: 8.0.0.4396 --

GZFramwork数据库层《二》单据表增删改查(自动生成单据号码)

运行效果: 使用代码生成器(GZCodeGenerate)生成tb_EmpLeave的Model 生成器源代码下载地址: https://github.com/GarsonZhang/GZCodeGenerate/ 生成方式见上一节: GZFramwork数据库层<一>普通表增删改查     新增一个自定义控件:ucTableUnitDocNo   后台代码同上一节ucTableUnit除了实例化bllBusiness不一样外其他都一样(红色背景标注) using System; using

使用CI操作oracle 10g的单表增删改查

<?php if (!defined('BASEPATH'))    exit('No direct script access allowed'); class UseOra extends CI_Controller{ public function index()    {        echo '欢迎使用测试CI使用Oracle 10g 的功能,您可以在地址栏中使用如下的函数参数:<br>';        echo '=============================

再说“使用CI操作oracle 10g的单表增删改查”

--Control中的UseOra.php <?php if (!defined('BASEPATH'))    exit('No direct script access allowed'); class UseOra extends CI_Controller{ public function index()    {        echo '欢迎使用测试CI使用Oracle 10g 的功能,您可以在地址栏中使用如下的函数参数:<br>';        echo '=======

GZFramwork数据库层《四》单据主从表增删改查

同GZFramwork数据库层<三>普通主从表增删改查   不同之处在于:实例 修改为:   直接上效果:         本系列项目源码下载地址:https://github.com/GarsonZhang/GZFramworkDBDemo/ 生成器源码下载地址:https://github.com/GarsonZhang/GZCodeGenerate/   系列文章 1. GZFramwork数据库层<前言>Demo简介 2. GZFramwork数据库层<前言>D

GZFramwork数据库层《三》普通主从表增删改查

运行结果: 使用代码生成器(GZCodeGenerate)生成tb_Cusomer和tb_CusomerDetail的Model 生成器源代码下载地址: https://github.com/GarsonZhang/GZCodeGenerate/ 生成方式见第一节: GZFramwork数据库层<一>普通表增删改查   生成明细表ORM略有不同: 项目附加结果:   新增一个自定义控件:ucTableMD 界面:   后台代码: using System; using System.Colle

MyBatis单表增删改查--XML实现

MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架.MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装.MyBatis可以使用简单的XML或注解用于配置和原始映射,将接口和Java的POJO(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录. 无论是用过的hibernate,mybatis,你都可以法相他们有一个共同点: 1. 从配置文件(通常是XML配置文件中)得到 sessionfactory. 2.