MyBatis框架学习二

增删改查操作

mapper接口本质就是原来的Dao接口,知识为了方便我们的书写,一个mapper接口对应一个mapper映射文件

将UserMapper更名为UserDao,说明本质

修改对应的mapper映射文件的namespace属性,对应上接口。

编写接口

 1 package com.like.dao;
 2
 3 import com.like.pojo.User;
 4
 5 import java.util.List;
 6
 7 public interface UserDao{
 8     //获取全部的用户
 9     List<User>selectUser();
10
11     //根据id查找用户
12     User electUserById(int id);
13
14     //添加一个用户
15     int addUser(User user);
16
17     //删除用户
18     int deleteUserByID(int id);
19
20     //修改用户
21     int updateUser(User user);
22  }

对应的mapper语句编写

 1 <?xml version="1.0" encoding="UTF-8" ?>
 2 <!DOCTYPE mapper
 3         PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 4         "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 5 <!--mapper标签的namespace对应的Mapper接口的类,报名+类名-->
 6 <mapper namespace="com.like.dao.UserDao">
 7 <!--select标签的id对应映射接口的方法名字    resultType:返回结果的类型   中间就编写sql语句-->
 8 <select id="selectUser" resultType="com.like.pojo.User">
 9 select*from user
10 </select>
11 <select id="selectUserById" resultType="com.like.pojo.User">
12 select*from user where id =#{id}
13 </select>
14
15 <!--我们需要接受一个自定义的对象(引用队形) 需要设置parameterTpye,为参数类型
16       接收这个对象的值,直接使用#{对象字段名}
17 -->
18 <insert id="addUser" parameterType="com.like.pojo.User">
19 inset into user(id,name,pwd)values(#{id},#{name},#{pwd})
20 </insert>
21
22 <delete id="deleteUserByID" parameterType="int">
23 delete from user where id =#{id}
24 </delete>
25
26 <update id="updateUser" parameterType="com.like.pojo.User">
27 updata user set name=#{name},pwd=#{pwd}where id=#{id}
28 </update>
29 </mapper>

测试类

 1 package com.like.dao;
 2
 3 import com.like.dao.UserDao;
 4 import com.like.pojo.User;
 5 import dom.like.utils.MyBatisUtils;
 6 import org.apache.ibatis.session.SqlSession;
 7 import org.apache.ibatis.session.SqlSessionFactory;
 8 import org.junit.Test;
 9 import java.util.List;
10
11 public class UserMapperTest{
12
13   @Test
14   public void selectUser(){
15    //1.拿到sqlSessionFactory对象
16   SqlSessionFactory sqlSessionFactory=MyBatisUtils.getSqlSessionFactory();
17   //2.通过sqlSessionFactory对象openSession()创建一个sqlSession.
18   SqlSession sqlSession =sqlSessionFactory.openSession();
19   //3.通过sqlSession获得mapper对象,参数为映射文件对应的接口类的class队形
20   UserDao mapper =sqlSession.getMapper(UserDao.class);
21   //4.通过mapper对象来执行操作;
22   List<User>users =mapper.selectUser();
23   //获得结果集
24   for (User user : users){
25   System.out.println(user);
26 }
27 sqlSession.close();//关闭sqlSession
28
29 }
30 @Test
31     public void addUser(){
32         User user = new User(4,"qinjiang","123456");
33
34         SqlSessionFactory sqlSessionFactory = MyBatisUtils.getSqlSessionFactory();
35         SqlSession sqlSession = sqlSessionFactory.openSession();
36         UserDao mapper = sqlSession.getMapper(UserDao.class);
37
38         int i = mapper.addUser(user);
39
40         //没有插入成功的原因:没有提交事务;
41         sqlSession.commit(); //提交事务
42         sqlSession.close(); //关闭sqlSession
43
44         if (i>0){
45             System.out.println("插入成功!");
46         }
47
48     }
49
50     @Test
51     public void deleteUserByID(){
52         SqlSession sqlSession = MyBatisUtils.getSqlSessionFactory().openSession();
53         UserDao mapper = sqlSession.getMapper(UserDao.class);
54         int i = mapper.deleteUserByID(4);
55
56         //记得提交事务,否则删除不成功!
57         sqlSession.commit();//提交事务
58         sqlSession.close();//关闭
59
60         if (i>0){
61             System.out.println(i);
62         }
63     }
64
65     @Test
66     public void updateUser(){
67         SqlSession sqlSession = MyBatisUtils.getSqlSessionFactory().openSession();
68         UserDao mapper = sqlSession.getMapper(UserDao.class);
69         User user = new User(1,"李柯","like");
70         mapper.updateUser(user);
71
72         sqlSession.commit();
73         sqlSession.close();
74
75     }
76 }

注意点总结

增改删需要提交事务!

如果出现乱码,现在sql中进行测试,sql没问题,就检查配置文件

jdbc:mysql://localhost:3306/mybatis?
useSSL=true&amp;useUnicode=true&amp;characterEncoding="utf-8"

参数问题

如果时基本数据类型,可以省略,但建议写上    引用类型必须写指定的  包名+类名。

原文地址:https://www.cnblogs.com/like-lry/p/11320291.html

时间: 2024-07-30 20:01:26

MyBatis框架学习二的相关文章

Struts2框架学习(二) Action

Struts2框架学习(二) Action Struts2框架中的Action类是一个单独的javabean对象.不像Struts1中还要去继承HttpServlet,耦合度减小了. 1,流程 拦截器拦截请求,创建代理Action对象,执行方法,返回结果,界面跳转. 拦截器解析请求路径,获取Action的名称,到配置文件中查找action的完整类名,利用反射创建对象. 每请求一次,就创建一个对象,所以action是多例的,也是线程安全的. 2,关系 请求的路径和配置文件的对应关系: 配置文件中包

Android Afinal框架学习(二) FinalActivity 一个IOC框架

框架地址:https://github.com/yangfuhai/afinal 对应的源码: net.tsz.afinal.annotation.view.* FinalActivity FinalActivity是一个基础类,结合注解实现了,依赖注入(view的资源id,常用的监听器), 利用set方式注入 完全注解方式就可以进行UI绑定和事件绑定,无需findViewById和set event Listener 这个过程:initInjectedView>findViewById.set

Mybatis 框架学习

Mybatis 一. 入门 1. JDBC 回顾 (1). 准备数据库 新建 mybatis_learn 数据库 执行 sql 脚本 1 -- ---------------------------- 2 -- Table structure for `Blog` 3 -- ---------------------------- 4 DROP TABLE IF EXISTS `Blog`; 5 CREATE TABLE `Blog` ( 6 `id` int(11) NOT NULL AUTO

Mybatis框架学习03

写在前面 本文接https://www.cnblogs.com/wushenjiang/p/12506992.html,至此mybatis的学习已经基本完成.近一个月会进行Android的冲刺学习,所以将SSM的学习暂且滞后. 高级映射 高级映射主要分为一对一,一对多,多对多,延迟加载等.以下分别进行解释: 一对一查询(resultType实现) 需求 首先我们要提出一个需求,以便我们开展学习.需求:查询订单信息,关联查询创建订单的用户信息. po的编写 这里我们直接继承原订单类,并添加新的属性

MyBatis框架学习(一)

MyBatis介绍 MyBatis本是apache的一个开源项目iBatis,2010年这个项目由apache software foundation迁移到了google code,并改名为MyBatis.2013年11月迁移到Github.iBatis一词来源于"internet"和"abatis"的组合,是一个基于Java的持久层框架.iBatis提供的持久层框架包括SQL Maps和Data Access Objects(DAO). 当我们在DAO层使用jdb

MyBatis框架学习

MyBatis框架 1.MyBatis框架简介 目的(最大的作用):实现sql语句和java代码的分离,替代的是mvc模式中的Dao层,是持久层框架. 搭建方式: 1.配置mybatis全局配置文件: a.固定的文件头,根标签为<configuration></configuration>: b.在根标签内存在多个标签,<settings></settings>:设置日志文件打印内容的标签: <typeAliases></typeAlias

MyBatis框架学习(二)

MyBatis中配置文件相关问题 输入参数 在传统的数据库查询操作中,在sql语句中往往需要一些参数. 1.基本数据类型 输入参数为基本数据类型时,不考虑占位符名称,将输入参数都设置给占位符. xml中配置信息: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "htt

Mybatis基础学习(二)&mdash;开发Dao方式

一.原始Dao开发方式 UserDao.java public interface UserDao{ public User findUserByID(Serializable id); public List<User> findUsersByName(String name); } UserDaoImpl.java public class UserDaoImpl implements UserDao{ //SqlSessionFactory是单例存在,不应该在具体实例中创建,需要外部依赖

Android 学习笔记之AndBase框架学习(二) 使用封装好的进度框,Toast框,弹出框,确认框...

PS:渐渐明白,在实验室呆三年都不如在企业呆一年... 学习内容: 1.使用AbActivity内部封装的方法实现进度框,Toast框,弹出框,确认框...   AndBase中AbActivity封装好了许多方法提供我们去使用,使得在使用的时候更加的方便,只需要传递相关参数即可..省去了我们自己使用基础的函数进行构造...   就好比进度框,Toast框,弹出框,确认框...这些基本的东西都在AndBase的AbActivity封装好了...我们只需要传递参数调用其中内部的方法就可以完成这些视