首页技术栈归档照片墙音乐日记随想收藏夹友链留言关于

11.整合mybatis方式(2)

写作时间:2026-07-08

11.整合mybatis方式(2)

使用JNDI需要在Tomcat下的conf下的context.xml配置
<?xml version="1.0" encoding="UTF-8"?>
<!--
  Licensed to the Apache Software Foundation (ASF) under one or more
  contributor license agreements.  See the NOTICE file distributed with
  this work for additional information regarding copyright ownership.
  The ASF licenses this file to You under the Apache License, Version 2.0
  (the "License"); you may not use this file except in compliance with
  the License.  You may obtain a copy of the License at

      http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License.
-->
<!-- The contents of this file will be loaded for each web application -->
<Context>
    <!-- Default set of monitored resources. If one of these changes, the    -->
    <!-- web application will be reloaded.                                   -->
    <WatchedResource>WEB-INF/web.xml</WatchedResource>
    <WatchedResource>${catalina.base}/conf/web.xml</WatchedResource>
    <!-- Uncomment this to disable session persistence across Tomcat restarts -->
    <!--<Manager pathname="" />-->
	<!--<Environment name="test" value="study jspweb" type="java.lang.String" />-->


	<Environment name="t133JNDI" value="学习JNDI" type="java.lang.String" />


	<!--<Resource name="jdbc/bookshopplus" auth="Container" type="javax.sql.DataSource"
   maxActive="100" maxIdle="30" maxWait="10000" username="root" password="root" driverClassName="com.mysql.jdbc.Driver"
   url="jdbc:mysql://127.0.0.1:3306/bookshopplus?
           useUnicode=true&amp;characterEncoding=utf-8" />-->

	 <Resource   
        name="jdbc/cvs_db"  
        auth="Container"   
        type="javax.sql.DataSource"  
        maxTotal="100"   
        maxIdle="30"   
        maxWaitMillis="10000"  
        username="root"   
        password="root"  
        driverClassName="com.mysql.cj.jdbc.Driver"  
        url="jdbc:mysql://127.0.0.1:3306/cvs_db?useUnicode=true&amp;characterEncoding=utf8&amp;serverTimezone=Asia/Shanghai"/>

</Context>

SysUserMapper
package cn.cvs.mapper;
import cn.cvs.pojo.SysUser;
import java.util.List;
/**
 * SysUserMapper类
 *
 * @author Aiden
 */
public interface SysUserMapper {
    //查询全部
    List<SysUser> selectUserList();
    //新增
    int insert(SysUser sysUser);

}
SysUserMapperImpl
package cn.cvs.mapper;
import cn.cvs.pojo.SysUser;
import org.mybatis.spring.SqlSessionTemplate;
import org.springframework.stereotype.Repository;
import java.util.List;
/**
 * SysUserMapperImpl类
 *
 * @author Aiden
 */
@Repository
public class SysUserMapperImpl implements SysUserMapper {

    private SqlSessionTemplate sqlSession;

    public void setSqlSession(SqlSessionTemplate sqlSession) {
        this.sqlSession = sqlSession;
    }

    @Override
    public List<SysUser> selectUserList() {
        return sqlSession.getMapper(SysUserMapper.class).selectUserList();
    }

    @Override
    public int insert(SysUser sysUser) {
        return sqlSession.getMapper(SysUserMapper.class).insert(sysUser);
    }
}

SysUserMapper
<?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="cn.cvs.mapper.SysUserMapper">
    <select id="selectUserList" resultType="SysUser">
        SELECT * FROM `t_sys_user`
    </select>
    <insert id="insert" parameterType="SysUser">
        INSERT INTO `cvs_db`.`t_sys_user` (
	`id`,
	`account`,
	`realName`,
	`password`,
	`sex`,
	`birthday`,
	`phone`,
	`address`,
	`roleId`,
	`createdUserId`,
	`createdTime`
)
VALUES
	(
		null,
		#{account},
		#{realName},
		#{password},
		#{sex},
		#{birthday},
		#{phone},
		#{address},
		#{roleId},
		#{createdUserId},
		#{createdTime});
    </insert>
</mapper>

SysUser
package cn.cvs.pojo;

import lombok.Data;

import java.util.Date;

/**
 * @author aiden
 */
public class SysUser {
    private Integer id; //id
    private String account; //用户编码
    private String realName; //用户名称
    private String password; //用户密码
    private Integer sex;  //性别
    private Date birthday;  //出生日期
    private String phone;   //电话
    private String address; //地址
    private Integer roleId;    //用户角色ID
    private Integer createdUserId;   //创建者
    private Date createdTime; //创建时间
    private Integer updatedUserId;     //更新者
    private Date updatedTime;   //更新时间
    private Integer age;//年龄
    private String roleIdName; //用户角色名称

    public Integer getAge() {
		/*long time = System.currentTimeMillis()-birthday.getTime();
		Integer age = Long.valueOf(time/365/24/60/60/1000).IntegerValue();*/
        Date date = new Date();
        Integer age = date.getYear() - birthday.getYear();
        return age;
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getAccount() {
        return account;
    }

    public void setAccount(String account) {
        this.account = account;
    }

    public String getRealName() {
        return realName;
    }

    public void setRealName(String realName) {
        this.realName = realName;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public Integer getSex() {
        return sex;
    }

    public void setSex(Integer sex) {
        this.sex = sex;
    }

    public Date getBirthday() {
        return birthday;
    }

    public void setBirthday(Date birthday) {
        this.birthday = birthday;
    }

    public String getPhone() {
        return phone;
    }

    public void setPhone(String phone) {
        this.phone = phone;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    public Integer getRoleId() {
        return roleId;
    }

    public void setRoleId(Integer roleId) {
        this.roleId = roleId;
    }

    public Integer getCreatedUserId() {
        return createdUserId;
    }

    public void setCreatedUserId(Integer createdUserId) {
        this.createdUserId = createdUserId;
    }

    public Date getCreatedTime() {
        return createdTime;
    }

    public void setCreatedTime(Date createdTime) {
        this.createdTime = createdTime;
    }

    public Integer getUpdatedUserId() {
        return updatedUserId;
    }

    public void setUpdatedUserId(Integer updatedUserId) {
        this.updatedUserId = updatedUserId;
    }

    public Date getUpdatedTime() {
        return updatedTime;
    }

    public void setUpdatedTime(Date updatedTime) {
        this.updatedTime = updatedTime;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    public String getRoleIdName() {
        return roleIdName;
    }

    public void setRoleIdName(String roleIdName) {
        this.roleIdName = roleIdName;
    }

    @Override
    public String toString() {
        return "SysUser{" +
                "id=" + id +
                ", account='" + account + '\'' +
                ", realName='" + realName + '\'' +
                ", password='" + password + '\'' +
                ", sex=" + sex +
                ", birthday=" + birthday +
                ", phone='" + phone + '\'' +
                ", address='" + address + '\'' +
                ", roleId=" + roleId +
                ", createdUserId=" + createdUserId +
                ", createdTime=" + createdTime +
                ", updatedUserId=" + updatedUserId +
                ", updatedTime=" + updatedTime +
                ", age=" + age +
                ", roleIdName='" + roleIdName + '\'' +
                '}';
    }
}
SysUserService
package cn.cvs.service;

import cn.cvs.pojo.SysUser;

import java.util.List;

/**
 * SysUserService类
 *
 * @author Aiden
 */
public interface SysUserService {
    //查询全部
    List<SysUser> selectUserList();
    //新增
    int insert(SysUser sysUser) throws Exception;
}
SysUserServiceImpl
package cn.cvs.service.impl;

import cn.cvs.mapper.SysUserMapper;
import cn.cvs.pojo.SysUser;
import cn.cvs.service.SysUserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

/**
 * SysUserServiceImpl类
 *
 * @author Aiden
 */
@Service
@Transactional
public class SysUserServiceImpl implements SysUserService {

    @Autowired
    private SysUserMapper sysUserMapper;

    public void setSysUserMapper(SysUserMapper sysUserMapper) {
        this.sysUserMapper = sysUserMapper;
    }

    @Override
    public List<SysUser> selectUserList() {
        return sysUserMapper.selectUserList();
    }

    @Override
    public int insert(SysUser sysUser) {
        int result = 0;
        try {
            result = sysUserMapper.insert(sysUser);
            throw  new RuntimeException("模拟异常");
        } catch (Exception e) {
            e.printStackTrace();
            throw e;
        }
        //return result;
    }
}
SysUserServlet
package cn.cvs.servlet;

import cn.cvs.pojo.SysUser;
import cn.cvs.service.SysUserService;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;

@WebServlet("/SysUserServlet")
public class SysUserServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        request.setCharacterEncoding("utf-8");
        response.setContentType("text/html;charset=UTF-8");
        ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
        SysUserService sysUserServiceImpl = context.getBean("sysUserServiceImpl", SysUserService.class);
        List<SysUser> sysUsers = sysUserServiceImpl.selectUserList();
       request.setAttribute("sysList",sysUsers);
       request.getRequestDispatcher("index.jsp").forward(request,response);
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
       doPost(request, response);
    }
}
index.jsp
<%@ page import="java.util.List" %>
<%@ page import="cn.cvs.pojo.SysUser" %>
<%@ page import="lombok.val" %><%--
  Created by IntelliJ IDEA.
  User: 111
  Date: 2021-12-15
  Time: 9:35
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
  <head>
    <title>$Title$</title>
  </head>
  <body>
     <%
      List<SysUser> sysUsers = (List<SysUser>) request.getAttribute("sysList");
         for (int i = 0; i <sysUsers.size() ; i++) {
             System.out.println(sysUsers.get(i).getRoleIdName());
         }
     %>
  </body>
</html>
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"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:aop="http://www.springframework.org/schema/aop"
       xmlns:tx="http://www.springframework.org/schema/tx"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans.xsd
    http://www.springframework.org/schema/context
    http://www.springframework.org/schema/context/spring-context.xsd
    http://www.springframework.org/schema/tx
    http://www.springframework.org/schema/tx/spring-tx.xsd
    http://www.springframework.org/schema/aop
    http://www.springframework.org/schema/aop/spring-aop.xsd">


        <context:property-placeholder location="classpath:db.properties"/>
    <!--  1.配置Spring管理数据源(DBCP) destroy-method=”close”的作用是当数据库连接不使用的时候,就把该连接重新放到数据池中,方便下次使用调用 -->
    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
        <property name="driverClassName" value="${jdbc.driver}"/>
        <property name="url" value="${jdbc.url}"/>
        <property name="username" value="${jdbc.username}"/>
        <property name="password" value="${jdbc.password}"/>
    </bean>
    <!--jndl配置-->
    <!--通过JNDI配置DataSource-->
<!--    <bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">-->
<!--        &lt;!&ndash;通过jndiName指定引用的JNDI数据源名称&ndash;&gt;-->
<!--        <property name="jndiName">-->
<!--            <value>java:comp/env/jdbc/cvs_db</value>-->
<!--        </property>-->
<!--    </bean>-->
    <!-- 2.配置SqlSessionFactoryBean 创建对象的过程全部交给spring来做-->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean" >
        <!--2.1配置数据源组件-->
        <property name="dataSource" ref="dataSource"/>
        <!--2.2配置别名-->
        <property name="typeAliasesPackage" value="cn.cvs.pojo"></property>
        <!--2.3配置mapper映射文件的位置-->
        <!--        <property name="mapperLocations" value="classpath:cn/cvs/mapper/*Mapper.xml"></property>-->
        <!--2.4可直接引入mybatis配置文件-->
        <property name="configLocation" value="classpath:mybatis-config.xml"></property>
    </bean>
    <!-- 3.配置SqlSessionTemplate-->
    <bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate">
        <constructor-arg index="0" ref="sqlSessionFactory"></constructor-arg>
    </bean>
    <!-- 4.mapper配置扫描-->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage" value="cn.cvs.mapper"></property>
    </bean>

    <!--4.扫描指定包下的Bean-->
    <context:component-scan base-package="cn.cvs.mapper,cn.cvs.service"></context:component-scan>

    <!--5.定义事务管理器-->
    <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource"></property>
    </bean>
    <tx:annotation-driven></tx:annotation-driven>
    <tx:advice id="txAdvice" transaction-manager="transactionManager">
        <tx:attributes>
            <tx:method name="get*" propagation="SUPPORTS"/>
            <tx:method name="ins*" propagation="REQUIRED"/>
            <tx:method name="del*" propagation="REQUIRED"/>
            <tx:method name="upd*" propagation="REQUIRED"/>
            <tx:method name="*" propagation="REQUIRED"/>
        </tx:attributes>
    </tx:advice>
    <!--置AOP-->
    <aop:config>
        <aop:pointcut id="pointcut" expression="execution(* cn.cvs.service..*(..))"/>
        <aop:advisor advice-ref="txAdvice" pointcut-ref="pointcut"></aop:advisor>
    </aop:config>
</beans>
db.properties
jdbc.driver=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/cvs_db?useUnicode=true&allowPublicKeyRetrieval=true&characterEncoding=utf8&useSSL=false&serverTimezone=Hongkong
jdbc.username=root
jdbc.password=root
log4j.properties
log4j.rootLogger=DEBUG,CONSOLE,file
#log4j.rootLogger=ERROR,ROLLING_FILE
log4j.logger.cn.cvs.dao=debug
log4j.logger.com.ibatis=debug 
log4j.logger.com.ibatis.common.jdbc.SimpleDataSource=debug 
log4j.logger.com.ibatis.common.jdbc.ScriptRunner=debug 
log4j.logger.com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate=debug 
log4j.logger.java.sql.Connection=debug 
log4j.logger.java.sql.Statement=debug 
log4j.logger.java.sql.PreparedStatement=debug 
log4j.logger.java.sql.ResultSet=debug 
log4j.logger.org.tuckey.web.filters.urlrewrite.UrlRewriteFilter=debug
####################################################################################
# ־�ڿ����������
####################################################################################
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.Threshold=error
log4j.appender.CONSOLE.Target=System.out
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern= [%p] %d %c - %m%n
####################################################################################
####################################################################################
log4j.appender.file=org.apache.log4j.DailyRollingFileAppender
log4j.appender.file.DatePattern=yyyy-MM-dd
log4j.appender.file.File=log.log
log4j.appender.file.Append=true
log4j.appender.file.Threshold=error
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{yyyy-M-d HH:mm:ss}%x[%5p](%F:%L)%m%n
log4j.logger.com.opensymphony.xwork2=error  
mybatis-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>
    <!--配置日志-->
    <settings>
        <setting name="logImpl" value="STDOUT_LOGGING"/>
        <setting name="autoMappingBehavior" value="FULL"/>
    </settings>
    <!--配置别名-->
<!--    <typeAliases>-->
<!--        <package name="cn.cvs.pojo"/>-->
<!--    </typeAliases>-->

<!--    <environments default="development">-->
<!--        <environment id="development">-->
<!--            <transactionManager type="JDBC"/>-->
<!--            <dataSource type="POOLED">-->
<!--                <property name="driver" value="com.mysql.cj.jdbc.Driver"/>-->
<!--                <property name="url"-->
<!--                          value="jdbc:mysql://localhost:3306/cvs_db?useSSL=true&amp;useUnicode=true&amp;characterEncoding=UTF-8&amp;serverTimeZone=UTC"/>-->
<!--                <property name="username" value="root"/>-->
<!--                <property name="password" value="root"/>-->
<!--            </dataSource>-->
<!--        </environment>-->
<!--    </environments>-->

<!--    <mappers>-->
<!--        <mapper resource="cn/cvs/mapper/SysUserMapper.xml"></mapper>-->
<!--        &lt;!&ndash;<package name="cn.cvs.mapper"/>&ndash;&gt;-->
<!--    </mappers>-->
</configuration>
pom.xml
 <dependencies>
    <!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api -->
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>javax.servlet-api</artifactId>
        <version>3.1.0</version>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.13</version>
    </dependency>
    <!--单元测试包-->
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.13</version>
        <scope>test</scope>
    </dependency>
    <!--mysql驱动包-->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>8.0.27</version>
    </dependency>
    <!--mybatis包-->
    <dependency>
        <groupId>org.mybatis</groupId>
        <artifactId>mybatis</artifactId>
        <version>3.5.2</version>
    </dependency>
    <!--spring-webmvc-->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-webmvc</artifactId>
        <version>5.3.13</version>
    </dependency>
    <!--jdbc-->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-jdbc</artifactId>
        <version>5.3.13</version>
    </dependency>
    <!--aop植入包-->
    <dependency>
        <groupId>org.aspectj</groupId>
        <artifactId>aspectjweaver</artifactId>
        <version>1.9.4</version>
    </dependency>
    <!--导入mybatis-Spring-->
    <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis-spring -->
    <dependency>
        <groupId>org.mybatis</groupId>
        <artifactId>mybatis-spring</artifactId>
        <version>2.0.6</version>
    </dependency>
    <!--lombok-->
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <version>1.18.20</version>
    </dependency>
    <!--  dbcp-->
    <dependency>
        <groupId>commons-dbcp</groupId>
        <artifactId>commons-dbcp</artifactId>
        <version>1.4</version>
    </dependency>
    <dependency>
        <groupId>log4j</groupId>
        <artifactId>log4j</artifactId>
        <version>1.2.14</version>
    </dependency>
</dependencies>
avatar

yuanyourdomain

写代码,做研究,记录生活。

RECOMMENDED

MyBatis 动态 SQL

2026-07-08

Nginx 基础入门

2026-07-08

Maven 多模块与私服

2026-07-08