MyBatis工程搭建:
因为MyBatis是一个持久层框架,所以我们在配置使用之前要连接数据库,在导入MySQL驱动包,等待maven刷新下载,之后写入代码:
public class JDBCDemo {
public static void main(String[] args) throws Exception {
Class.forName("com.mysql.cj.jdbc.Driver");
Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/mybatis_demo", "root", "root");
PreparedStatement preparedStatement = connection.prepareStatement("select * from user WHERE id = ?");
preparedStatement.setInt(1, 1);
ResultSet resultSet = preparedStatement.executeQuery();
while (resultSet.next()) {
System.out.println("username: " + resultSet.getString("username"));
System.out.println("age: " + resultSet.getString("age"));
}
resultSet.close();
preparedStatement.close();
connection.close();
}
}
代码实现:
引入mybatis依赖:
引入依赖架包
mybatis:MyBatis基础包
logback-classic:日志依赖
org.mybatis mybatis 3.5.6 ch.qos.logback logback-classic 1.3.0-alpha5 test 刷新maven,等待依赖架包下载。libraries中多了架包就表示已经引入完成。 新建类StartNoXml.java在里面写代码:
@SuppressWarnings({“SqlResolve”, “SqlNoDataSourceInspection”, “Duplicates”})
public class StartNoXml {
public static void main(String[] args) throws SQLException {
// 准备jdbc事务类
JdbcTransactionFactory jdbcTransactionFactory = new JdbcTransactionFactory();
// 配置数据源
PooledDataSource dataSource = new PooledDataSource(
“com.mysql.cj.jdbc.Driver”,
“jdbc:mysql://localhost:3306/mybatis_demo?useSSL=false”,
“root”,
“root”);
// 配置环境,向环境中指定环境id、事务和数据源
Environment environment = new Environment.Builder(“development”)
.transactionFactory(jdbcTransactionFactory)
.dataSource(dataSource).build();
// 新建 MyBatis 配置类
Configuration configuration = new Configuration(environment);
// 得到 SqlSessionFactory 核心类
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(configuration);
// 开始一个 sql 会话
SqlSession session = sqlSessionFactory.openSession();
// 得到 sql 连接并运行 sql 语句
PreparedStatement preStatement = session
.getConnection()
.prepareStatement(“SELECT * FROM user WHERE id = ?”);
preStatement.setInt(1, 1);
ResultSet result = preStatement.executeQuery();
// 验证结果
while (result.next()) {
System.out.println("username: " + result.getString(“username”));
System.out.println("age: " + result.getString(“age”));
}
// 关闭会话
session.close();
}
}
MyBatis实现Mapper配置并查询数据
新建项目名为:“mybatis-mapper-chenqionbin,配置好idea的库。
建好数据库,先前的上节课就已经建好数据库了,等下调用就可以了。
resources下新建配置文件mybatis-config.xml导入mapper配置
新建mapper包,在其下面新建类UserMapper.java,在其里面定义方法:
package mapper;
public interface UserMapper {
/**
- 通过用户id查询用户名称
- @param id 用户id
- @return 用户名称
/
String selectUsernameById(Integer id);
}
新建模板测试类UserTest.java
@SuppressWarnings({“Duplicates”})
public class UserTest {
public static void main(String[] args) throws IOException, SQLException {
// 读取配置文件
InputStream configuration = Resources.getResourceAsStream(“mybatis-config.xml”);
// 得到 SqlSessionFactory 核心类
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(configuration);
// 开始一个 sql 会话
SqlSession session = sqlSessionFactory.openSession();
// 得到 mapper
UserMapper mapper = session.getMapper(UserMapper.class);
// 调用注解的SQL
String username = mapper.selectUsernameById(1);
System.out.println("username: " + username);
// 关闭会话
session.close();
}
}
User模块Mapper层:UserMapper.java里面新增方法
/*
通过用户id查询用户年龄
@param id 用户id
@return 用户年龄
*/
Integer selectUserAgeById(Integer id);
新建
MyBatis操作数据库:
增删改查:
增:insert [into] <表名> (列名) values (列值)
删:delete from <表名> [where <删除条件>]
改:update <表名> set <列名=更新值> [where <更新条件>]
查:select * from student
for forEach 循环及Lambda表达式使用:
for循环语句代码:较为简单的一种循环
for(初始化; 判别式; 更新) {
代码语句
}
forEach循环代码:java5的新特征之一
for(元素类型 元素变量 : 遍历对象){
代码语句
}
Lambda表达式是java8的新特征之一
forEach循环整合Lambda表达式后代码:
遍历对象.forEach(元素变量 -> 代码语句);
新建mybatis-config.xml
编写代码
第二节
MyBatis实现Mapper配置并查询数据
首先也需要给数据库准备数据
删除mybatis_demo数据库
drop database if exists mybatis_demo;
创建mybatis_demo数据库
create database mybatis_demo;
使用mybatis_demo数据库
use mybatis_demo;
创建account表
create table user (
id int auto_increment primary key,
username varchar(20),
age int,
score int
);
新增数据
insert into user (id, username, age, score) values
(1,‘peter’, 18, 100), (2,‘pedro’, 24, 200),
(3,‘jerry’, 28, 500), (4,‘mike’, 12, 300),
(5,‘tom’, 27, 1000);
注解方式使用Mapper
新建
mybatis-config.xml
UserMapper.java
UserTest.java
@SuppressWarnings({“Duplicates”})
public class UserTest {
public static void main(String[] args) throws IOException, SQLException {
// 读取配置文件
InputStream configuration = Resources.getResourceAsStream(“mybatis-config.xml”);
// 得到 SqlSessionFactory 核心类
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(configuration);
// 开始一个 sql 会话
SqlSession session = sqlSessionFactory.openSession();
// 得到 mapper
UserMapper mapper = session.getMapper(UserMapper.class);
// 调用注解的SQL
String username = mapper.selectUsernameById(1);
System.out.println("username: " + username);
// 关闭会话
session.close();
}
}
执行结果
username:peter
age:18
XML方式使用Mapper
新建
mybatis-config.xml
UserMapper.java
UserMapper.xml
UserTest.java
for forEach 循环及Lambda表达式使用
for循环语句是代码中常用的循环代码,相对于其他的循环语句更为简单,一般代码结构如下:
for(初始化; 判别式; 更新) {
代码语句
}
forEach循环是java5的新特征之一,在遍历数组、集合方面,forEach为开发人员提供了极大的方便
其代码结构如下:
for(元素类型 元素变量 : 遍历对象){
代码语句
}
forEach循环 + Lambda表达式
Lambda表达式是java8的新特征之一,它使我们可以更方便地操作集合
forEach循环整合Lambda表达式后代码结构如下:
遍历对象.forEach(元素变量 -> 代码语句);
五,SpringMVC工程搭建
创建项目
添加web
右键我们的项目名 -> 选择“Add Framework Support”
1,选择WebApplication
2,核实版本号
3,核实是否会自动创建web.xml
搭建配置SpringMVC
引入依赖
junit
junit
4.13.2
test
org.springframework
spring-webmvc
5.2.13.RELEASE
javax.servlet
servlet-api
2.5
javax.servlet
javax.servlet-api
4.0.1
provided
刷新maven
配置静态资源导出
src/main/java
/*.properties
/.xml
false
src/main/resources
**/.properties
**/*.xml
false
Spring核心配置文件
新建applicationContext.xml
1
添加SpringMVC配置内容
mvc:default-servlet-handler/
编写代码测试
编写Controller层
package controller;
@Controller
public class HelloController {
@RequestMapping("/hello")
public String hello(Model model){
// Model 封装数据
model.addAttribute(“msg”,“HELLO MY FIRST SPRING MVC PROJECT”);
// 返回的字符串就是视图的名字 会被视图解析器处理
return "hello";
}
1
2
3
4
5
6
7
8
}
applicationContext.xml
<context:component-scan base-package=“controller”/>
编写jsp
<%@ page contentType=“text/html;charset=UTF-8” language=“java” %>
${msg} 编写web.xml springmvc org.springframework.web.servlet.DispatcherServlet contextConfigLocation classpath:applicationContext.xml 1 springmvc / encodingFilter org.springframework.web.filter.CharacterEncodingFilter encoding utf-8 encodingFilter /*
六,SpringMVC请求映射注解
Spring MVC 提供了以下这些请求映射注解:
请求映射注解 说明 类/方法
@RequestMapping 通用的请求处理 类
@GetMapping 处理 HTTP GET 请求 查询方法
@PostMapping 处理 HTTP POST 请求 新增修改方法
@PutMapping 处理 HTTP PUT 请求 新增修改方法
@PatchMapping 处理 HTTP PATCH 请求 新增修改方法
@DeleteMapping 处理 HTTP DELETE 请求 删除方法
除了 @RequestMapping ,其它类型的注解本质上是 @RequestMapping 的简写形式
比如 @GetMapping 其实可以写为@RequestMapping( method = RequestMethod.GET)
建议在类级别上只使用 @RequestMapping ,用于指定基本路径
而在每个方法上根据方法功能不同使用更具体的请求映射注解