Spring集成MyBatis

基本准备

创建Dynamic Web Project
引入相关jar包

Spring框架相关jar包

MyBatis连接Spring相关jar包

连接MySQL驱动包

JSTL标签库包

添加db.properties文件,该属性文件配置连接数据库相关信息
html 复制代码
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/mybatis?characterEncoding=utf-8
user=root
password=
添加Spring配置文件,在src中新增applicationContext.xml,并引入该属性文件
html 复制代码
<!-- 导入数据库连接信息的属性文件 -->
<context:property-placeholder location="classpath:db.properties"/>
在Spring配置文件中添加DataSource的配置,PooledDataSource为MyBatis实现的数据库连接池
html 复制代码
<!-- 配置数据源 -->
<bean id="dataSource" class="org.apache.ibatis.datasource.pooled.PooledDataSource">
<property name="driver" value="${driver}"></property>
<property name="username" value="${user}"></property>
<property name="password" value="${password}"></property>
<property name="url" value="${url}"></property>
</bean>
在Spring配置文件中添加SqlSessionFactoryBean,用来创建SqlSessionFactory对象

configLocation:用于指定MyBatis的mybatis.xml配置文件的路径

dataSource:用于配置数据源,该属性为必选项,可以直接引用已经配置好的dataSource数据库连接池

mapperLocations:扫描XML映射文件的路径

html 复制代码
<bean id="sqlSessionFactory" 
    class="org.mybatis.spring.SqlSessionFactoryBean">
    <!-- 添加mybatis主配置文件的位置 -->
    <property name="configLocation" value="classpath:mybatis.xml"/>
    <!-- 需要一个数据源 -->
    <property name="dataSource" ref="dataSource"></property>
    <!-- 设置映射文件的位置 -->
    <property name="mapperLocations">
        <array>
            <value>classpath:net/onest/server/dao/*.xml</value>
        </array>
    </property>
</bean>
在Spring配置文件中添加MapperScannerConfigurer,自动扫描所有的Mapper接口

basePackage:用于配置基本的包路径

html 复制代码
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
    <property name="basePackage" value="net.onest.server.dao"/>
</bean>
按照SSH集成的web.xml,添加Spring和SpringMVC相关配置
创建实体类
创建数据库表
创建index.jsp

开发Mapper层(Dao层)

Mapper层也就是常说的数据访问层(Dao层)。根据配置文件中配置的自动扫描接口的包名创建映射接口和XML映射文件

java 复制代码
public interface UserMapper {
    public List<User> findAllUsers();
    public int saveUser(User u);
}
html 复制代码
<mapper namespace="net.onest.server.dao.UserMapper">
    <resultMap type="net.onest.server.entity.User" id="userMap">
        <id column="id" property="id"/>
        <result column="user_name" property="userName"/>
        <result column="password" property="password"/>
    </resultMap>
    <select id="findAllUsers" resultMap="userMap">
        select * from user
    </select>
    <insert id="saveUser">
        insert into user(user_name,password)  
        values(#{userName},#{password})
    </insert>
</mapper>

开发业务层(Service层)

添加Service层的接口和实现类

java 复制代码
public interface UserService {

    public List<User> findAllUsers();
    public int saveUser(User u);
}
java 复制代码
@Service
public class UserServiceImpl implements UserService{
    @Autowired
    private UserMapper userMapper;
    @Override
    public List<User> findAllUsers() {
        return userMapper.findAllUsers();
    }
    @Override
    public int saveUser(User u) {
        return userMapper.saveUser(u);
    }
}

Service的实现类需要添加@Service注解,由于在Spring配置文件中配置了自动扫描Service实现类所在的包,所以Spring在初始化时就会扫描到添加了@Service注解的类

由于配置了自动扫描Mapper接口,所以在Service层可以使用@AutoWired注解自动注入Mapper

开发控制层(Controller层)

java 复制代码
@RequestMapping("/user")
@Controller
public class UserController {
    @Autowired
    private UserService userService;

    @RequestMapping("/userList")
    public ModelAndView getUsers() {
        ModelAndView mv = new ModelAndView("userList");
        List<User> users = userService.findAllUsers();
        mv.addObject("users", users);
        return mv;
    }
    ......
}
java 复制代码
@RequestMapping("/addUser")
public ModelAndView addUser() {
    ModelAndView mv = new ModelAndView("addUser");
    User u = new User();
    mv.addObject("user", u);
    return mv;
}
@RequestMapping("/saveUser")
public ModelAndView saveUser(User u) {
    ModelAndView mv = new ModelAndView();
    userService.saveUser(u);
    mv.setViewName("redirect:/user/userList");
    return mv;
}

开发视图层(View层)

根据在SpringMVC配置文件中的视图配置需要在WebContent/WEB-INF中新建jsp目录来存放所有的jsp文件

java 复制代码
<bean id="viewResolver" class=
"org.springframework.web.servlet.view.InternalResourceViewResolver">
    <property name="prefix" value="/WEB-INF/jsp/"/>
    <property name="suffix" value=".jsp"/>
</bean>
相关推荐
caoerzhong2 分钟前
跨境海外仓怎么管:JeeWMS 开源 Java 仓库管理系统打通头程、海外仓与尾程
java·开发语言·开源
MayBaymax8 分钟前
Elasticsearch 原理与用法
java·elasticsearch
马剑威(威哥爱编程)10 分钟前
【AI全栈后端12-02】Spring Boot 跑通第一个 AI 对话接口:HR 政策问答机器人实战
java·人工智能·spring boot·机器人
IT枫斗者枫哥12 分钟前
AI返回合法JSON,字段就可信吗?给抽取结果补一道业务校验
java·人工智能·后端
用户31268748772014 分钟前
Java IO/NIO/AIO 演进:从 BIO 到 Netty 的底层逻辑
java
IT枫斗者枫哥16 分钟前
同一个requestId换了参数,为什么不能直接返回旧结果?
java·后端
天天被压力17 分钟前
【别再到处找免费股票数据API了:官方204个接口,32篇一次讲透 #06】Python实时行情总报错?五档盘口+逐笔一次跑通
java·人工智能·python
今年下半年30 分钟前
【网站连通性检测】java项目telnet、curl命令的使用
java·curl·telnet
摇滚侠31 分钟前
《Spring Boot 3:高级与架构设计》第 2 章 IOC 容器的高级机制 编程式驱动 IOC 阅读笔记 7
java·spring boot·笔记
IT枫斗者枫哥33 分钟前
ORDER BY时间还会漏单?用相同时间和插入记录测一次分页
java·后端