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

方式二: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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/254752.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C语言中的静态函数的作用

转载 在C语言中为什么要用静态函数(static function)&#xff1f;如果不用这个static关键字&#xff0c;好象没有关系。那么&#xff0c;用了static以后&#xff0c;有什么作用呢&#xff1f;我们知道&#xff0c;用了static的变量&#xff0c;叫做静态变量&#xff0c;其意义是…

c++11 原子类型与原子操作

1、原子类型和原子操作&#xff08;1&#xff09;类型&#xff08;2&#xff09;操作&#xff08;3&#xff09;详述● 原子类型只能从其模板参数类型中进行构造&#xff0c;标准不允许原子类型进行拷贝构造、移动构造&#xff0c;以及使用operator等● atomic_flag 是一个原子…

依弗科(上海)机电设备有限公司

机器人喷涂倒计时&#xff0c;上帝帮我实现愿望吧 阿门 &#xfeff;&#xfeff;&#xfeff;&#xfeff;

CoDeSys

&#xfeff;&#xfeff;CoDeSys是全球最著名的PLC内核软件研发厂家德国的3S&#xff08;SMART&#xff0c;SOFTWARE&#xff0c;SOLUTIONS&#xff09;公司出的一款与制造商无关的IEC 61131-1编程软件。CoDeSys 支持完整版本的IEC61131标准的编程环境&#xff0c;支持标准的六…

使用halcon结合机械XY轴对相机进行9点标定

小哥哥小姐姐觉得有用点个赞呗&#xff01; 先在halcon中计算仿射变换矩阵并验证 //在图像中找到的模板中心位置 PicX:[1680.721,2065.147,911.499,526.798,1290.920,1285.731,1300.953] PicY:[968.321,964.366,976.283,980.035, 587.055,394.727,1355.487] //与图像中查找…

Ubuntu Linux 提出新的发布模式——测试周

2019独角兽企业重金招聘Python工程师标准>>> 导读开源技术项目最大的优势之一就是社区的每个人都可以自由地提出想法&#xff0c;如果获得社区支持&#xff0c;它可以变成现实。著名的 Ubuntu 开发人员 Simon Quigley 就提出了一个可能改变 Ubuntu Linux 开发过程的…

【转】小白级的CocoaPods安装和使用教程

原文网址&#xff1a;http://www.jianshu.com/p/e2f65848dddc 百度有很多CocoaPods的安装教程.第一次看的时候,确实有点摸不透的感觉.经过思考,一步一步来实践,前后花了三十几分钟,才顺利使用..所以想了想,我还是写一个小白级的教程吧.细到每一个细节都说明. 让你不用10分钟解决…

常见错误总结

少打头文件 少打using namespace std; 命名冲突&#xff0c;全局变量与局部变量命名一致&#xff0c;导致使用的值不是期望值 边读边写&#xff0c;导致改后读&#xff0c;覆盖写入的值 长整数移位溢出&#xff0c;1<<63是错误的&#xff0c;应该写成1ll<<63 循环变…

HALCON相机标定相机内参相机外参

目录相机标定1.相机标定是什么2.怎么使用halcon进行相机内外参标定&#xff1f;&#xff08;1&#xff09;搭建硬件1.**相机连好电脑&#xff0c;用相机厂家软件打开相机&#xff0c;检查一下相机是否正常。**2.**接下来使用halcon连接相机**&#xff08;2&#xff09;开始标定…

angular change the url , prevent reloading

http://stackoverflow.com/questions/14974271/can-you-change-a-path-without-reloading-the-controller-in-angularjs $location.search({vln: $scope.vln_id}, false);会改变url中 &#xff1f; 后面的 搜索参数&#xff0c;但是controller不会重新实例化。angular 官方文档…

C#圆形卡尺测量程序基于halcon

废话不多说上源码 觉得帖子有用给点个赞哈 先来个效果图 下边的是源码&#xff0c;自己新建一个文件粘贴进去&#xff0c;包含到您现在的项目 中。这串源码后边是使用方法。 using System; using System.Collections.Generic; using System.Linq; using System.Text; usin…

科维PLC运行时系统ProConOS embedded CLR 2.2 特定应用

ProConOS embedded CLR是新型的开放式标准化PLC运行时系统&#xff0c;符合IEC 61131标准&#xff0c;可执行不同的自动化任务&#xff08;PLC、PAC、运动控制、CNC、机器人和传感器&#xff09;。   通过采用国际标准的微软中间语言&#xff08;依据IEC/ISO 23271标准为MSIL…

set()与get()详细解答(C#)

这几天在搬砖时候用到了set()与get()&#xff0c;同事问了我一些问题&#xff0c;我打算在博客中总结一下。 觉得帮助到了您&#xff0c;帮我点个赞哦。 属性访问器 其实说白了就是操作一个属性&#xff0c;更通俗一点说就是对一个变量的取值与赋值。 先来看get() get 访问…

如何判断一条曲线是否自己相交?

今天看到群里有人在问这个问题&#xff0c;想了一个解决办法。 我们首先作假设&#xff0c;如果一条曲线有交点&#xff0c;那么它就是相交的对吧。可能大家想的都是这样&#xff0c;就开始找各种方法去识别交点。 我们换个角度想一下&#xff1a;是不是我们判断这条曲线是否带…

hdu 5813 Elegant Construction

水题 题意&#xff1a;有n个城市&#xff0c;给你每个城市能到达城市的数量&#xff0c;要你构图&#xff0c;输出有向边&#xff0c;要求无环&#xff0c;输出任意的解 例&#xff1a; Sample Input 332 1 021 143 1 1 0Sample OutputCase #1: Yes21 22 3Case #2: NoCase #3: …

halcon相机标定及图像矫正(代码)

侵删 1 halcon相机标定和图像矫正 对于相机采集的图片&#xff0c;会由于相机本身和透镜的影响产生形变&#xff0c;通常需要对相机进行标定&#xff0c;获取相机的内参或内外参&#xff0c;然后矫正其畸变。相机畸变主要分为径向畸变和切向畸变&#xff0c;其中径向畸变是由透…

函数参数的传递问题(一级指针和二级指针)

函数参数的传递问题&#xff08;一级指针和二级指针&#xff09; [转]原以为自己对指针掌握了&#xff0c;却还是对这个问题不太明白。请教&#xff01; 程序1&#xff1a; void myMalloc(char *s) //我想在函数中分配内存,再返回 { s(char *) malloc(100); } void …

Win7下使用U盘安装linux Ubuntu16.04双系统图文教程

Win7下使用U盘安装linux Ubuntu16.04双系统图文教程 Ubuntu&#xff08;友帮拓、优般图、乌班图&#xff09;是一个以桌面应用为主的开源GNU/Linux操作系统&#xff0c;Ubuntu 是基于DebianGNU/Linux&#xff0c;支持x86、amd64&#xff08;即x64&#xff09;和ppc架构&#xf…

CoDeSys的前世今生

&#xfeff;&#xfeff;工作以及网上看到不少人说&#xff0c;CoDeSys和西门子step7&#xff0c;在德国都属于标准过程&#xff0c;牛逼的小朋友都可以用其编程&#xff0c;不知真假&#xff0c;相信无风不起浪&#xff0c;多少有些依据&#xff0c;看看国內清一色的日系编程…

Eclipse中执行Ant脚本出现Could not find the main class的问题及解

试过了&#xff1a;https://blog.csdn.net/bookroader/article/details/2300337 但是不管用&#xff0c;偶然看到这篇没有直接关系的 https://blog.csdn.net/jiuyueguang/article/details/9350753 联想了一下。项目是JDK1.5&#xff0c;Eclipse是JDK1.8启动&#xff0c;所以在R…