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

时间: 2024-08-28 10:25:48

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

Python---MySQL数据库之四大操作(增 删 改 查)

一.对数据库,表,记录---四大操作(增 删 改 查) 1.操作数据库 (1)对数据库(文件夹):进行增加操作 Create  database  库名; 例:  Create  database  db7 ; 查询库: show  databases; 结果: +-----------------------------+ | Database                   | +----------------------------+ | information_schema | |

MongoDB的使用学习之(七)MongoDB的聚合查询(两种方式)附项目源码

先来张在路上-- 此项目是用Maven创建的,没有使用Maven的,自己百度.谷歌去:直接用Junit测试就行,先执行里面的save方法,添加10000条测试数据提供各种聚合查询等. 废话不多说,上干货-- 一.MongoDB数据库的配置(mongodb.xml) 以下是我自己的配置,红色字体请改为自己本机的东东,你说不懂设置端口,不会创建数据库名称,不会配置用户名密码,那有请查阅本系列的第4节(MongoDB的使用学习之(四)权限设置--用户名.密码.端口==),你说懒得设置,那就@#¥%--

Hibernate 带参数查询的两种方式

1.使用?通配符 public User validate(String userName, String password) { String hql = "from User u where u.userName = ? and u.password = ?"; User user = null; List<User> list = ht.find(hql, new Object[]{userName, password}); if (list.size()!=0){

ADO.NET 增 删 改 查

ADO.NET:(数据访问技术)就是将C#和MSSQL连接起来的一个纽带 可以通过ADO.NET将内存中的临时数据写入到数据库中 也可以将数据库中的数据提取到内存中供程序调用 ADO.NET所有数据访问技术的基础 连接数据库基本格式:需要两个类1.数据库连接类 SqlConnection2.数据库操作类 SqlCommand 1.连接数据库写连接字符串,立马就要想到有4点要写完,1.连接哪台服务器,2.连接哪个数据库,3.连接用户名,4.密码string sql = "server=.(服务器i

五 Mybatis一对一关联查询的两种方式(基于resultType&amp;基于resultMap)

关联查询: 一个用户对应多个订单,一个订单只有一个用户 订单关联用户:两种方式 一:基于resultTYpe是一个与表关系一样的pojo实现 主表订单,从表用户 首先要有一个与关联查询表关系一样的pojo 在代理接口添加方法,配置代理映射 最后进行单元测试  二 : 基于resultMap(推荐) pojo:在订单类中放置用户类对象,并且提供对应的setget方法  在ResultMap中配置两表关系 基于resultMap配置关联查询的方法 单元测试: 原文地址:https://www.cnb

SpringBoot集成Mybatis实现多表查询的两种方式(基于xml)

 下面将在用户和账户进行一对一查询的基础上进行介绍SpringBoot集成Mybatis实现多表查询的基于xml的两种方式.   首先我们先创建两个数据库表,分别是user用户表和account账户表     user表:  account表:  然后创建实体类        **第一种通过创建子类的方式查询                             需求:查询所有的用户基础信息以及其所属的账户中的金额     1.创建想要得到多表查询数据的实体类(子类)            

数据库基础学习4--表格的 增 删 改 查(简单查询与高级查询)

一.增 C:create 增加,创建,向数据库里面添加数据. insert into Fruit values('K009','苹果',3.0,'高青',90,'') insert into Fruit(Ids,Name,Price,Source,Numbers) values('K010','苹果',3.0,'高青',90) 二.改 U:update修改,从数据库表里面修改数据. update Fruit set Source='烟台' where Ids='K001' 三.删 D:delet

数据操作:增 删 改 查

1.创建数据库create database 库名gouse 库名go 2.创建表 create table 表名 ( 列名 类型, 列名 类型, 列名 类型 ) 例子: create table one( daihao varchar(10), shuming varchar(50), zuozhe varchar(10), chubanshe varchar(50), shijian datetime) 3.添加行记录 insert into 表名(列名,列名,列名) values('值',

js数组的管理[增,删,改,查]

今天在设计表单的时候遇到对数组的一些处理的问题,比如说怎么创建一个数组,然后牵扯到数组的增删改查的方法.请看API FF: Firefox, N: Netscape, IE: Internet Explorer 方法 描述 FF N IE concat() 连接两个或更多的数组,并返回结果. 1 4 4 join() 把数组的所有元素放入一个字符串.元素通过指定的分隔符进行分隔. 1 3 4 pop() 删除并返回数组的最后一个元素 1 4 5.5 push() 向数组的末尾添加一个或更多元素,