spring+mybatis整理

mybatis开发流程
1.导包 mybatis,mysql-connector-java
2.写实体类
3.写接口
4.主配置文件
5.mapper映射文件

导包

<dependencies>
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.5.4</version>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.20</version>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.12</version>
        </dependency>
    </dependencies>

实体类

@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {

    private Integer id;
    private String name;
    //这里故意不与数据一致
    private String password;//数据库中是pwd
}

接口

public interface UserMapper {
    public List<User> getAllUsers();
    public int deleteUserById(int id);
    public int updateUser(User user);
    public int addUser(User user);
}

主配置文件

<?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>
    <properties resource="db.properties"/>
    <typeAliases>
        <package name="com.xiehetao.pojo"/>
    </typeAliases>
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"></transactionManager>
            <dataSource type="POOLED">
                <property name="driver" value="${driver}"/>
                <property name="url" value="${url}"/>
                <property name="username" value="${username}"/>
                <property name="password" value="${password}"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <mapper resource="UserMapper.xml"/>
    </mappers>
</configuration>

mapper映射文件

<?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.xiehetao.mapper.UserMapper">
    <resultMap id="userMapper" type="user">
        <result property="password" column="pwd"/>
    </resultMap>
    <select id="getAllUsers" resultMap="userMapper">
        select * from user
    </select>
    <delete id="deleteUserById">
        delete from user where id= #{id}
    </delete>
    <update id="updateUser" parameterType="user">
        update user
        <set>
            <if test="name != null">
                name = #{name},
            </if>
            <if test="password != null">
                pwd = #{password}
            </if>
        </set>
    </update>
    <insert id="addUser" >
        insert into user (id,name,pwd) values(#{id},#{name},#{password})
    </insert>

<!--    第一种方法,这里是多对一情况-->
    <resultMap id="studentTeacherMap" type="student">
        <result property="" column=""/>
        <result property="" column=""/>
        <association property="teacher" column="t_id" select="getTeacherById"/>
    </resultMap>
    <select id="getTeacherById" resultMap="">
        select * from teacher where id= #{id}
    </select>
<!--    第二种方法,这里是一对多情况-->
    <resultMap id="studentTeacherMap" type="teacher">
        <result property="" column=""/>
        <result property="" column=""/>
        <collection property="students" column="id" javaType="list" ofType="student">
            <result property="" column=""/>
            <result property="" column=""/>
        </collection>
    </resultMap>
</mapper>

//这里的一对多和多对一我没尝试过,不知道是否正确

spring主要知识点
IOC(控制反转)
实现方式
注解方式/xml文件配置方式/javaConfig方式
AOP(切面编程)
实现方式
注解方式/xml配置方式/javaConfig方式
1.xml配置方式

aop:config
2.注解方式
<context:component-scan base-package/>
aop:config
3.javaConfig方式
@Configuration

spring整合mybatis

  1. 导入包 mybatis mysql-connector-java mybatis-spring spring-jdbc
    aspectjweaver spring-webmvc
  2. 配置文件 spring数据源 mybatis-sqlsession工厂,mybatis-sqlsessiontemplate
  3. 写pojo
  4. 定义接口
  5. mybatis 配置文件和映射文件

导入包

<dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.13</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.5.4</version>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.20</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
            <version>5.2.0.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.aspectj</groupId>
            <artifactId>aspectjweaver</artifactId>
            <version>1.9.5</version>
        </dependency>
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis-spring</artifactId>
            <version>2.0.4</version>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.12</version>
        </dependency>
    </dependencies>

配置文件

<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns:aop="http://www.springframework.org/schema/aop"
        xmlns:tx="http://www.springframework.org/schema/tx"
        xmlns:context="http://www.springframework.org/schema/context"
        xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
        http://www.springframework.org/schema/tx
        http://www.springframework.org/schema/tx/spring-tx-3.1.xsd
        http://www.springframework.org/schema/aop
        http://www.springframework.org/schema/aop/spring-aop-3.1.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context-3.1.xsd">

    <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="driverClassName" value="com.mysql.cj.jdbc.Driver"/>
        <property name="url" value="jdbc:mysql:///mybatis?serverTimezone=GMT%2B8"/>
        <property name="username" value="root"/>
        <property name="password" value="1234"/>
    </bean>

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

    <bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate">
        <constructor-arg ref="sqlSessionFactory"/>
    </bean>
    <bean id="userMapperImpl" class="com.xiehetao.mapper.UserMapperImpl">
        <constructor-arg ref="sqlSession"/>
    </bean>

    <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource"/>
    </bean>

    <tx:advice id="txAdvice" transaction-manager="transactionManager">
        <tx:attributes>
            <tx:method name="*" propagation="REQUIRED"/>
        </tx:attributes>
    </tx:advice>

    <aop:config proxy-target-class="true">
        <aop:pointcut id="pc" expression="execution(* com.xiehetao.mapper.UserMapperImpl.*(..))"/>
        <aop:advisor advice-ref="txAdvice" pointcut-ref="pc"/>
    </aop:config>
</beans>

mybatisconfig.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.xiehetao.pojo"/>
    </typeAliases>
    <mappers>
        <mapper resource="UserMapper.xml"/>
    </mappers>
</configuration>

mapper.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.xiehetao.mapper.UserMapper">
    <resultMap id="UserMap" type="com.xiehetao.pojo.User">
        <result property="password" column="pwd"/>
    </resultMap>
    <select id="getAllUsers" resultMap="UserMap">
        select * from user;
    </select>
    <update id="updateUser" parameterType="user">
        update user
        <set>
            <if test="name != null">
                name = #{name},
            </if>
            <if test="password != null">
                pwd = #{password}
            </if>
        </set>
        where id= #{id}
    </update>
    <delete id="deleteUserById" >
        deletes from user where id=#{id}
    </delete>
    <insert id="addUser" parameterType="user">
        insert into user (id,name,pwd) values(#{id},#{name},#{password})
    </insert>
    <select id="getUserById" resultMap="UserMap">
        select * from user where id=#{id}
    </select>
</mapper>

实体类

@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {
    private Integer id;
    private String name;
    private String password;
}

接口

public interface UserMapper {

    public List<User> getAllUsers();

    public int updateUser(User user);

    public int deleteUserById(int id);

    public int addUser(User user);

    public User getUserById(int id);
}

接口实现类

public class UserMapperImpl implements UserMapper{

    private SqlSessionTemplate sqlSession;

    public UserMapperImpl(SqlSessionTemplate sqlSessionTemplate){
        sqlSession = sqlSessionTemplate;
    }

    @Override
    public List<User> getAllUsers() {
        return sqlSession.getMapper(UserMapper.class).getAllUsers();
    }

    @Override
    public int updateUser(User user) {
        return sqlSession.getMapper(UserMapper.class).updateUser(user);
    }

    @Override
    public int deleteUserById(int id) {
        return sqlSession.getMapper(UserMapper.class).deleteUserById(id);
    }

    @Override
    public int addUser(User user) {
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        int rslt = mapper.addUser(user);
        mapper.deleteUserById(user.getId());
        return rslt;
    }

    @Override
    public User getUserById(int id) {
        return sqlSession.getMapper(UserMapper.class).getUserById(id);
    }
}

测试类

public class MyTest {
    public static void main(String[] args) {
        ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
        UserMapperImpl userMapperImpl = (UserMapperImpl) context.getBean("userMapperImpl");
        User user = new User(5,"xht","121212121");
        userMapperImpl.addUser(user);
    }
}

spring整合mybatis注意点

  1. 配置数据库连接池
  2. 配置sqlsesionFactory
  3. 配置sqlsessionTemplate
  4. 配置事务管理器
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值