方式二:mapper代理接口方式

这种方式只需要xml+接口(不用写实体类)但是需要符合三个规范

  • 使用mapper'代理接口方式
  • 在同一目录下(可以创建一个源文件夹,达到类文件和xml文件分类的作用)
  • xml中namespace:命名空间为接口的全限定名(包名+类名)
  • xml的文件名和接口的文件名相同,只是后缀名不同
  • 接口中的方法名和xml中sql的id相同

1.创建一个java工程

2.将mysql的jar,mybatis的jar添加到构建路径中

3.写好配置文件

4.连接到数据库

5.写一个和数据库表对应的pojo类(普通的java对象)

6.写一个接口

 1 package impl;
 2
 3 import java.util.List;
 4
 5 import entity.Login;
 6
 7 public interface LoginImpl {
 8     //方法名要与xml文件中的id的唯一标识符相同
 9     List<Login> selectAll();
10     Login selectbyid(int id);
11     int insertone(Login lg);
12     int updateone(Login lg);
13 }

7.写对应的xml文件

 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
 5 <!-- namespace:命名空间, 用于隔离sql语句 -->
 6 <mapper namespace="impl.LoginImpl">
 7 <!-- id是sql语句的唯一标识符,名字要与 接口中的方法名相同 -->
 8
 9       <select id="selectAll" resultType="Login">
10           select * from t_login
11       </select>
12
13       <select id="selectbyid" parameterType="int" resultType="Login">
14           select *from t_login where id =#{id}
15       </select>
16
17       <insert id="insertone" parameterType="Login" >
18
19           insert into t_login (username,password) values(#{username},#{password})
20       </insert>
21
22       <update id="updateone" parameterType="Login">
23           update t_login set username=#{username},password=#{password} where id = #{id}
24       </update>
25
26
27 </mapper>

8.写测试类

 1 package test;
 2
 3
 4 import java.io.InputStream;
 5 import java.util.List;
 6
 7 import org.apache.ibatis.io.Resources;
 8 import org.apache.ibatis.session.SqlSession;
 9 import org.apache.ibatis.session.SqlSessionFactory;
10 import org.apache.ibatis.session.SqlSessionFactoryBuilder;
11
12 import entity.Login;
13 import impl.LoginImpl;
14
15 public class Login_Test {
16
17
18
19     public static void main(String[] args) throws Exception {
20         // TODO 自动生成的方法存根
21         //读取配置文件
22         String resource = "main_config.xml";
23         InputStream is = Resources.getResourceAsStream(resource);
24         //使用建造者Builder创建sqlsession工厂
25         SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(is);
26         //打开session
27         SqlSession sqlSession = sqlSessionFactory.openSession();
28         System.out.println("数据库已经连接"+sqlSession);
29         //使用mapper代理的方式
30          LoginImpl loginImpl = sqlSession.getMapper(LoginImpl.class);
31          /**
32           * 查询所有
33           * List<Login> list = sqlSession.selectList("selectAll");
34           */
35          List<Login> selectAll = loginImpl.selectAll();
36          System.out.println("---------------查询所有用户------------");
37          for (Login login2 : selectAll) {
38             System.out.println("用户id="+login2.getId()+"\t\t用户名="+login2.getUsername()+"\t用户密码="+login2.getPassword());
39         }
40
41          /**
42           * 通过id查询用户
43           * Login login = sqlSession.selectOne("selectbyid", 3);
44           */
45         System.out.println("-------------通过id查询用户---------------");
46          Login selectbyid = loginImpl.selectbyid(3);
47          System.out.println("通过id查询用户"+selectbyid);
48
49          /**
50           * 插入一条数据
51           * insert = sqlSession.insert("insertone", login2);
52           */
53          System.out.println("-------------插入一条数据-----------");
54          Login login2 = new Login();
55          login2.setUsername("xy");
56          login2.setPassword("315364");
57          int insertone = loginImpl.insertone(login2);
58          System.out.println("插入一条数据成功"+insertone);
59
60          /**
61           * 更新一条数据
62           * sqlSession.update("updateone", login3);
63           */
64          System.out.println("--------------更新一条数据------------");
65         Login login3 = new Login( 3, "333333","dhao");
66         int updateone = loginImpl.updateone(login3);
67         System.out.println("更新一条数据成功"+updateone);
68         //提交数据到数据库
69         sqlSession.commit();
70         //关闭会话
71         sqlSession.close();
72
73
74
75
76
77     }
78
79 }

9.项目的结构

10.mybatis的主配置文件  文件名:main_config.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 <!--把鼠标移到configuration标签上面会出现以下信息:原因是因为引入了dtd约束文件 Element : configuration
 7 Copyright 2009-2016 the original author or authors. Licensed under the Apache License, Version 2.0
 8  (the "License"); you may not use this file except in compliance with the License. You may obtain a copy
 9  of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or
10  agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS,
11  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License
12  for the specific language governing permissions and limitations under the License.
13
14 Content Model : (properties?, settings?, typeAliases?, typeHandlers?, objectFactory?,
15  objectWrapperFactory?, reflectorFactory?, plugins?, environments?, databaseIdProvider?, mappers?)  -->
16
17  <!-- 引入配置文件 属性标签 -->
18 <properties resource="mapper/main_config.properties"></properties>
19
20 <!-- 别名    在单个配置文件中 写别名即可-->
21 <typeAliases>
22     <typeAlias type="entity.Login" alias="login"/>
23     <!-- 自动生成包下面的所有类的别名,别名就是类名,并且首字母大小写都可以使用 -->
24     <package name="impl"/>
25 </typeAliases>
26 <!-- 使用哪个小环境  default就等于哪个小环境的id -->
27     <environments default="development">
28
29         <environment id="development">
30             <!-- jdbc事务管理 -->
31             <transactionManager type="JDBC"></transactionManager>
32             <!-- 数据库连接池 -->
33             <dataSource type="POOLED">
34                 <property name="driver" value="${driver}"/>
35                 <!-- localhost可以用127.0.0.1或者本机的ip地址表示 -->
36                 <property name="url" value="${url}"/>
37                 <property name="username" value="${username}"/>
38                 <property name="password" value="${password}"></property>
39             </dataSource>
40         </environment>
41
42         <environment id="mysql">
43             <!-- jdbc事务管理 -->
44             <transactionManager type="JDBC"></transactionManager>
45             <!-- 数据库连接池 -->
46             <dataSource type="POOLED">
47                 <property name="driver" value="${driver}"/>
48                 <!-- localhost可以用127.0.0.1或者本机的ip地址表示 -->
49                 <property name="url" value="${url}"/>
50                 <property name="username" value="${username}"/>
51                 <property name="password" value="${password}"></property>
52             </dataSource>
53         </environment>
54     </environments>
55
56     <!-- 引入单个映射配置文件  *号表示0个或者多个 -->
57     <mappers>
58         <mapper resource="mapper/login_mapper.xml"/>
59         <!-- <package name="impl"/> -->
60     </mappers>
61 </configuration>

11.主配置文件的属性文件

转载于:https://www.cnblogs.com/xyblogs/p/8947494.html

mybitis实现增,删,改,查,模糊查询的两种方式:(2)相关推荐

  1. python学生姓名添加删除_python-函数-实现学生管理系统,完成对学员的增,删,改,查和退出学生管理系统。...

    实现学生管理系统,完成对学员的增,删,改,查和退出学生管理系统. 要求1:使用一个list用于保存学生的姓名. 要求2:输入0显示所有学员信息,1代表增加,2代表删除,3代表修改,4代表查询,exit ...

  2. 表单的增 删 改 查

    django单表操作 增 删 改 查 一.实现:增.删.改.查 1.获取所有数据显示在页面上 model.Classes.object.all(),拿到数据后,渲染给前端;前端通过for循环的方式,取 ...

  3. properties(map)增.删.改.查.遍历

    import java.util.Map; import java.util.Properties; import java.util.Set;/*** properties(map)增.删.改.查. ...

  4. Java里模糊查询的英文_MyBatis实现模糊查询的几种方式

    在学习MyBatis过程中想实现模糊查询,可惜失败了.后来上百度上查了一下,算是解决了.记录一下MyBatis实现模糊查询的几种方式. 数据库表名为test_student,初始化了几条记录,如图: ...

  5. MyBatis实现模糊查询的三种方式

    MyBatis实现模糊查询的三种方式 准备 模糊查询 方式一 方式二 方式三 由于#{}是占位符本身,自带单引号,所以在模糊查询时需要一些技巧. 准备 数据库表 bean 模糊查询 以查询出所有用户名 ...

  6. PySpark︱DataFrame操作指南:增/删/改/查/合并/统计与数据处理

    笔者最近需要使用pyspark进行数据整理,于是乎给自己整理一份使用指南.pyspark.dataframe跟pandas的差别还是挺大的. 文章目录 1.-------- 查 -------- -- ...

  7. Mybatis关联查询的两种方式

    首先要了解对象的三种关联方式 *数据库表的关联关系有三种,一对一,一对多,多对多 一对一   是通过在任意一方的主键,引入对方主键作为外键来实现的,就是说主键与外键为同一字段 一对多   是通过在&q ...

  8. mybatis一对多查询的两种方式

    user 和order 对象 package com.itheima.mybatis.pojo;import java.io.Serializable; import java.util.Date;p ...

  9. mysql里面模糊查询sql_总结Mysql 模糊查询的几种方式

    总结下开发过程中用过模糊查询功能所用的一些东西,还有就是在建表时一定要考虑完善在建表,否则后期数据量大了在改表会非常的麻烦,请不要为了能够尽快用表而匆匆创建.在这也是给自己一个警醒,以后不再犯. #s ...

最新文章

  1. CI框架常用函数(AR数据库操作的常用函数)
  2. 更简单的调试Release版本Optimize code的.NET程序集
  3. tkinter绑定鼠标滚轮滚动事件
  4. 线程高级应用-心得9-空中网的三道面试题,考察应试者的线程掌握的深度
  5. 编译ARM平台的 QtEmbedded 的MySQL插件和移植MySQL到ARM开发板
  6. 【ASP.NET Web API教程】2.3.5 用Knockout.js创建动态UI
  7. php怎么引用表单元素,表单元素:最全的各种html表单元素获取和使用方法总结...
  8. python3 gui协程_Python3进阶-协程
  9. webstrom中打包的详细_webpack打包体积优化
  10. X86 CPU特性之(2)-eagerfpu
  11. java实战项目_我靠这份Java知识体系和6个大厂实战项目,拿到阿里年薪50W+offer
  12. sama5d36 OUT0-OUT3 对应关系 带光模块的系统
  13. 复制粘贴不连续单元格_表格筛选状态下怎么复制粘贴数据
  14. 安装SQLServer2008后Windows防火墙上的端口开放
  15. c语言局域网聊天,局域网聊天的程序(C++版)
  16. Xiao Shenyang's classic lines
  17. 使用accton进行进程会计处理
  18. Visual Paradigm 如何清除系统代理设置
  19. 正负数在计算机中的存储方式
  20. java并发编程:lock_编程的第五个十年:J代表Java

热门文章

  1. html评论置顶功能,微信公众号精选留言评论怎么置顶显示?功能在哪里设置?...
  2. angular做语言切换_angular多语言配置详解
  3. 计算机科学与技术博士论文,计算机科学与技术系博士学位论文答辩.PDF
  4. Leetcode1143. 最长公共子序列(c#)
  5. ioc框架 java_从零开始实现一个简易的Java MVC框架(三)--实现IOC
  6. OpenCV学习——形态学
  7. Deep Learning Toolkits 的比较(转)
  8. IDEA提交项目到SVN
  9. How to use external classes and PHP files in Laravel Controller?
  10. Android 4.4 KitKat, the browser and the Chrome WebView