2.mybatis入门实例 连接数据库进行查询

1.新建项目,添加mybatis和mysql的jar包

2.在mysql中新建表user[id,name,age]

CREATE TABLE `users` (`id` int(11) NOT NULL auto_increment,`NAME` varchar(50) default NULL,`age` int(11) default NULL,PRIMARY KEY  (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8

3.新建User类,与db的表对应

public class User {public User() {}public User(int id, String name, int age) {super();this.id = id;this.name = name;this.age = age;}private int id;private String name;private int age;public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}@Overridepublic String toString() {return "User [id=" + id + ", name=" + name + ", age=" + age + "]";}}

4.在src目录下面新建mybatis的配置文件conf.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration><!-- development:开发模式work:工作模式--><environments default="development"><environment id="development"><transactionManager type="JDBC" /><dataSource type="POOLED"><property name="driver" value="com.mysql.jdbc.Driver" /><property name="url" value="jdbc:mysql://localhost:3306/mybatis?autoReconnect=true&amp;useUnicode=true&amp;characterEncoding=utf8" /><property name="username" value="root" /><property name="password" value="root" /></dataSource></environment></environments></configuration>

5.新建userMapper.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的标签,在此要在Window-Preference-Xml Catalog中配置mybatis-3-mapper.dtd,key=-//mybatis.org//DTD Mapper 3.0//EN-->
<mapper namespace="com.mlxs.mybatis.test.userMapper"><select id="getUser" parameterType="int" resultType="com.mlxs.mybatis.test1.User">select * from users where id=#{id}</select><!-- 添加,参数是一个user对象 --><insert id="addUser" parameterType="com.mlxs.mybatis.test1.User">insert into users(name,age) values(#{name},#{age})</insert><!-- 更新,参数是一个user对象 --><insert id="updateUser" parameterType="com.mlxs.mybatis.test1.User">update users set name=#{name}, age=#{age} where id=#{id}</insert><!-- 添加,参数是一个user对象 --><insert id="deleteUser" parameterType="int">delete from users where id=#{id}</insert><!-- 返回一个list,resultType="包名+类名":必须在类中有个无参的构造函数,不然会报错:java.lang.NoSuchMethodException: com.mlxs.mybatis.test1.User.<init>() Caused by: java.lang.NoSuchMethodException: com.mlxs.mybatis.test1.User.<init>()at java.lang.Class.getConstructor0(Class.java:2706)at java.lang.Class.getDeclaredConstructor(Class.java:1985)at org.apache.ibatis.reflection.factory.DefaultObjectFactory.instantiateClass(DefaultObjectFactory.java:57)        --><select id="selectAllUsers" resultType="com.mlxs.mybatis.test1.User">select * from users</select>
</mapper>

将mapper配置文件添加到mybatis的配置文件conf.xml的mappers标签中:

<!-- 在conf.xml文件中注册Mapper.xml文件和Mapper类 --><mappers><mapper resource="com/mlxs/mybatis/test1/userMapper.xml" /></mappers>

6.添加测试类,获取一个user的信息

import java.io.IOException;
import java.io.InputStream;
import java.io.Reader;import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;public class _Test1SelectOne {public static void main(String[] args) throws IOException {//加载mybatis的xml文件(同时加载加载关联的映射文件)//1.使用类加载器加载mybatis的配置文件
//        InputStream config = _Test1SelectOne.class.getClassLoader().getResourceAsStream("conf.xml");//2.使用mybatis的Resources类加载Reader config = Resources.getResourceAsReader("conf.xml");//创建sqlSessionFactorySqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(config);//创建sqlSession,执行mapper.xml中的sql语句SqlSession sqlSession = sessionFactory.openSession();//执行映射文件中的sql(namespace + select的id)String sql = "com.mlxs.mybatis.test.userMapper.getUser";User user = sqlSession.selectOne(sql, "1");//查询id=1//关闭session
        sqlSession.close();System.out.println(user);}
}

7.结果

User [id=1, name=Tom, age=12]

 

8.测试 增删改查,导入junit包,添加测试类

import java.util.List;import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.junit.Test;import com.mlxs.mybatis.util.MyBatisUtil;public class _Test2UserCrud {@Testpublic void addUser(){SqlSessionFactory sessionFactory = MyBatisUtil.getSessionFactory();SqlSession sqlSession = sessionFactory.openSession();String statement = "com.mlxs.mybatis.test.userMapper.addUser";int count = sqlSession.insert(statement, new User(0, "add1", 10));sqlSession.commit();sqlSession.close();System.out.println("add count:"+count);}@Testpublic void updateUser(){SqlSessionFactory sessionFactory = MyBatisUtil.getSessionFactory();SqlSession sqlSession = sessionFactory.openSession();String statement = "com.mlxs.mybatis.test.userMapper.updateUser";int count = sqlSession.update(statement, new User(3, "update2", 100));sqlSession.commit();sqlSession.close();System.out.println("update count:"+count);}@Testpublic void delUser(){SqlSessionFactory sessionFactory = MyBatisUtil.getSessionFactory();boolean autoCommit = true;//自动提交,不需手动commitSqlSession sqlSession = sessionFactory.openSession(autoCommit);String statement = "com.mlxs.mybatis.test.userMapper.deleteUser";int count = sqlSession.delete(statement, 4);sqlSession.close();System.out.println("del count:"+count);}@Testpublic void selectAll(){SqlSessionFactory sessionFactory = MyBatisUtil.getSessionFactory();boolean autoCommit = true;//自动提交,不需手动commitSqlSession sqlSession = sessionFactory.openSession(autoCommit);String statement = "com.mlxs.mybatis.test.userMapper.selectAllUsers";List<User> userList = sqlSession.selectList(statement);sqlSession.close();System.out.println(userList);}
}

 

转载于:https://www.cnblogs.com/yangzhenlong/p/5205301.html

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

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

相关文章

使用JacpFX和JavaFX2构建富客户端

创建快速且可扩展的桌面客户端始终是一个挑战&#xff0c;特别是在处理大量数据和长时间运行的任务时。 尽管Eclipse RCP和Netbeans RCP是已建立的平台&#xff0c;但其想法是建立一个轻量级的框架来异步处理组件&#xff0c;类似于Web组件。 开发人员在线程主题上的工作应较少…

lob移表空间 oracle_Oracle数据库(1)Oracle体系结构概述(一)

Oracle数据库的体系结构主要包括&#xff1a;物理存储结构、逻辑存储结构、内存结构和实例进程结构。了解了Oracle的体系结构&#xff0c;就可以对Oracle数据库有一个整体认识&#xff0c;这样有利于后续Oracle的学习。下面我们分别来了解逻辑存储结构、物理存储结构、内存结构…

Linux入门笔记——文件操作命令2

cp Copy files and directories&#xff08;复制文件和目录&#xff09; cp 选项&#xff1a; 选项 意义 -a, --archive 复制文件和目录&#xff0c;以及它们的属性&#xff0c;包括所有权和权限。 通常&#xff0c;复本具有用户所操作文件的默认属性。 -i, --interactive 在…

java 对象的上转型对象(父类)

Example5_10.java class 类人猿 {void crySpeak(String s) {System.out.println(s); } } class People extends 类人猿 {void computer(int a,int b) { int ca*b;System.out.println(c); }void crySpeak(String s) {System.out.println("***"s"***"); }…

EnglishLeaning

今天看了些hadoop官方reference感觉自己词汇量和语法真是又回到解放前了。于是&#xff0c;痛下决心要好好学习英语。找到了一些学习的方法&#xff0c;自己记录下来&#xff0c;也和大家一起借鉴 努力目标&#xff1a; 掌握大量的计算机英语术语和缩略语&#xff1b;熟练掌握计…

雇用Java EE开发人员的一些面试问题

互联网上充斥着Java开发人员的面试问题。 这些问题的主要问题是&#xff0c;它们仅证明候选人具有良好的记忆力&#xff0c;并且记住所有语法&#xff0c;结构&#xff0c;常量等。对他/她的逻辑推理没有真正的评估。 我在下面列举了一些面试问题的示例&#xff0c;这些示例根据…

手机mstsc远程工具_远程桌面连接,只需3步,轻松远程操控电脑!

远程桌面的好处远程桌面有很多好处的1.对于运维技术人员来说&#xff0c;可以随时随地管理远程主机&#xff0c;查看系统信息和硬件信息等系统性能诊断&#xff0c;远程应用管理内存、CPU等敏感信息报警提醒&#xff0c;对远程主机的一切尽收眼2.对于客户服务来说&#xff0c;可…

Linux入门笔记——type、switch、help、man、apropos、whatis、info

type 显示命令的类型switch 显示可执行程序的位置help 得到shell 内部命令的帮助文档例如&#xff1a;help cd--help 许多可执行程序支持一个 --help 选项&#xff0c;这个选项是显示命令所支持的语法和选项说明。例如&#xff1a;mkdir --helpman 显示程序手册页许多希望被命令…

linux上的常用的进程与内存优化命令

进程 ps命令 f 以树状结构显示 u 显示详细信息 a 显示所有进程 -A 显示所有进程 -u 用户名 是显示该用户下的进程 -l 更多进程详细信息 例子1. 以树状结构显示root用户下进程的详细信息 $ps fu -u root 显示结果如下 USER PID %CPU %MEM VSZ RSS TTY STAT STAR…

qbytearry有数据上限吗_金仕达大数据开发岗位面试题

金仕达-上海(1)自我介绍(2)在离线数仓&#xff0c;实时数仓中担任的角色是什么&#xff0c;介绍项目&#xff1f;数据量有多大&#xff1f;(3)实时的指标和离线指标怎么消除掉&#xff1f;有没有必要一致&#xff1f;(4)Flink上有多少个指标&#xff0c;一个指标一个jar包吗&am…

BZOJ 1012 单调队列+二分

思路&#xff1a; 维护一个单减的序列 序号是单增的 每回二分查找第一个比询问的大的值 我手懒 用得lower_bound //By SiriusRen #include <cstdio> #include <algorithm> using namespace std; #define int long long int m,mod,top,jy,ans,tot; char ch[3]; st…

MyBatis 3 – Spring集成教程

作为本教程的第一步&#xff08;带有MyBatis 3的Spring MVC 3 CRUD示例&#xff09;&#xff0c;我们将定义一个MyBatis服务&#xff0c;该服务将帮助我们在数据库上执行CRUD操作。 我们有一个用于User的域类和一个用于将User信息存储在数据库中的数据库表。 在示例中&#xff…

Linux入门笔记——cat、sort、uniq、wc、head、tail、tee

cat &#xff0d; 连接文件 cat 命令读取一个或多个文件&#xff0c;然后复制它们到标准输出。你可以使用 cat 来显示 文件而没有分页cat 经常被用来显示简短的文本文件。案例 意义 cat ls-output.txt 读取文件标准输出 cat movie.mpeg.0* > movie.mpeg 连接文件&#x…

fir.im Log Guru 正式开源,快速找到 iOS 应用无法安装的原因

很开心的宣布 Log Guru 正式开源&#xff01; Log Guru&#xff0c;是 fir.im 开发团队创造的小轮子&#xff0c;用在 Mac 电脑上的日志获取&#xff0c;Github 地址&#xff1a;FIRHQ/LogGuru. Log Guru 使用方法 当有测试者反馈应用装不上的时候&#xff0c;将其测试设备连接…

python求解三元一次方程_北师大版八上数学5.2 求解二元一次方程组 知识点微课精讲...

知识点总结代入消元法代入消元法的实质是将二元一次方程组中的某一个方程进行未知数的分离&#xff0c;即将该方程进行变换&#xff0c;完整分离出一个独立的未知数&#xff0c;而这个未知数将用含有另一个未知数的式子来表示。设某二元一次方程组为&#xff1a;将第(1)式进行变…

Java 7:完整的invokedynamic示例

我当前的Java 7系列中的另一个博客条目。 这次&#xff0c;它处理的是invokedynamic&#xff0c;这是JVM上用于方法调用的新字节码指令。 invokedynamic指令允许在呼叫站点和呼叫接收者之间进行动态链接。 这意味着您可以将正在执行方法调用的类链接到在运行时正在接收调用的类…

VC6兼容性及打开文件崩溃问题解决

VC6虽然老&#xff0c;但是一些工程还非得用它打开&#xff0c;没办法…… 今天偶然用到&#xff0c;因为新装了系统&#xff0c;之前的问题又要重新解决一遍 在这记录下解决过程&#xff0c;方便以后查阅&#xff1a; 一.兼容问题&#xff1a; XP以上windows系统打开VC6时可能…

Linux入门笔记——echo

echo Display a line of text(显示一行文本)这个命令的作用相当简单明了。传递到 echo 命令的任一个参数都会在&#xff08;屏幕上&#xff09;显示出来。 小插曲&#xff1a; 每当你输入一个命令&#xff0c;然后按下 enter 键后&#xff0c;bash 会在执行你的命令之前对输入 …

10.25模拟 三角形

1. 三角形(trokuti.cpp/c/pas)? 【 问题描述 】? 平面上有N条直线&#xff0c;用方程A i x B i y C i0表示。这些直线没有三线共点的。现在要你计算出用这些直线可以构造出多少三角形&#xff1f;【 输入格式 】? 第1行&#xff1a;一个整数N(1 ≤ N≤ 300000)。? 下面N行…

dataframe 空值替换为0_Python数据分析:Pandas之DataFrame

内容目录 DataFrame简介DataFrame创建方式DataFrame索引和切片DataFrame属性DataFrame级联与合并DataFrame基本操作DataFrame分组聚合操作DataFrame数据透视与交叉表1 DataFrame简介 我们在上次课中讲到了Pandas的Series结构,还没看的点这里 ailsa:python数据分析:Pandas之S…