01.MyBatis入门

MyBatis入门:

第一天接触Mybatis,总结一下入门案例的流程:

首先导入Mybatis的jar包和数据库的驱动包

1.创建数据表和实体类

2.创建一个表和实体类映射的xml配置文件,具体配置如下:

 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   <!-- namespace是映射文件的一个唯一标识,用来定位是哪个映射文件 -->
 6 <mapper namespace="com.offcn.entity.personMapper">
 7     <!-- id是一条sql语句的唯一标识,parameterType是sql语句中的参数类型 ,resultType是sql语句将要返回的结果的类型 -->
 8     <!-- 如果输入的类型是基本数据类型(八种基本数据类型 + string)则#{xxx}可以随意写,但是为了规范最好不要,如果不是基本数据类型则必须写实体类中的字段名 -->
 9   <select id="selectPersonById" parameterType="int" resultType="com.offcn.entity.Person">
10     select * from Person where id = #{id}
11   </select>
12   <!-- sql语句后边不加分号 -->
13   
14   <insert id="insertPerson" parameterType="com.offcn.entity.Person">
15       insert into Person (id,name,bir,address) value (#{id},#{name},#{bir},#{address})
16   </insert>
17   
18   <delete id="deletePersonById" parameterType="int">
19       delete from Person where id = #{id}
20   </delete>
21   
22   <update id="updatePerson" parameterType="com.offcn.entity.Person">
23       update person set name=#{name},bir=#{bir},address=#{address} where id = #{id}
24   </update>
25   
26   <select id="selectPerson" resultType="com.offcn.entity.Person">
27       select * from person
28   </select>
29   
30 </mapper>

3.编写全局配置文件conf.xml,包含数据库信息和映射文件信息,代码如下:

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <!DOCTYPE configuration
 3   PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
 4   "http://mybatis.org/dtd/mybatis-3-config.dtd">
 5 <configuration>
 6     <!-- 环境的配置,可以配置多个,可以通过default该换id定位使用哪个环境,也可以通过 sessionFactory的第二个参数设置-->
 7   <environments default="development">
 8     <environment id="development">
 9         <!-- 配置事物的提交方式,一共有两种
10             1.JDBC:利用JDBC的方式处理事务,需要手动提交(commit,rollback,close)
11             2.MANAGED:将事务由其他组件托管(spring,jobss),默认会关闭连接,如果想要自动关闭连接需要配置一个属性
12              <property name="driver" value="false"/>
13          -->
14       <transactionManager type="JDBC"/>   <!-- 后边的斜杠不能省略 -->
15      
16       <!-- 数据源格式类型:
17           1.POOLED:数据连接池模式
18           2.UNPOOLED:传统的jdbc模式,每次都需要自己手动创建关闭
19           3.JNDI:从tomcat中获取一个内置的数据库连接池
20        -->
21       <dataSource type="POOLED">
22         <property name="driver" value="com.mysql.jdbc.Driver"/>
23         <property name="url" value="jdbc:mysql://localhost:3306/person?serviceTimeout=UTC"/>
24         <property name="username" value="root"/>
25         <property name="password" value="root"/>
26       </dataSource>
27     </environment>
28   </environments>
29   <mappers>
30     <mapper resource="com/offcn/entity/personMapper.xml"/>
31   </mappers>
32 </configuration>

3.写一个测试类,进行增删改查的测试,步骤如下:

  1 package com.offcn.entity;
  2 
  3 import java.io.IOException;
  4 import java.io.Reader;
  5 import java.util.Date;
  6 import java.util.List;
  7 
  8 import org.apache.ibatis.io.Resources;
  9 import org.apache.ibatis.session.SqlSession;
 10 import org.apache.ibatis.session.SqlSessionFactory;
 11 import org.apache.ibatis.session.SqlSessionFactoryBuilder;
 12 
 13 public class Test {
 14     public static void main(String[] args) throws IOException {
 15     //    selectPerosnById();
 16         //insertPerson();
 17         //deletePersonById();
 18         //updatePerson();
 19         selectPerson();
 20     }
 21     //根据id查询
 22     public static void selectPerosnById() throws IOException {
 23         //读取conf.xml 配置文件
 24         Reader reader = Resources.getResourceAsReader("conf.xml");
 25         //创建sqlSessionFactory
 26         SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader);
 27         //创建session---> connection
 28         SqlSession session = sessionFactory.openSession();
 29         //statement ---> statement
 30         String sql = "com.offcn.entity.personMapper." + "selectPersonById";
 31         //查询一条数据
 32         Person person = session.selectOne(sql,1);
 33         //提交事务
 34         session.commit();
 35         System.out.println(person);
 36         //关闭连接
 37         session.close();
 38         
 39     }
 40     //增加一条数据
 41     public static void insertPerson() throws IOException {
 42         //读取conf.xml文件
 43         Reader reader = Resources.getResourceAsReader("conf.xml");
 44         //创建一个sqlSessionFactory
 45         SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader);
 46         //创建一个session对象
 47         SqlSession session = sessionFactory.openSession();
 48         //定位sql语句
 49         String statement = "com.offcn.entity.personMapper." + "insertPerson";
 50         //执行sql语句
 51         Person person = new Person("李四",new Date(),"上海普陀");
 52         int count = session.insert(statement,person);
 53         //提交事务
 54         session.commit();
 55         System.out.println("增加"+count+"条数据");
 56         //关闭连接
 57         session.close();
 58     }
 59     //根据id删除一条数据
 60     public static void deletePersonById() throws IOException {
 61         //读取conf.xml文件
 62         Reader reader = Resources.getResourceAsReader("conf.xml");
 63         //获取sqlSessionFactory
 64         SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader);
 65         //获取session对象
 66         SqlSession session = sessionFactory.openSession();
 67         //定位sql语句
 68         String statement = "com.offcn.entity.personMapper."+"deletePersonById";
 69         //执行sql语句
 70         int count = session.delete(statement,2);
 71         //提交事务
 72         session.commit();
 73         System.out.println("删除"+count+"条数据");
 74         //关闭连接
 75         session.close();
 76     }
 77     //更改数据
 78     public static void updatePerson() throws IOException {
 79         //读取conf.xml
 80         Reader reader = Resources.getResourceAsReader("conf.xml");
 81         //创建sqlSessionFactory
 82         SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader);
 83         //创建sqlsession对象
 84         SqlSession session = sessionFactory.openSession();
 85         //定位sql
 86         String statement = "com.offcn.entity.personMapper." + "updatePerson";
 87         //执行sql语句
 88         Person person = new Person();
 89         person.setName("王五");
 90         person.setBir(new Date());
 91         person.setAddress("南京");
 92         person.setId(1);
 93         int count = session.update(statement,person);
 94         //提交事务
 95         session.commit();
 96         System.out.println("更改" + count +"条数据成功");
 97         //关闭连接
 98         session.close();
 99     }
100     //查询所有数据
101     public static void selectPerson() throws IOException {
102         //读取conf.xml
103         Reader reader = Resources.getResourceAsReader("conf.xml");
104         //创建sqlSessionFactory
105         SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader);
106         //创建sqlsession对象
107         SqlSession session = sessionFactory.openSession();
108         //定位sql
109         String statement = "com.offcn.entity.personMapper." + "selectPerson";
110         //执行sql语句
111         List<Person> persons = session.selectList(statement);
112         //提交事务
113         session.commit();
114         for (Person person : persons) {
115             System.out.println(person);
116         }
117         
118         //关闭连接
119         session.close();
120     }
121 }

到此就完成了一个Mybatis的入门程序。

转载于:https://www.cnblogs.com/man-tou/p/11332626.html

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

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

相关文章

2022年重大颠覆性科技创新趋势报告(完整版)

来源&#xff1a;点滴科技资讯未来智能实验室的主要工作包括&#xff1a;建立AI智能系统智商评测体系&#xff0c;开展世界人工智能智商评测&#xff1b;开展互联网&#xff08;城市&#xff09;大脑研究计划&#xff0c;构建互联网&#xff08;城市&#xff09;大脑技术和企业…

02.Mybatis的动态代理方式实现增删改查

动态代理的方式实现增删改查: 通过约定的方式定位sql语句 约定 > 配置文件 > 硬编码 约定的目标是省略掉通过硬编码的方式定位sql的代码&#xff0c;通过接口直接定位出sql语句,以下代码为通过硬编码的方法定位sql: 1      //读取conf.xml 配置文件2 Reader…

孙正义看未来30年:这个趋势,永远不会错(附完整PPT)

来源&#xff1a;大数据实验室 对于今后30年来讲&#xff0c;我认为现在是个很关键的时刻&#xff0c;尤其是在各位的人生当中。而且现在是一整个概念的转变&#xff0c;我们要包容这个概念的转变。我想先给大家看两张照片。这是美国纽约的第五大道&#xff0c;左边那张是1900年…

JavaScript每日学习日记(0)

8.10.2019 1.JavaScript能改变HTML内容、属性、样式&#xff0c;能隐藏或显示HTML元素。 2.JavaScript函数可以任意数量被放置在<body>、<head>部分中&#xff0c;但必须位于<script>与</script>标签之间。 3.脚本可放置于后缀为.js的外部文件中&#…

可视化解释11种基本神经网络架构

来源&#xff1a;海豚数据科学实验室标准&#xff0c;循环&#xff0c;卷积和自动编码器网络随着深度学习的飞速发展&#xff0c;已经创建了完整的神经网络体系结构主机&#xff0c;以解决各种各样的任务和问题。尽管有无数的神经网络架构&#xff0c;但对于任何深度学习工程师…

设计模式之二抽象工厂设计模式

继上篇简单工厂设计模式之后&#xff0c;今天继续讲解抽象工厂设计模式。在简单工厂中&#xff0c;我们的工厂类一次只可以处理一类产品。那么如果我们想处理多类产品&#xff0c;简单工厂是满足不了的。必须要用抽象工厂设计模式。 我们先从概念上来了解下什么是抽象工厂设计模…

Nature封面:只低一毫米,时间也会变慢!叶军团队首次在毫米尺度验证广义相对论...

来源&#xff1a;凹非寺作者&#xff1a;晓查 明敏你知道吗&#xff1f;在地球上&#xff0c;楼层越低&#xff0c;时间过得越慢。这可不是玄学&#xff0c;而是爱因斯坦广义相对论预言的时间膨胀效应&#xff1a;引力越大&#xff0c;时间越慢。△ 在不同高度差上验证时钟变快…

SQL 与 ORACLE 的比较

最近参加了一个ORACLE的培训&#xff0c;ORACLE与平日惯用的SQL SERVER果然有很大不同&#xff0c;在网上搜索了一下转了这篇比较SQL与ORACLE的帖子&#xff0c;总体上感觉SQL SERVER使用更加便捷&#xff0c;人性化&#xff0c;在网上的资料支持很丰富ORACLE更加专家一些&…

DARPA可解释AI研究(XAI计划)的4年回顾与经验总结

来源&#xff1a;智源社区作者&#xff1a;David Gunning, Eric Vorm, Jennifer Yunyan Wang, Matt Turek编译&#xff1a;牛梦琳摘要&#xff1a;从项目管理人员和评估人员的角度&#xff0c;对国防高级研究计划局&#xff08;DARPA&#xff09;的可解释人工智能&#xff08;X…

03.Mybatis优化

对动态代理方式的代码进行进一步优化: 1.将conf.xml文件中对数据库的配置信息以db.properties的形式抽离出来 drivercom.mysql.jdbc.Driver urljdbc:mysql://localhost:3306/person?serverTimezoneUTC usernameroot passwordroot <configuration><properties resourc…

​从ASML年报看半导体产业的未来

来源&#xff1a;半导体行业观察在前几天的文章《光刻机巨头ASML的十年变迁》中&#xff0c;笔者梳理了ASML近10年来的财报数据&#xff0c;介绍了其EUV/DUV光刻机出货量、年销售额、研发投入以及各地区的销售情况等。近日&#xff0c;ASML又公布了2021年年报&#xff0c;我们一…

04.MyBatis别名的设置和类型转换器

别名的设置:(别名不区分大小写): 设置单个别名: <configuration><properties resource"db.properties" /><typeAliases><!-- 设置单个别名 --><typeAlias type"com.offcn.entity.Person" alias"person"/><type…

史上首次,强化学习算法控制核聚变登上Nature:DeepMind让人造太阳向前一大步...

来源&#xff1a;机器之心过去三年&#xff0c;DeepMind 和瑞士洛桑联邦理工学院 EPFL 一直在进行一个神秘的项目&#xff1a;用强化学习控制核聚变反应堆内过热的等离子体&#xff0c;如今它已宣告成功。DeepMind研究科学家David Pfau在论文发表后感叹道&#xff1a;「为了分享…

Memcached 使用 及.NET客户端调用

memcached安装: 1 解压缩文件到c:\memcached 2 命令行输入 c:\memcached\memcached.exe -d install 3 命令行输入 c:\memcached\memcached.exe -d start &#xff0c;该命令启动 Memcached &#xff0c;默认监听端口为 11211 注&#xff1a; 如果出现如下错误 “ failed to in…

机器人流程自动化技术的新发展

来源&#xff1a;学习时报作者&#xff1a;李蕾蓬勃发展的数字经济&#xff0c;是全球新一轮科技进步的产物&#xff0c;直接受到新兴数字技术与智能技术的驱动。机器人流程自动化技术&#xff08;简称“RPA”&#xff09;&#xff0c;是近些年获得快速发展与广泛应用的重要智能…

运算符 优先级 结合性

&#xff23;语言的运算符可分为以下几类&#xff1a; 1. 算术运算符:用于各类数值运算。包括加()、减(-)、乘(*)、除(/)、求余(或称模运算&#xff0c;%)、自增()、自减(--)共七种。 2. 关系运算符:用于比较运算。包括大于(>)、小于(<)、等于()、 大于等于(&g…

05.MyBtais两种取值符号以及输入参数和输出参数

输入参数&#xff1a;parameterType 两种取值符号的异同 1.类型为简单类型(8个基本类型string) 不同点: a.#{任意值}&#xff0c;${value} 其中的标识符只能是value b. #{}自动给String类型加上单引号(‘’) (自动类型转换) ${} 原样输出&#xff0c;适合于动态排序 &#xff0…

论人工智能历史、现状与未来发展战略

来源&#xff1a;《学术前沿》作者&#xff1a;郭毅可人工智能问世60多年来&#xff0c;承载着人类对自己的智慧的无限自信。在这样的自信下&#xff0c;人工智能发展到了今天&#xff0c;人们在追求机器从事尽可能多的智力劳动的路上走得很快&#xff0c;也很远。今天人工智能…

PHP 开发者大会

PHPCON 2019 开发者大会(上海)2019.8.10-8-11 郭新华,和陈雷给我留下的影响很大 再看下天气,利奇马台风,都坐满了,来的都是真爱. Swoole 的韩天峰开始演讲,感觉是程序员标准的样子,哈哈哈 2345 的高旭 讲公司用swoole 的架构 鸟哥因为台风问题没来成,搞了个直播,哈哈哈,感觉很…

IEEE Fellow杨铮:打破「视觉」垄断,无线信号为 AI 开启「新感官」

来源&#xff1a;AI科技评论作者&#xff1a;陈彩娴编辑&#xff1a;岑峰2020年年初疫情刚开始时&#xff0c;清华大学的官方号曾祭出一篇题为《清华教师升级「十大神器」&#xff0c;上课力满格》的推文&#xff0c;讲述了软件学院某老师如何居家办公、探索出一套防止学生偷懒…