Mybatis项目小demo
pom.xml配置
接昨天的pom.xml在文件末尾添加:
<!-- Could not find resource com/zhongruan/dao/UserDao.xml 解决方法 -->
<!-- 当项目构建时 到 java文件夹下 去加载 所有 文件夹下的 所有后缀名为 .xml 的文件 -->
<build>
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
</resource>
</resources>
</build>
resource文件夹下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="development">
<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="a129297"/>
</dataSource>
</environment>
</environments>
<!-- 注册映射文件 -->
<mappers>
<mapper resource="com/whut/dao/UserDao.xml"></mapper>
</mappers>
</configuration>
在com/whut/bean目录下创建User类
package com.whut.bean;
public class User {
private int id;
private String username;
private String password;
public void setUsername(String name){
this.username=name;
}
public void setPassword(String password){
this.password=password;
}
public String getUsername(){
return this.username;
}
public String getPassword(){
return this.password;
}
}
在com/whut/dao目录下创建UserDao和UserDao.xml
// UserDao
package com.whut.dao;
import com.whut.bean.User;
public interface UserDao {
void save(User user);
}
//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">
<!--
1. mapper 标签一定要指定 名称空间 namespace
2. statment 标签(insert update select) id属性 必须与方法名相对应
3. #{} 占位符 user.username
-->
<mapper namespace="com.whut.dao.UserDao">
<insert id="save" parameterType="com.whut.bean.User">
insert into t_user(username, password) values (#{username}, #{password})
</insert>
</mapper>
在com/whut/test目录下创建测试类demo
package com.whut.test;
import com.whut.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 demo{
public static void main(String[] args) {
// 加载Mybatis的配置文件
InputStream inputStream = demo.class.getClassLoader().getResourceAsStream("config.xml");
// 得到Mybatis的核心类
SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();
SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(inputStream);
SqlSession sqlSession = sqlSessionFactory.openSession();
// 指定调用的方法
String statement = "com.whut.dao.UserDao.save";
// 指定需要存储的对象
User user = new User();
user.setUsername("阿鹄");
user.setPassword("a129297");
// 调用方法
sqlSession.insert(statement, user);
sqlSession.commit();
}
}
运行结果:
运行前t_user内容:
运行后t_user内容:
SSM整合及简易项目demo
本次项目练习使用了Spring+SpringMVC+Mybatis+MySQL
版本号:SpringMVC(5.2.7.RELEASE)
SpringJDBC(5.2.7.RELEASE)
SpringAOP(5.2.7.RELEASE)
SpringAspect(5.2.7.RELEASE)
Mybatis-Spring(2.0.5)
servlet API(3.1.0)
Mybatis(3.5.5)
Mysql(8.0.20)
c3p0(0.9.5.4)
JSTL(1.2)
新建maven-webapp项目
注意选择JDK版本
然后一路next就行了
pom.xml配置
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.whut</groupId>
<artifactId>ssm_demo</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>war</packaging>
<name>ssm_demo Maven Webapp</name>
<!-- FIXME change it to the project's website -->
<url>http://www.example.com</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.7</maven.compiler.source>
<maven.compiler.target>1.7</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
<!-- 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>com.mchange</groupId>
<artifactId>c3p0</artifactId>
<version>0.9.5.4</version>
</dependency>
<!--JSTL jsp标准标签库-->
<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>
<include>**/*.properties</include>
</includes>
</resource>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.*</include>
</includes>
</resource>
</resources>
<finalName>ssm_demo</finalName>
<pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
<plugins>
<plugin>
<artifactId>maven-clean-plugin</artifactId>
<version>3.1.0</version>
</plugin>
<!-- see http://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_war_packaging -->
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<version>3.0.2</version>
</plugin>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.0</version>
</plugin>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.22.1</version>
</plugin>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>3.2.2</version>
</plugin>
<plugin>
<artifactId>maven-install-plugin</artifactId>
<version>2.5.2</version>
</plugin>
<plugin>
<artifactId>maven-deploy-plugin</artifactId>
<version>2.8.2</version>
</plugin>
</plugins>
</pluginManagement>
</build>
</project>
web.xml配置
<!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>
<!-- 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>
<!-- 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>
<!-- 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>
这里要注意
> `<web-app></web-app>`之间必须按照一定顺序来设置参数(不同参数之间的先后顺序必须保持以下规则)
>
> "(icon?,display-name?,description?,distributable?,context-param*,filter*,filter-mapping*,listener*,servlet*,servlet-mapping*,session-config?,mime-mapping*,welcome-file-list?,error-page*,taglib*,resource-env-ref*,resource-ref*,security-constraint*,login-config?,security-role*,env-entry*,ejb-ref*,ejb-local-ref*)".
在com/whut/bean目录下创建User
package com.whut.bean;
public class User {
private int id;
private String username;
private String password;
public User() {
}
public User(int id, String username, String password) {
this.id = id;
this.username = username;
this.password = password;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
@Override
public String toString() {
return "User{" +
"id=" + id +
"\n username='" + username + '\'' +
"\n password='" + password + '\'' +
'}';
}
}
在com/whut/dao目录下创建UserDao和UserDao.xml
package com.whut.dao;
import com.whut.bean.User;
import java.util.List;
public interface UserDao {
// 查询全部用户 的方法
List<User> findAll();
//增
int add(User user);
//删
int del(int id);
//改
int up(User user);
//查 (单个用户)
User find(int id);
// List集合的接口 <User> 泛型就是 将运行期间的错误 转换到 编译期间 User.login() Student.login()
}
<?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.whut.dao.UserDao">
<select id="findAll" resultType="User">
select * from t_user;
</select>
<select id="find" parameterType="Integer" resultType="User">
select * from t_user where id=#{id};
</select>
<insert id="add" parameterType="User">
insert into t_user(username, password) values (#{username}, #{password});
</insert>
<delete id="del" parameterType="Integer">
delete from t_user where id=#{id};
</delete>
<update id="up" parameterType="User">
update t_user set username=#{username},password=#{password} where id=#{id};
</update>
</mapper>
在com/whut/controller目录下创建UserHandler
package com.whut.controller;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import com.whut.bean.User;
import com.whut.dao.UserDao;
import com.whut.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
@Controller
@RequestMapping("/user")
public class UserHandler {
// @Controller 表示UserHandler类 是一个控制器类(处理请求)
@Autowired
UserDao userDao;
@Autowired
UserService userService;
@RequestMapping("/findAll")
public ModelAndView index() {
System.out.println("index方法执行 ");
List<User> user=null;
ModelAndView mv=new ModelAndView();
user=userService.findAll();
mv.addObject("list",user);
mv.setViewName("list");
return mv;
}
@RequestMapping("/add")
public ModelAndView sendMail_add() {
String s = "添加失败!";
ModelAndView mv=new ModelAndView();
User user = new User();
user.setUsername("石杨鹄");
user.setPassword("123456");
if (userService.add(user)) {
s = "添加成功!";
mv.addObject("add",s);
mv.setViewName("add");
return mv;
}
mv.addObject("add",s);
mv.setViewName("add");
return mv;
}
@RequestMapping("/del")
public ModelAndView sendMail_del() {
String s = "删除失败!";
ModelAndView mv=new ModelAndView();
int id=2;
if (userService.del(id)) {
s = "删除成功!";
mv.addObject("add",s);
mv.setViewName("add");
return mv;
}
mv.addObject("add",s);
mv.setViewName("add");
return mv;
}
@RequestMapping("/up")
public ModelAndView sendMail_up() {
String s = "修改失败!";
ModelAndView mv=new ModelAndView();
User user;
user=userService.find(2);
if (user!=null) {
user.setPassword("129297");
user.setUsername("syh");
if(userService.up(user)){
s = "修改成功!";
mv.addObject("add",s);
mv.setViewName("add");
return mv;
}
}
mv.addObject("add",s);
mv.setViewName("add");
return mv;
}
}
在com/whut/service目录下创建UserService
package com.whut.service;
import com.whut.bean.User;
import java.util.List;
public interface UserService {
List<User> findAll();
boolean add(User user);
boolean del(int id);
boolean up(User user);
User find(int id);
}
在com/whut/service/impl目录下创建UserServiceImpl
package com.whut.service.impl;
import com.whut.bean.User;
import com.whut.dao.UserDao;
import com.whut.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();
}
@Override
public boolean add(User user) {
return userDao.add(user)>0?true:false;
}
@Override
public boolean del(int id) {
return userDao.del(id)>0?true:false;
}
@Override
public boolean up(User user) {
return userDao.up(user)>0?true:false;
}
@Override
public User find(int id) {
return userDao.find(id);
}
}
搭建Tomcat
运行Tomcat服务器进入主页
添加用户
更新用户
删除数据