ssm整合Mybatis层
1、创建数据库
-
先建立一个数据库teacher
-
建表
-
create table teacher( id int PRIMARY KEY, name VARCHAR(10) );
-
插入数据
-
INSERT INTO teacher VALUES(1,"张三"); INSERT INTO teacher VALUES(2,"李四"); INSERT INTO teacher VALUES(3,"王五"); INSERT INTO teacher VALUES(4,"赵六");
-
得到如下表
-
2、创建一个maven项目
- 创建一个普通的maven项目
- 添加Web框架
- 目录结构如下
3、导入依赖
【junit】【数据库驱动、连接池】【mybatis、mybatis-spring】【servlet、jsp】【spring】
<!-- 导入依赖:mybaits 、mysql 、数据库连接池、junit 、Spring 、mybatis-spring -->
<!-- 测试-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13.2</version>
<scope>test</scope>
</dependency>
<!-- 数据库-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.29</version>
</dependency>
<!-- 数据库连接池-->
<dependency>
<groupId>com.mchange</groupId>
<artifactId>c3p0</artifactId>
<version>0.9.5.2</version>
</dependency>
<!-- spring整合Mybatis-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.13</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>2.0.2</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.3.30</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>5.3.20</version>
</dependency>
<!-- springmvc-->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
</dependency>
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>2.2</version>
</dependency>
<!--EL表达式-->
<dependency>
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<!--lombok-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.20</version>
</dependency>
- 静态资源导出
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>true</filtering>
</resource>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>true</filtering>
</resource>
</resources>
</build>
4、建立目录结构
5、导入基本代码
- 在mybatis-config.xml文件中导入以下代码
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"https://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<typeAliases>
<package name="com.packet.pojo"/>
</typeAliases>
<mappers>
<package name="com.packet.mapper"/>
</mappers>
</configuration>
- 在applicationContext.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"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
</beans>
- 在database.properties文件中导入以下代码
# *** Oracle9|10|11|12 ****
#jdbc.driverClass=oracle.jdbc.OracleDriver
#jdbc.url=jdbc:oracle:thin:@localhost:1521:orcl
#jdbc.user=system
#jdbc.password=orcl
# *** mysql5.x ****
#jdbc.driverClass=com.mysql.jdbc.Driver
#jdbc.url=jdbc:mysql://localhost:3306/jdbc?serverTimezone=UTC
#jdbc.user=root
#jdbc.password=root
# *** mysql8.x **** 8.0
#https://www.cnblogs.com/softidea/p/5765624.html
jdbc.driverClass=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/teacher?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf8&autoReconnect=true&useSSL=false
jdbc.user=root
jdbc.password=123456
#jdbc.SQLServer 2005/2008/2012/2014/2017
#jdbc.driverClass=com.microsoft.sqlserver.jdbc.SQLServerDriver
#jdbc.url=jdbc:sqlserver://localhost:1433;databaseName=db_book
#jdbc.user=sa
#jdbc.password=123456
【注意】:mysql8.0以上需要有时区的配置
6、建立实体类
- 创建一个Teacher的实体类
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Teacher {
private int id;
private String name;
}
7、编写接口(mapper)
- 创建一个TeacherMapper 加入以下代码
public interface TeacherMapper {
//增加一个老师
public void insertTeacher(Teacher teacher);
//删除一个老师,通过id
public void deleteTeacher(Integer id);
//修改老师姓名
public boolean updateTeacher(Teacher teacher);
//查询全部老师
public List<Teacher> selectTeacherAll();
//通过id,查询一个老师
public Teacher selectTeacherById(Integer id);
}
- 创建一个对应的TeacherMapper.xml文件【在mapper下】,因为已经静态资源导出了,无法在resources下了
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"https://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.packet.mapper.TeacherMapper">
<insert id="insertTeacher" parameterType="com.packet.pojo.Teacher">
insert into teacher values (#{id},#{name})
</insert>
<delete id="deleteTeacher" parameterType="integer">
delete from teacher where id = #{id}
</delete>
<update id="updateTeacher">
update teacher set name = #{name}
</update>
<select id="selectTeacherAll" resultType="Teacher">
select * from teacher
</select>
<select id="selectTeacherById" resultType="Teacher">
select * from teacher where id = #{id}
</select>
</mapper>
8、编写service层
- 创建一个TeacherService的java接口
public interface TeacherService {
public void insertTeacher(Teacher teacher);
//删除一个老师,通过id
public void deleteTeacher(Integer id);
//修改老师姓名
public boolean updateTeacher(Teacher teacher);
//查询全部老师
public List<Teacher> selectTeacherAll();
//通过id,查询一个老师
public Teacher selectTeacherById(Integer id);
}
- 创建一个TeacherServiceImpl的接口实现类
@Service
public class TeacherServiceImpl implements TeacherService {
@Autowired
TeacherMapper teacherMapper;
@Override
public void insertTeacher(Teacher teacher) {
teacherMapper.insertTeacher(teacher);
}
@Override
public void deleteTeacher(Integer id) {
teacherMapper.deleteTeacher(id);
}
@Override
public boolean updateTeacher(Teacher teacher) {
return teacherMapper.updateTeacher(teacher);
}
@Override
public List<Teacher> selectTeacherAll() {
return teacherMapper.selectTeacherAll();
}
@Override
public Teacher selectTeacherById(Integer id) {
return teacherMapper.selectTeacherById(id);
}
}
9、创建一个spring-mybatis.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"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
https://www.springframework.org/schema/context/spring-context.xsd">
<context:property-placeholder location="classpath:database.properties"/>
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass" value="${jdbc.driverClass}"/>
<property name="jdbcUrl" value="${jdbc.url}"/>
<property name="user" value="${jdbc.user}"/>
<property name="password" value="${jdbc.password}"/>
</bean>
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="configLocation" value="classpath:mybatis-config.xml"/>
</bean>
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
<property name="basePackage" value="com.packet.mapper"/>
</bean>
</beans>
10、创建一个spring-service.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"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
https://www.springframework.org/schema/context/spring-context.xsd">
<context:component-scan base-package="com.packet.service"/>
</beans>
11.在applicationContext.xml文件中
- 导入其他的配置
<import resource="spring-mybatis.xml"/>
<import resource="spring-service.xml"/>
12、测试
- 创建一个测试类
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:applicationContext.xml")
public class Mytest {
@Autowired
TeacherMapper teacherMapper;
@Test
public void test1(){
List<Teacher> teachers = teacherMapper.selectTeacherAll();
for (Teacher teacher : teachers) {
System.out.println(teacher);
}
}
}
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(“classpath:applicationContext.xml”)
public class Mytest {
@Autowired
TeacherMapper teacherMapper;
@Test
public void test1(){
List teachers = teacherMapper.selectTeacherAll();
for (Teacher teacher : teachers) {
System.out.println(teacher);
}
}
}
【如果没有上面那两个注解是不行的】