MyBatis工程搭建&MyBatis实现Mapper配置查询
一、MyMyBatis工程搭建
新建Maven项目:mybatis-demo
准备数据源
1 # 删除mybatis_demo数据库
2 drop database if exists mybatis_demo;
3
4 # 创建mybatis_demo数据库
5 create database mybatis_demo;
6
7 # 使用mybatis_demo数据库
8 use mybatis_demo;
9
10 # 创建account表
11 create table user (
12 id int auto_increment primary key,
13 username varchar(20),
14 age int,
15 score int
16 );
17
18 # 新增数据
19 insert into user (id, username, age, score) values
20 (1,'peter', 18, 100), (2,'pedro', 24, 200),
21 (3,'jerry', 28, 500), (4,'mike', 12, 300),
22 (5,'tom', 27, 1000);
连接数据库
1 <dependencies>
2 <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
3 <dependency>
4 <groupId>mysql</groupId>
5 <artifactId>mysql-connector-java</artifactId>
6 <version>8.0.23</version>
7 </dependency>
8 </dependencies>
代码结构图:

代码编写:
JDBCDemo.java
1 import java.sql.Connection;
2 import java.sql.DriverManager;
3 import java.sql.PreparedStatement;
4 import java.sql.ResultSet;
5
6 public class JDBCDemo {
7 public static void main(String[] args) throws Exception {
8 //1.注册驱动
9 Class.forName("com.mysql.cj.jdbc.Driver");
10 //2.获取连接
11 Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/mybatis_demo", "root", "root");
12 //3.获取Statement对象
13 PreparedStatement preparedStatement = connection.prepareStatement("select * from user WHERE id = ?");
14 preparedStatement.setInt(1, 1);
15 //4.执行SQL语句返回结果集
16 ResultSet resultSet = preparedStatement.executeQuery();
17 //5.遍历结果集
18 while (resultSet.next()) {
19 System.out.println("username: " + resultSet.getString("username"));
20 System.out.println("age: " + resultSet.getString("age"));
21 }
22 //6.释放资源
23 resultSet.close();
24 preparedStatement.close();
25 connection.close();
26 }
27 }
执行结果:

引入MyBatis依赖
1 <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
2 <dependency>
3 <groupId>org.mybatis</groupId>
4 <artifactId>mybatis</artifactId>
5 <version>3.5.6</version>
6 </dependency>
7 <!-- https://mvnrepository.com/artifact/ch.qos.logback/logback-classic -->
8 <dependency>
9 <groupId>ch.qos.logback</groupId>
10 <artifactId>logback-classic</artifactId>
11 <version>1.3.0-alpha5</version>
12 <scope>test</scope>
13 </dependency>
删除JDBC连接:JDBCDemo.java
新建文件:StartNoXml.java
1 import org.apache.ibatis.datasource.pooled.PooledDataSource;
2 import org.apache.ibatis.mapping.Environment;
3 import org.apache.ibatis.session.Configuration;
4 import org.apache.ibatis.session.SqlSession;
5 import org.apache.ibatis.session.SqlSessionFactory;
6 import org.apache.ibatis.session.SqlSessionFactoryBuilder;
7 import org.apache.ibatis.transaction.jdbc.JdbcTransactionFactory;
8
9 import java.sql.PreparedStatement;
10 import java.sql.ResultSet;
11 import java.sql.SQLException;
12
13 @SuppressWarnings({"SqlResolve", "SqlNoDataSourceInspection", "Duplicates"})
14 public class StartNoXml {
15 public static void main(String[] args) throws SQLException {
16 // 准备jdbc事务类
17 JdbcTransactionFactory jdbcTransactionFactory = new JdbcTransactionFactory();
18 // 配置数据源
19 PooledDataSource dataSource = new PooledDataSource(
20 "com.mysql.cj.jdbc.Driver",
21 "jdbc:mysql://localhost:3306/mybatis_demo?useSSL=false",
22 "root",
23 "root");
24 // 配置环境,向环境中指定环境id、事务和数据源
25 Environment environment = new Environment.Builder("development")
26 .transactionFactory(jdbcTransactionFactory)
27 .dataSource(dataSource).build();
28 // 新建 MyBatis 配置类
29 Configuration configuration = new Configuration(environment);
30 // 得到 SqlSessionFactory 核心类
31 SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(configuration);
32 // 开始一个 sql 会话
33 SqlSession session = sqlSessionFactory.openSession();
34 // 得到 sql 连接并运行 sql 语句
35 PreparedStatement preStatement = session
36 .getConnection()
37 .prepareStatement("SELECT * FROM user WHERE id = ?");
38 preStatement.setInt(1, 1);
39 ResultSet result = preStatement.executeQuery();
40 // 验证结果
41 while (result.next()) {
42 System.out.println("username: " + result.getString("username"));
43 System.out.println("age: " + result.getString("age"));
44 }
45 // 关闭会话
46 session.close();
47 }
48 }
执行结果:

配置文件:mybatis-config.xml
1 <?xml version="1.0" encoding="UTF-8" ?>
2 <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
3 <configuration>
4 <!-- 环境变量 -->
5 <environments default="development">
6 <environment id="development">
7 <!-- 事务管理器 -->
8 <transactionManager type="JDBC"/>
9 <!-- 数据源 -->
10 <dataSource type="POOLED">
11 <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
12 <property name="url" value="jdbc:mysql://localhost:3306/mybatis_demo?useSSL=false"/>
13 <property name="username" value="root"/>
14 <property name="password" value="123456"/>
15 </dataSource>
16 </environment>
17 </environments>
18 <!-- mapper配置 -->
19 <mappers>
20 <mapper class="mapper.UserMapper"/>
21 </mappers>
22 </configuration>
修改StartNoXml.java类名:StartWithXml.java
1 import org.apache.ibatis.datasource.pooled.PooledDataSource;
2 import org.apache.ibatis.io.Resources;
3 import org.apache.ibatis.mapping.Environment;
4 import org.apache.ibatis.session.Configuration;
5 import org.apache.ibatis.session.SqlSession;
6 import org.apache.ibatis.session.SqlSessionFactory;
7 import org.apache.ibatis.session.SqlSessionFactoryBuilder;
8 import org.apache.ibatis.transaction.jdbc.JdbcTransactionFactory;
9
10 import java.io.IOException;
11 import java.io.InputStream;
12 import java.sql.PreparedStatement;
13 import java.sql.ResultSet;
14 import java.sql.SQLException;
15
16 @SuppressWarnings({"SqlResolve", "SqlNoDataSourceInspection", "Duplicates"})
17 public class StartWithXml {
18 public static void main(String[] args) throws SQLException, IOException {
19 // 读取配置文件
20 InputStream configuration = Resources.getResourceAsStream("mybatis-config.xml");
21 // 得到 SqlSessionFactory 核心类
22 SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(configuration);
23 // 开始一个 sql 会话
24 SqlSession session = sqlSessionFactory.openSession();
25 // 得到 sql 连接并运行 sql 语句
26 PreparedStatement preStatement = session
27 .getConnection()
28 .prepareStatement("SELECT * FROM user WHERE id = ?");
29 preStatement.setInt(1, 1);
30 ResultSet result = preStatement.executeQuery();
31 // 验证结果
32 while (result.next()) {
33 System.out.println("username: " + result.getString("username"));
34 System.out.println("age: " + result.getString("age"));
35 }
36 // 关闭会话
37 session.close();
38 }
39 }
执行结果:

二、MyBatis实现Mapper配置查询
注解方式使用Mapper
代码编写:
在mybatis-config.xml配置文件中加入mapper配置
1 <!-- mapper配置 -->
2 <mappers>
3 <mapper class="mapper.UserMapper"/>
4 </mappers>
新建mapper包,新建一个UserMapper.java类
UserMapper.java
1 package mapper;
2
3 import entity.User;
4 import org.apache.ibatis.annotations.Select;
5
6 public interface UserMapper {
7 /**
8 * 通过用户id查询用户名称
9 *
10 * @param id 用户id
11 * @return 用户名称
12 */
13 //通过#{**}的方式来查询
14 @Select("SELECT username FROM user WHERE id = #{id}")
15 String selectUsernameById(Integer id);
16 /**
17 * 通过用户id查询用户年龄
18 *
19 * @param id 用户id
20 * @return 用户年龄
21 */
22 Integer selectUserAgeById(Integer id);
23
24 /**
25 * 通过用户id查询用户信息
26 *
27 * @param id
28 * @return
29 */
30 User selectUserById(Integer id);
31
32 }
UserTest.java
1 import entity.User;
2 import mapper.UserMapper;
3 import org.apache.ibatis.io.Resources;
4 import org.apache.ibatis.session.SqlSession;
5 import org.apache.ibatis.session.SqlSessionFactory;
6 import org.apache.ibatis.session.SqlSessionFactoryBuilder;
7
8 import java.io.IOException;
9 import java.io.InputStream;
10 import java.sql.SQLException;
11
12 @SuppressWarnings({"SqlResolve", "SqlNoDataSourceInspection", "Duplicates"})
13 public class UserTest {
14 public static void main(String[] args) throws IOException, SQLException {
15 // 读取配置文件
16 InputStream configuration = Resources.getResourceAsStream("mybatis-config.xml");
17 // 得到 SqlSessionFactory 核心类
18 SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(configuration);
19 // 开始一个 sql 会话
20 SqlSession session = sqlSessionFactory.openSession();
21 // 得到 mapper
22 UserMapper mapper = session.getMapper(UserMapper.class);
23 // 调用注解的SQL
24 String username = mapper.selectUsernameById(1);
25 System.out.println("username: " + username);
26 // 调用XML的SQL
27 Integer age = mapper.selectUserAgeById(1);
28 System.out.println("age: " + age);
29
30 // 调用通过用户id查询用户信息的方法
31 User user = mapper.selectUserById(1);
32 System.out.println(user);
33 // 关闭会话
34 session.close();
35 }
36 }
执行结果:

MyBatis工程搭建&MyBatis实现Mapper配置查询的更多相关文章
- Mybatis工程搭建
工程搭建 • 1依赖包 • 2配置文件 • 2.1spring-mybatis.xml • 2.2mybatis-config.xml自带配置文件 • 2.3 mapper(dao)对象 • 2.4 ...
- 使用mybatis执行对应的SQL Mapper配置中的insert、update、delete等标签操作,数据库记录不变
我使用springMVC集成mybatis,执行SQLMapper配置文件里的insert操作,发现程序没有报错,但数据库表里却没有刚才插入的记录.查了很多资料,终于在一篇博客上找到了答案:在执行完方 ...
- 通过Maven搭建Mybatis项目
学习通过maven工程搭建Mybatis工程开启对M ybaits的学习总结之旅. 1.首先创建Maven工程. 2.在pom.xml文件中加入依赖的jar <!-- mybatis核心包 -- ...
- MyBatis -01- 初识 MyBatis + MyBatis 环境搭建
MyBatis -01- 初识 MyBatis + MyBatis 环境搭建 MyBatis 本是 apache 的一个开源项目 iBatis(iBATIS = "internet" ...
- 16-DRF工程搭建与序列化器
1.DRF工程搭建 环境安装与配置 DRF是以Django扩展应用的方式提供的,所以我们可以直接利用Django环境,而无需创建(先创建Django环境). 1.安装DRF pip3 install ...
- 第三章.搭建MyBatis工程环境
1.数据库的准备: 数据库: create DATABASE mybatis: 数据表: CREATE TABLE `user` ( `id` int(10) NOT NULL AUTO_INCREM ...
- 搭建maven+spring+mybatis工程
一.maven 命令搭建web项目 可以参考我之前的一篇博文maven快速入门 1.搭建web工程 mvn archetype:generate -DgroupId=com.yuanmeng.spri ...
- Maven 工程下 Spring MVC 站点配置 (二) Mybatis数据操作
详细的Spring MVC框架搭配在这个连接中: Maven 工程下 Spring MVC 站点配置 (一) Maven 工程下 Spring MVC 站点配置 (二) Mybatis数据操作 这篇主 ...
- 单工程搭建springmvc+spring+mybatis(maven,idea)
单工程搭建springmvc+spring+mybatis(maven,idea) 1.pom.xml <properties> <project.build.sourceEncod ...
随机推荐
- Self-XSS All In One
Self-XSS All In One Self-XSS(自跨站脚本)攻击 警告! 使用此控制台可能会给攻击者可乘之机,让其利用 Self-XSS(自跨站脚本)攻击来冒充您并窃取您的信息.请勿输入或粘 ...
- 如何实现 React 模块动态导入
如何实现 React 模块动态导入 React 模块动态导入 代码分割 webpack & code splitting https://reactjs.org/docs/code-split ...
- css & focus-within & pseudo class
css & focus-within & pseudo class demo :focus-within https://developer.mozilla.org/en-US/doc ...
- SDK & 埋点 & user behavior tracker
SDK & 埋点 & user behavior tracker 同一个 SDK ,根据不同的应用市场, 分别进行统计分析 ? https://www.umeng.com/ user ...
- Clean Code of JavaScript
Clean Code of JavaScript 代码简洁之道 JavaScript 版 https://github.com/ryanmcdermott/clean-code-javascript ...
- 软件工程中的CI&CD
wiki 在软件工程中,CI/CD或CICD通常是指持续集成以及持续交付或持续部署的组合实践 持续集成 在软件工程中,持续集成(CI)是每天将所有开发人员的工作副本合并到共享主线中的一种做法.[1] ...
- Nginx之Location匹配规则
概述 经过多年发展,nginx凭借其优异的性能征服了互联网界,成为了各个互联网公司架构设计中不可获取的要素.Nginx是一门大学问,但是对于Web开发者来说,最重要的是需要能捋的清楚Nginx的请求路 ...
- Flex实现左右布局
html <div class="business-content-1"> <div class="item"> 111 </di ...
- LiteOS:SpinLock自旋锁及LockDep死锁检测
摘要:除了多核的自旋锁机制,本文会介绍下LiteOS 5.0引入的LockDep死锁检测特性. 2020年12月发布的LiteOS 5.0推出了全新的内核,支持SMP多核调度功能.想学习SMP多核调度 ...
- linux之安装nginx
nginx官网:http://nginx.org/en/download.html 1.安装nginx所需环境 a) PCRE pcre-devel 安装 # yum install -y pcre ...