• mybatis+spring整合


    一  需要的包


    二 目录


    三 代码

    user.java

    package com.duobang.sm.pojo;
    import org.apache.ibatis.type.Alias;
    //配置别名
    @Alias(value = "user")
    public class User {
    private int id;
    private int password;
    private String username;
    public int getId() {
    return id;
    }
    public void setId(int id) {
    this.id = id;
    }
    public int getPassword() {
    return password;
    }
    public void setPassword(int password) {
    this.password = password;
    }
    public String getUsername() {
    return username;
    }
    public void setUsername(String username) {
    this.username = username;
    }
    @Override
    public String toString() {
    return "User [id=" + id + ", password=" + password + ", username=" + username + "]";
    }

    }

    usermapper.java

    package com.duobang.sm.mapper;
    import java.util.List;
    import java.util.Map;
    import org.apache.ibatis.annotations.MapKey;
    import com.duobang.sm.pojo.User;
    public interface UserMapper {
    public User getUser(int id);
    public void insertUser(User user);
    public int updateUser(User user);
    public int deleteUser(int id);
    public List<User> getUserList();
    @MapKey("username")
    public Map<Integer, User> getUserMap();
    }


    UserMapper.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.duobang.sm.mapper.UserMapper">
    <!-- 查询学生,根据id -->
    <select id="getUser" parameterType="int" resultType="user">
    select *
    from user where id=#{id};
    </select>


    <!-- 增 -->
    <insert id="insertUser" parameterType="user" useGeneratedKeys="true"
    keyProperty="id">
    insert into user
    (password,username) values (
    #{password}, #{username});
    </insert>


    <!-- 删 -->
    <delete id="deleteUser" parameterType="int">
    delete from user where
    id=#{id};
    </delete>


    <!-- 改 -->
    <update id="updateUser" parameterType="user">update uesr set password =
    #{password} where id=#{id};
    </update>


    <!-- 获得查询集合 -->
    <select id="getUserList" resultMap="visitorUser">
    <include refid="getUserListSql" />
    </select>
    <resultMap id="visitorUser" type="user">
    <id column="id" property="id" />
    <result column="password" property="password" />
    <result column="username" property="username" />
    </resultMap>
    <sql id="getUserListSql">select * from user</sql>


    <!-- 查询获得map -->
    <select id="getUserMap" resultMap="visitorUser" resultType="map">
    <include refid="getUserMapSql" />
    </select>
    <sql id="getUserMapSql">select * from user</sql>
    </mapper>  

    spring-config.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">


    <!-- 配置连接池 -->
    <bean id="poolDataSource" abstract="true">
    <property name="maxActive" value="100" />  <!-- 连接池的最大数据库连接数。设为0表示无限制。 -->
    <property name="initialSize" value="10" />  <!-- 初始化连接数量 -->
    <property name="maxWait" value="10000" />  <!-- 最大建立连接等待时间。如果超过此时间将接到异常。设为-1表示无限制。 -->
    <property name="removeAbandonedTimeout" value="60" />  <!--自我中断时间秒 -->
    <property name="minEvictableIdleTimeMillis" value="30000" />  <!--连接的超时时间,默认为半小时。 -->
    <property name="minIdle" value="10" />  <!-- 最小等待连接中的数量,设 0 为没有限制 -->
    <property name="timeBetweenEvictionRunsMillis" value="30000" />  <!-- #运行判断连接超时任务的时间间隔,单位为毫秒,默认为-1,即不执行任务。 -->
    <property name="jmxEnabled" value="true" />  <!-- 注册池JMX。的默认值是true。 -->
    <property name="testWhileIdle" value="false" />  <!--默认值是false,当连接池中的空闲连接是否有效 -->
    <property name="testOnBorrow" value="true" /> <!-- 默认值是true,当从连接池取连接时,验证这个连接是否有效 -->
    <property name="validationInterval" value="30000" />  <!--检查连接死活的时间间隔(单位:毫妙) 0以下的话不检查。默认是0。 -->
    <property name="testOnReturn" value="false" />  <!--默认值是flase,当从把该连接放回到连接池的时,验证这个连接是 -->
    <property name="validationQuery" value="select 1" />  <!--一条sql语句,用来验证数据库连接是否正常。这条语句必须是一个查询模式,并至少返回一条数据。可以为任何可以验证数据库连接是否正常的sql -->
    <property name="logAbandoned" value="true" />  <!--是否记录中断事件, 默认为 false -->
    <property name="removeAbandoned" value="true" />  <!-- 是否自动回收超时连接 -->


    <!--这些拦截器将被插入到链中的一个java.sql.Connection对象的操作都是以拦截器。默认值是空的。 预定义的拦截器: org.apache.tomcat.jdbc.pool.interceptor.ConnectionState 
    - 跟踪自动提交,只读目录和事务隔离级别。 org.apache.tomcat.jdbc.pool.interceptor.tatementFinalizer 
    - 跟踪打开的语句,并关闭连接时返回到池中。 -->
    <property name="jdbcInterceptors"
    value="org.apache.tomcat.jdbc.pool.interceptor.ConnectionState;org.apache.tomcat.jdbc.pool.interceptor.StatementFinalizer" />
    </bean>


    <!-- 配置数据源 -->
    <bean id="jdbcDataSource" class="org.apache.tomcat.jdbc.pool.DataSource"
    destroy-method="close" parent="poolDataSource">
    <property name="driverClassName" value="com.mysql.jdbc.Driver" />
    <property name="url"
    value="jdbc:mysql://127.0.0.1:3306/test?allowMultiQueries=yes" />
    <property name="username" value="root" />
    <property name="password" value="" />
    </bean>


    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
    <property name="dataSource" ref="jdbcDataSource" />
    <property name="configLocation" value="classpath:mybatis-config.xml"></property>
    </bean>

    <bean id="userMapper" class="org.mybatis.spring.mapper.MapperFactoryBean">
    <property name="mapperInterface" value="com.duobang.sm.mapper.UserMapper"></property>
    <property name="sqlSessionFactory" ref="sqlSessionFactory"></property>
    </bean>
    </beans>


    mybatis-sonfig.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>
    <typeAliases>
      <package name="com.duobang.sm.pojo"/>
    </typeAliases>
    <mappers>
    <mapper resource="com/duobang/sm/mapper/UserMapper.xml"/>
    </mappers>


    </configuration>

    Test.java

    package com.duobang.sm.test;
    import java.util.Arrays;
    import java.util.List;
    import org.springframework.context.support.ClassPathXmlApplicationContext;
    import com.duobang.sm.mapper.UserMapper;
    import com.duobang.sm.pojo.User;
    public class Test {
    static ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("spring-config.xml");


    public static void main(String[] args) {
    UserMapper mapper = context.getBean(UserMapper.class);
    List<User> userList = mapper.getUserList();
    System.out.println(Arrays.toString(userList.toArray()));
    }
    }

    只有把命运掌握在自己手中,从今天起开始努力,即使暂时看不到希望,也要相信自己。因为比你牛几倍的人,依然在努力。
  • 相关阅读:
    命令行
    作业三C++
    作业二
    0003---简单的a+b问题
    0002---五层小山
    0001---Hello world
    关于OJ的那些事
    CDQ分治学习笔记
    C++ IO的一些注意点
    Vscode配置C++环境
  • 原文地址:https://www.cnblogs.com/freesky168/p/14358292.html
Copyright © 2020-2023  润新知