mybaits
MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Ordinary Java Object,普通的 Java对象)映射成数据库中的记录。
mybaits的使用
代码如下:
1.test
package com.zhongruan.test;
import com.zhongruan.bean.User;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import java.io.InputStream;
public class Test01 {
public static void main(String[] args) {
// 加载Mybatis的配置文件
InputStream inputStream = Test01.class.getClassLoader().getResourceAsStream("config.xml");
// 得到Mybatis的核心类
SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();
SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(inputStream);
SqlSession sqlSession = sqlSessionFactory.openSession();
// 指定调用的方法
String statement = "com.zhongruan.dao.UserDao.save";
// 指定需要存储的对象
User user = new User();
user.setUsername("tianqi");
user.setPassword("111111");
// 调用方法
sqlSession.insert(statement, user);
sqlSession.commit();
}
}
- userdao
package com.zhongruan.dao;
import com.zhongruan.bean.User;
public interface UserDao {
void save(User user);
}
config.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>
<!-- 配置mybatis的运行环境 -->
<environments default="">
<environment id="development">
<!-- 配置JDBC事务管理 -->
<transactionManager type="JDBC"></transactionManager>
<!-- 配置数据源 数据源采用数据库连接池技术 c3p0 druid-->
<dataSource type="POOLED">
<!-- 数据库相关配置 -->
<!-- mysql 8 以上驱动 -->
<!--<property name="driver" value="com.mysql.cj.jdbc.Driver"/>-->
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/whlg?serverTimezone=Asia/Shanghai"/>
<property name="username" value="root"/>
<property name="password" value="password"/>
</dataSource>
</environment>
</environments>
</configuration>
4.user类
public class User {
private int id;
private String username;
private String password;
// 构造方法 toString getter setter 省略
}
- 结果
SSM
SSM(Spring+SpringMVC+MyBatis)框架集由Spring、MyBatis两个开源框架整合而成(SpringMVC是Spring中的部分内容)。常作为数据源较简单的web项目的框架。
SSM整合
代码如下
pom.xml
<dependencies>
<!-- SpringMVC -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.2.7.RELEASE</version>
</dependency>
<!-- SpringJDBC -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>5.2.7.RELEASE</version>
</dependency>
<!-- SpringAOP -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aop</artifactId>
<version>5.2.7.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aspects</artifactId>
<version>5.2.7.RELEASE</version>
</dependency>
<!-- Mybatis -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.5</version>
</dependency>
<!-- Mybatis整合Spring -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>2.0.5</version>
</dependency>
<!-- mysql驱动 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.20</version>
</dependency>
<!-- c3p0 连接池技术 -->
<dependency>
<groupId>c3p0</groupId>
<artifactId>c3p0</artifactId>
<version>0.9.1.2</version>
</dependency>
<!-- JSTL jsp standred Tag library -->
<dependency>
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<!-- Servlet API-->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
</dependency>
</dependencies>
<build>
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
</resource>
</resources>
</build>
<!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd" >
<web-app>
<display-name>Archetype Created Web Application</display-name>
<!-- Spring -->
<!-- 1. 启动Spring -->
<!-- context 上下文 ==》 运行环境 -->
<!-- 1.1 配置全局参数 -->
<context-param>
<param-name>contextConfigLocation</param-name>
<!-- classpath 相当于 resources路径 -->
<param-value>classpath: spring.xml</param-value>
</context-param>
<!-- 1.2 配置监听器 -->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<!-- SpringMVC -->
<!-- 2. 启动 SpringMVC -->
<!-- 2.1. 配置核心servlet DispathcerServlet-->
<servlet>
<servlet-name>dispatcherServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!-- 2.1.1 引入 SpringMVC 的配置文件 -->
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:springmvc.xml</param-value>
</init-param>
</servlet>
<!-- 2.2 配置servlet的映射 -->
<servlet-mapping>
<servlet-name>dispatcherServlet</servlet-name>
<!-- / 表示监听了 所有的请求 -->
<url-pattern>/</url-pattern>
</servlet-mapping>
<!-- 3. 字符编码过滤器 -->
<filter>
<filter-name>characterEncodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>characterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!-- 4. 加载静态资源 -->
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.js</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.css</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.jpg</url-pattern>
</servlet-mapping>
</web-app>
spring.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd
">
<!-- 整合Mybatis -->
<!-- 1. 配置数据源 -->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<!-- 1.1 配置数据库基本参数 -->
<property name="jdbcUrl" value="jdbc:mysql:///whlg?serverTimezone=Asia/Shanghai"/>
<property name="driverClass" value="com.mysql.jdbc.Driver"/>
<property name="user" value="root"/>
<property name="password" value="password"/>
<!-- 1.2 配置连接池参数 -->
<property name="initialPoolSize" value="5"/>
<property name="maxPoolSize" value="10"/>
</bean>
<!-- 2. 配置mybatis中的核心类 将sqlSessionFactory 交给Spring管理 -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<!-- 引入数据源 -->
<property name="dataSource" ref="dataSource"/>
<!-- 注册映射文件 -->
<property name="mapperLocations" value="classpath:com/zhongruan/repository/*.xml"/>
<!-- 引入mybatis的配置文件 -->
<property name="configLocation" value="classpath:config.xml"/>
</bean>
<!-- 3. mybatis 会将接口实现 此时需要将实现类交给Spring管理 -->
<!-- 将实现类 放置到IOC容器中 -->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.zhongruan.repository"/>
</bean>
</beans>
springmvc.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd">
<!-- 1. 启动注解驱动 -->
<mvc:annotation-driven></mvc:annotation-driven>
<!-- 2. 扫描业务代码 -->
<context:component-scan base-package="com.zhongruan"/>
<!-- 3. 配置视图解析器 -->
<!-- 视图解析器的作用: 将逻辑视图转换成物理视图 "index" ==> /index.jsp -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<!-- 前缀 -->
<property name="prefix" value="/"/>
<!-- 后缀 -->
<property name="suffix" value=".jsp"/>
</bean>
</beans>
config.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>
</configuration>
user
public class User {
private int id;
private String username;
private String password;
}
userdao
package com.zhongruan.dao;
import com.zhongruan.bean.User;
import java.util.List;
public interface UserDao {
// 查询全部用户 的方法
List<User> findAll();
// List集合的接口 <User> 泛型就是 将运行期间的错误 转换到 编译期间 User.login() Student.login()
}
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 namespace="com.zhongruan.dao.UserDao">
<select id="findAll" resultType="com.zhongruan.bean.User">
select * from t_user
</select>
</mapper>
UserService
package com.zhongruan.service;
import com.zhongruan.bean.User;
import java.util.List;
public interface UserService {
List<User> findAll();
}
UserServiceImpl
package com.zhongruan.service.impl;
import com.zhongruan.bean.User;
import com.zhongruan.dao.UserDao;
import com.zhongruan.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class UserServiceImpl implements UserService {
@Autowired
UserDao userDao;
@Override
public List<User> findAll() {
return userDao.findAll();
}
}
UserHandler
package com.zhongruan.controller;
import com.zhongruan.dao.UserDao;
import com.zhongruan.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
@Controller
@RequestMapping("/user")
public class UserHandler {
// @Controller 表示UserHandler类 是一个控制器类(处理请求)
@Autowired
UserDao userDao;
@Autowired
UserService userService;
@RequestMapping("/findAll")
public ModelAndView index() {
System.out.println("index方法执行 ");
ModelAndView mv = new ModelAndView();
mv.addObject("list", userDao.findAll());
mv.setViewName("list");
return mv;
// ModelAndView 数据视图
// return "index";
}
@RequestMapping("/findAll01")
public ModelAndView index01() {
ModelAndView mv = new ModelAndView();
mv.addObject("list", userService.findAll());
mv.setViewName("list");
return mv;
}
}
list.jsp
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ page isELIgnored="false" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<%-- c:forEach 实现遍历 --%>
<%-- EL表达式 --%>
<c:forEach items="${list}" var="user">
${user}
</c:forEach>
<%-- EL表达式 jsp页面默认是忽略的 --%>
</body>
</html>
结果
最开始
通过老师指导后