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

news/2024/7/5 3:14:57

目录结构:

 

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


http://lihuaxi.xjx100.cn/news/247657.html

相关文章

MATLAB中subplot函数使用

格式&#xff1a;subplot(m,n,p) 或 subplot(m n p) 将多个图显示到一个平面上的函数。其中m&#xff0c;n表示窗口被分为m*n块区域&#xff0c;p表示当前图所在位置。p1表示从左到右从上到下的第一个位置. clear; subplot(2,3,1);%第一块绘图 x[0.1000,0.0500,0.0100,0.0050]…

说说大型高并发高负载网站的系统架构【转】

我在CERNET做过拨号接入平台的搭建&#xff0c;而后在Yahoo&3721从事过搜索引擎前端开发&#xff0c;又在MOP处理过大型社区猫扑大杂烩的架构升级等工作&#xff0c;同时自己接触和开发过不少大中型网站的模块&#xff0c;因此在大型网站应对高负载和并发的解决方案上有一些…

【SSRS】入门篇(二) -- 建立数据源

原文:【SSRS】入门篇(二) -- 建立数据源通过 【SSRS】入门篇(一) -- 创建SSRS项目 这篇&#xff0c;我们建立了一个SSRS项目&#xff1b; 接下来&#xff0c;我们以 AdventureWorks2012 示例数据库&#xff0c;讲下如何建立数据源&#xff1b;(AdventureWorks2012 下载) 1、解决…

自动驾驶汽车数据闭环方法分析

算法与数据双轮驱动才能实现更成熟的自动驾驶技术&#xff0c;也是自动驾驶技术落地的必然选择。随着时间的推移&#xff0c;各家公司在算法方面的差距会逐渐缩小&#xff0c;真正影响自动驾驶技术水平的其实是数据&#xff0c;海量数据会助力自动驾驶技术再上新台阶。但如何获…

MATLAB中linspace函数使用

格式&#xff1a;linspace(x1,x2,N) 功能&#xff1a;用于产生x1,x2之间的N点行矢量。其中x1,x2为起始值&#xff0c;N为元素个数。如果缺省N,默认N100. xlinspace(1,10,10);的效果和x[1:1:10]类似 >> x1[1:1:10]x1 1 2 3 4 5 6 7 8 9 …

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

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

'libxml/tree.h' file not found

本文转载至 http://www.cnblogs.com/hanjun/p/3711173.html 看看Header Search Paths 为 /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.1.sdk/usr/include/libxml2 看看Base SDK 为 ios 6.1 于是把Header Search Paths 该…

Android Timer的使用

1&#xff1a;服务端使用PHP <?phpecho date(Y-m-d H:i:s); ?> 2&#xff1a;activity_main.xml <RelativeLayout xmlns:android"http://schemas.android.com/apk/res/android"xmlns:tools"http://schemas.android.com/tools"android:layout_w…