当前位置: 首页 > 编程日记 > 正文

学习Mybatis与mysql数据库的示例笔记

目录结构:

pom.xml文件

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <project xmlns="http://maven.apache.org/POM/4.0.0"
 3          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 4          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
 5     <modelVersion>4.0.0</modelVersion>
 6 
 7     <groupId>xfj.mac</groupId>
 8     <artifactId>MyBatisOne</artifactId>
 9     <version>1.0-SNAPSHOT</version>
10     <packaging>pom</packaging>
11 
12     <dependencies>
13         <dependency>
14             <groupId>junit</groupId>
15             <artifactId>junit</artifactId>
16             <version>4.12</version>
17         </dependency>
18            <!-- mybatis的依赖配置-->
19         <dependency>
20             <groupId>org.mybatis</groupId>
21             <artifactId>mybatis</artifactId>
22             <version>3.4.5</version>
23         </dependency>
24         <dependency>
25             <groupId>mysql</groupId>
26             <artifactId>mysql-connector-java</artifactId>
27             <version>5.1.28</version>
28         </dependency>
29     </dependencies>
30 
31     <build>
32         <plugins>
33             <plugin>
34                 <artifactId>maven-compiler-plugin</artifactId>
35                 <configuration>
36                     <target>1.8</target>
37                     <source>1.8</source>
38                     <encoding>UTF-8</encoding>
39                 </configuration>
40             </plugin>
41         </plugins>
42     </build>
43 
44 </project>

mybatis.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 
 5 <configuration>
 6     <!-- 类型别名,意思就是给实体在使用的过程中起一个别名引用 -->
 7     <typeAliases>
 8         <!-- 方式一:给每一个实体类定义一个别名,通过alias制定别名 -->
 9         <!--<typeAlias type="edu.nf.ch01.entity.Users" alias="user"/>-->
10 
11         <!-- 方式二:直接给实体所在的包来指定别名,那么别名就是实体的类名,
12                     并将首字母变为小写-->
13         <package name="xfj.mybatis.entity"/>
14     </typeAliases>
15 
16     <!-- environments用于配置数据源环境,可以同时指定多个数据源环境,
17          通过default属性来指定默认使用的数据源,对应的就是environment的id属性-->
18     <environments default="mysql">
19         <!-- 每一个environment都是一个独立的数据源环境配置,id指定唯一标识-->
20         <environment id="mysql">
21             <!-- 指定为使用本地事务,也就是JDBC事务 -->
22             <transactionManager type="JDBC"/>
23             <!-- mybatis本身就内置一个连接池,可以直接使用 -->
24             <dataSource type="POOLED">
25                 <!-- 配置连接信息 -->
26                 <property name="driver" value="com.mysql.jdbc.Driver"/>
27                 <property name="url" value="jdbc:mysql://192.168.10.17:3306/mac_demo?useUnicode=true&amp;characterEncoding=utf-8&amp;"/>
28                 <property name="username" value="root"/>
29                 <property name="password" value="123456"/>
30             </dataSource>
31         </environment>
32     </environments>
33 
34     <!-- 指定mapper配置文件的相对路径 -->
35     <mappers>
36         <mapper resource="mapper/UserDao.xml"/>
37     </mappers>
38 </configuration>

userDao.xml

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!-- mapper指定要映射的Dao接口的完整类名,通过namespace属性指定-->
<mapper namespace="xfj.mybatis.dao.UserDao"><!-- 通过insert节点来映射UserDao中的saveUser方法,id指定接口中的方法名,parameterType指定参数的类型,这里直接引用在mybatis.xml中定义的别名--><!-- 在<insert>标签内部编写相应的sql语句,并指定sql参数,sql参数使用#{属性名}来获取对象中的属性值--><insert id="insertUser" parameterType="user">INSERT INTO MAC_USER VALUES(#{userId},#{userName},#{phone})</insert><!--&lt;!&ndash; 如果parameterType是Map类型,那么#{}中的参数对应的是map的key &ndash;&gt;<insert id="saveUser2" parameterType="java.util.Map">INSERT INTO USER_INFO VALUES(#{uid},#{tel},#{uname})</insert>&lt;!&ndash; 映射修改语句 &ndash;&gt;<update id="updateUser" parameterType="users">UPDATE USER_INFO SET U_NAME = #{userName} WHERE U_ID = #{uid}</update>
--><!-- &lt;!&ndash; 映射删除语句parameterType指定为String类型,也可以是其他的基本数据类型注意:当参数只有一个,并且不是一个实体对象的时候,那么#{}中的变量名可以任意&ndash;&gt;--><delete id="deleteUser" parameterType="user">DELETE FROM MAC_USER WHERE user_id = #{userId}</delete></mapper>

User.java

 1 package xfj.mybatis.entity;
 2 
 3 public class User {
 4 
 5     private Integer userId ;
 6 
 7     private String userName ;
 8 
 9     private String phone ;
10 
11     public Integer getUserId() {
12         return userId;
13     }
14 
15     public void setUserId(Integer userId) {
16         this.userId = userId;
17     }
18 
19     public String getUserName() {
20         return userName;
21     }
22 
23     public void setUserName(String userName) {
24         this.userName = userName;
25     }
26 
27     public String getPhone() {
28         return phone;
29     }
30 
31     public void setPhone(String phone) {
32         this.phone = phone;
33     }
34 }

UserDao.java

package xfj.mybatis.dao;import xfj.mybatis.entity.User;public interface UserDao {void insertUser(User user) ;void deleteUser(Integer userId) ;}

UserDaoImpl.java

package xfj.mybatis.dao.impl;import org.apache.ibatis.session.SqlSession;
import xfj.mybatis.dao.UserDao;
import xfj.mybatis.entity.User;
import xfj.mybatis.utils.MybatisUtl;public class UserDaoImpl implements UserDao {SqlSession session =  MybatisUtl.getSqlSession() ;@Overridepublic void insertUser(User user) {//SqlSession session =  MybatisUtl.getSqlSession() ;try {//执行保存操作session.getMapper(UserDao.class).insertUser(user);}catch(RuntimeException e){e.printStackTrace();//事务回滚
            session.rollback();}finally{//关闭session
            session.close();}}@Overridepublic void deleteUser(Integer userId) {try {//执行删除操作session.getMapper(UserDao.class).deleteUser(userId);}catch (RuntimeException e){e.printStackTrace();session.rollback();}finally {session.close();}}
}

MybatisUtil.java

package xfj.mybatis.utils;import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;import java.io.IOException;
import java.io.InputStream;public class MybatisUtl {/*定义SqlSessionFactory ,用来创建实例化sessionFactory*/private static SqlSessionFactory sqlSessionFactory ;static {try {//通过mybatis核心额配置文件,并创建一个输入流用来读取xml文件InputStream is =  Resources.getResourceAsStream("mybatis.xml") ;//创建一个SqlSessionFactoryBuilder构建器来实例化一个SqlSessionFactory,//build方法传入一个输入流来解析配置文件,从而创建SqlSessionFactorysqlSessionFactory =  new SqlSessionFactoryBuilder().build(is) ;} catch (IOException e) {e.printStackTrace();throw new RuntimeException("mybatisUtil error!!") ;}}//创建一个获取sqlsession的静态方法public static SqlSession getSqlSession(){return sqlSessionFactory.openSession(true) ;}public static void main(String[] args) {System.out.println(getSqlSession());}}

UserDaoTest.java测试类:

package xfj.mybatis.test;import org.junit.Test;
import xfj.mybatis.dao.UserDao;
import xfj.mybatis.dao.impl.UserDaoImpl;
import xfj.mybatis.entity.User;public class UserDaoTest {/*@Testpublic void insertUser(){User user1 = new User() ;user1.setUserId(13);user1.setUserName("恭喜");user1.setPhone("1265416989");userDao.insertUser(user1);}*/@Testpublic void deleteUser(){UserDao userDao = new UserDaoImpl() ;//User user = new User() ;userDao.deleteUser(4);}
}

mybatis入门学习笔记,comeon

转载于:https://www.cnblogs.com/aa1314/p/8618602.html

相关文章:

Linux环境编程--进程通信

实验内容 编写程序实现进程的管道通信。用系统调用pipe( )建立一管道&#xff0c;二个子进程P1和P2分别向管道各写一句话&#xff1a;Child 1 is sending a message!Child 2 is sending a message! 父进程从管道中读出二个来自子进程的信息并显示&#xff08;要求先接收P1&…

你的编程能力从什么时候开始突飞猛进的?

如果提到程序员&#xff0c;很多人的印象是&#xff1a;呆板、木讷、不懂浪漫。如果提到代码&#xff0c;很多人的印象是&#xff1a;枯燥、繁琐、很难理解。但其实程序员的浪漫是普通人想象不到的&#xff0c;有一个网友为了追女生&#xff0c;以自己和女生为主角写了一个战棋…

超级 App 手机百度云端架构设计与个性化推荐

2015 年 6 月 28 日下午&#xff0c;百度与 InfoQ 携手举办了手机百度“云和端技术实践”沙龙活动。这是手机百度首次公开超级 App 背后的技术知识。活动分云端和客户端技术两个会场同时举办&#xff0c;吸引了众多技术爱好者前来学习交流。现场人数爆满&#xff0c;气氛热烈。…

Scala和范畴论 -- 对Monad的一点认识

背景 所有一切的开始都是因为这句话&#xff1a;一个单子&#xff08;Monad&#xff09;说白了不过就是自函子范畴上的一个幺半群而已&#xff0c;有什么难以理解的。第一次看到这句话是在这篇文章&#xff1a;程序语言简史(伪)。这句话出自Haskell大神Philip Wadler&#xff0…

Linux环境编程--linux中的perror、exit、_exit、wait 和 waitpid

perror&#xff1a;#include<stdio.h> #include<stdlib.h>定义函数 void perror(const char *s); perror ("open_port");函数说明 perror ( )用 来 将 上 一 个 函 数 发 生 错 误 的 原 因 输 出 到标 准 错误 (stderr) 。参数 s 所指的字符…

DeepMind 打造 AI 游戏系统,可以玩扑克、国际象棋、围棋等,战斗力爆表

编译 | 禾木木 出品 | AI科技大本营&#xff08;ID:rgznai100&#xff09; 谷歌母公司 Alphabet 的人工智能实验室 DeepMind 长期以来一直投资于游戏人工智能系统。实验室的理念是&#xff0c;游戏虽然缺乏明显的商业应用&#xff0c;但却是认知和推理能力的独特相关挑战。这使…

WPF-动态加载

添加一个UserControl&#xff0c;命名为BusyIndicator&#xff0c;view为空&#xff0c;在其.cs文件中定义一个类 1 /// <summary> 2 /// 动态实体 3 /// </summary> 4 public class AnimationObject 5 { 6 publ…

ORA-06502 when awr report produce

最近在生成一套系统的AWR报告时出现了如下报错&#xff1a;ORA-06502: PL/SQL: numeric or value error: character string buffer too small&#xff0c;然后生成AWR报告的过程就终止了&#xff0c;查看生成的AWR报告&#xff0c;发现报告时不完整的&#xff0c;AWR报告到Comp…

进程间通信学习小结(共享内存)

要使用共享内存&#xff0c;应该有如下步骤&#xff1a;1.开辟一块共享内存 shmget()2.允许本进程使用共某块共享内存 shmat()3.写入/读出4.禁止本进程使用这块共享内存 shmdt()5.删除这块共享内存 shmctl()或者命令行下ipcrm 共享内存可以说是最有用的进程间通信方式&#xff…

[ObjectiveC]NSDATA, NSDICTIONARY, NSSTRING互转

2019独角兽企业重金招聘Python工程师标准>>> NSDATA-->NSDICTIONARY NSDictionary *dict [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingAllowFragments error:nil]; NSDICTIONARY-->NSDATA NSData *data [NSJSONSerialization dat…

如流智会2021:技术结合场景 让企业知识懂员工

12月10日&#xff0c;“如流智会2021智能进化”在京举行&#xff0c;学界专家业界大咖云集荟聚&#xff0c;共商企业智能化转型之道。会上&#xff0c;百度集团副总裁、百度集团首席信息官&#xff08;CIO&#xff09;李莹表示&#xff1a;“智能经济时代&#xff0c;智能组织是…

WSFC 仲裁模型选择

今天我们再来详细讨论下关于WSFC的仲裁模型&#xff0c;主要仲裁模型的优缺点&#xff0c;应该如何去思考选择最佳合适方案WSFC引入仲裁&#xff0c;主要有两个目的跟踪群集当前运作票数是否符合仲裁模型协定&#xff0c;如果低于最少允许节点&#xff0c;则决定关闭群集&#…

关于进程间通信的学习心得

进程&#xff1a;进程是指独立地址空间的指令序列进程的五种状态&#xff1a;新建&#xff0c;就绪&#xff0c;运行&#xff0c;睡眠&#xff0c;僵死进程间通信&#xff1a;是不同进程之间进行一些"接触"&#xff0c;这种接触有简单&#xff0c;有复杂。机制不同&a…

Go modules基础精进,六大核心概念全解析(上)

Go 语言做开发时&#xff0c;路径是如何定义的&#xff1f;Go Mudules又为此带来了哪些改变&#xff1f;本文将会全面介绍Go Modules六大核心概念&#xff0c;包括了设计理念与兼容性原则等&#xff0c;掌握这些技术点对于管理和维护Go 模块有重要价值。 在Go Modules 的前世今…

PARAMETERS 指令

语法: PARAMETERS <p> [DEFAULT <f>] [LOWER CASE] [OBLIGATORY] [AS CHECKBOX] [RADIOBUTTON GROUP <rad>] 实例: PARAMETERS: NAME(8), AGE TYPE I, BIRTH TYPE D. OBLIGATORY:强制要求输入, 屏幕上会出現一个“√” , 使用者必须要输入才可。 AS C…

阿里发布AliGenie2.0系统,“百箱大战”用上视觉武器

天猫精灵X1的升级版X2没有预期出现&#xff0c;而人机交互系统AliGenie升级到最新的2.0版本&#xff0c;功能强大。 3月22日&#xff0c;阿里巴巴人工智能实验室总经理浅雪&#xff08;陈丽娟&#xff09;发布AliGenie2.0系统&#xff0c;它最大的改进是在1.0的基础上增加了视觉…

Centos5.6 VNC安装配置【无错版】

不严格按本步骤就会出现VNC桌面花屏&#xff0c;就是桌面分离为一层一层的。。。 ---------------------------------------- 先装X window http://blog.csdn.net/21aspnet/article/details/6997549 ---------------------------------------- Centos5.6 VNC安装配置 一、检查是…

关于IOS的屏幕适配(iPhone)——资源适配

IOS的屏幕适配几乎不需要大量的代码操作&#xff0c;更多的时间我们只是动动鼠标选择一下就搞定。可以苹果在这方面做的还是比较人性的&#xff0c;解放了开发者。 首先来说说Iphone这几种屏&#xff08;由于最近做的是iPhone APP还未涉及到iPad&#xff0c;将来涉及到iPad时会…

Go modules基础精进,六大核心概念全解析(下)

Go 语言做开发时&#xff0c;路径是如何定义的&#xff1f;Go Mudules又为此带来了哪些改变&#xff1f;本文将会全面介绍Go Modules六大核心概念&#xff0c;包括了设计理念与兼容性原则等&#xff0c;掌握这些技术点对于管理和维护Go 模块有重要价值。 在上篇中&#xff0c;我…

京东区块链白皮书解读, 做“链接器”,一次技术宣言

前天&#xff0c;京东对外发布了《京东区块链技术白皮书(2018)》。 昨天&#xff0c;京东金融发布了旨在帮助中小银行提升零售信贷效率的产品“北斗”。目前&#xff0c;“北斗”已经接入包括江苏银行、南京银行、包商银行在内的近30家银行。京东金融还与近30家商业银行共同发起…

xauth: (stdin):1: bad display name LSPPC-Lenny:1 in add command

启动vnc4server之后出现如下错误提示&#xff1a;LSPPC-Lenny:~# vnc4serverxauth: (stdin):1: bad display name "LSPPC-Lenny:1" in "add" command New ‘LSPPC-Lenny:1 (root)’ desktop is LSPPC-Lenny:1 Starting applications specified in /root/…

使用 Python 和 OpenCV 构建 SET 求解器

作者 | 小白来源 | 小白学视觉小伙伴们玩过 SET 吗&#xff1f;SET 是一种游戏&#xff0c;玩家在指定的时间竞相识别出十二张独特纸牌中的三张纸牌&#xff08;或 SET&#xff09;的模式。每张 SET 卡都有四个属性&#xff1a;形状、阴影/填充、颜色和计数。下面是一个带有一些…

Delphi XE5 常用功具与下载

1.Delphi XE5 正式版http://altd.embarcadero.com/download/radstudio/xe5/delphicbuilder_xe5_win.isohttp://altd.embarcadero.com/download/radstudio/xe5/delphicbuilder_xe5_upd1_win.iso2. cnpack 助手工具http://www.cnpack.org/download/unstable/CnWizards_1.0.1.665_…

maven学习(4)-Maven 构建Web 项目

紧接着上一节(3)&#xff0c;现在maven新建web项目&#xff0c;user-web。模拟一个用户登录的需求&#xff1a; 工程结构&#xff1a; pom.xml: <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance&qu…

如何查看linux版本

1. 查看内核版本命令&#xff1a; 1) [rootq1test01 ~]# cat /proc/version Linux version 2.6.9-22.ELsmp (bhcompilecrowe.devel.redhat.com) (gcc version 3.4.4 20050721 (Red Hat 3.4.4-2)) #1 SMP Mon Sep 19 18:00:54 EDT 2005 2) [rootq1test01 ~]# uname -a …

存储过程由结构表生成表

结构表 CREATE TABLE JGTB5001( ZDM VARCHAR2(30 BYTE), HZM VARCHAR2(100 BYTE), LX VARCHAR2(50 BYTE), JD VARCHAR2(20 BYTE), WBKLX VARCHAR2(100 BYTE), FUNCTIONNAME VARCHAR2(50 BYTE), FUNCTIONPARAMETER VARCHAR2(50 BYTE)); 生成的TB表CREATE OR REPLACE PROCEDURE P…

好礼相送|CSDN云原生 Meetup 成都站报名热烈启动,12.18见!

伴随着容器、Kubernetes及微服务等技术热度的持续攀升&#xff0c;云原生正以不可撼动之势&#xff0c;剑指云计算的下一个十年。12月18日&#xff0c;CSDN将在成都举办第三场云原生线下Meetup。在这里&#xff0c;您可以了解各大领先企业的云原生落地实践&#xff0c;与众多云…

vue-music 音乐网站

在学习完vueJS,一直想做个项目来锻炼一下,选来选去&#xff0c;还是做个网易云音乐&#xff0c;其间遇到了很多坑,也逐渐接受了vue这种组件化的思想以及从Dom操作转换为用数据去驱动视图。并且在某部分基础组件上借鉴(搬运)了elementUI的源码(不过elementUI写的是真好) 技术栈 …

shell环境变量

shell环境变量 环境变量 还记得上一章里面﹐我曾经提到过﹕当我们登入系统的时候﹐首先就获得一 shell﹐而且它也占据一个行程&#xff08;进程&#xff09;﹐然后再输入的命令都属于这个 shell 的子程序&#xff08;子进程&#xff09;。如果您学习够细心﹐不难发现我们的 sh…

apache用户认证

先创建一个“用户认证”目录&#xff08;设为abc&#xff09;[rootLAMPLINUX ~]# cd /data/www[rootLAMPLINUX www]# mkdir abc进入abc目录[rootLAMPLINUX www]# cd abc拷贝一个文件&#xff08;作用&#xff1a;验证配置是否生效&#xff09;[rootLAMPLINUX abc]# cp /etc/pas…