c语言编程笔录

首页 >   > 笔记大全

笔记大全

mybatis的基本使用方法

更新时间:2023-10-30

什么是MyBatis

MyBatis 是一个优秀的支持定制化 SQL、存储过程的持久层框架,它避免了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。 MyBatis 可以使用简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects)为数据库中的记录。

MyBatis的基本使用方法

1. 引入 MyBatis 依赖:

    
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.5.3</version>
        </dependency>
    

2. 创建数据源连接池:

    
        // xml 配置方式
        <!-- 数据源连接池 -->
        <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
            <property name="driverClass" value="${jdbc.driverClassName}" />
            <property name="jdbcUrl" value="${jdbc.url}" />
            <property name="user" value="${jdbc.username}" />
            <property name="password" value="${jdbc.password}" />
        </bean>

        // Java 配置方式
        DataSource dataSource = new PooledDataSource(
            "com.mysql.jdbc.Driver",
            "jdbc:mysql://localhost:3306/test",
            "root",
            "root"
        );
    

3. 配置 MyBatis SQL 映射文件:

    
        <mapper namespace="com.example.mapper.UserMapper">
            <select id="getUserById" resultType="com.example.model.User">
                select * from user where id = #{id}
            </select>
        </mapper>
    

4. 调用 MyBatis 接口方法,执行 SQL 操作:

    
        public class UserMapperTest {

            @Test
            public void getUserById() throws Exception {
                String resource = "mybatis-config.xml";
                InputStream inputStream = Resources.getResourceAsStream(resource);
                SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

                SqlSession session = sqlSessionFactory.openSession();
                try {
                    UserMapper mapper = session.getMapper(UserMapper.class);
                    User user = mapper.getUserById(1);
                    System.out.println(user);
                } finally {
                    session.close();
                }
            }
        }
    

MyBatis映射文件的基本语法

1. namespace

指定映射文件对应的数据访问接口的完整类名。在调用接口方法时,通过该属性找到对应的 SQL 映射语句。一般情况下,namespace 属性的值和接口的完整类名相同。

    
        <mapper namespace="com.example.mapper.UserMapper">
        </mapper>
    

2. select、update、insert、delete

指定 SQL 语句以及返回值类型(或者不需要返回值)。

    
        <select id="getUserById" resultType="com.example.model.User">
            select * from user where id = #{id}
        </select>
    

3. resultType、resultMap

指定返回值的类型或自定义映射关系。

    
        <select id="getUserById" resultMap="userResult">
            select * from user where id = #{id}
        </select>

        <resultMap id="userResult" type="com.example.model.User">
            <result property="id" column="user_id" />
            <result property="username" column="user_name" />
        </resultMap>
    

4. parameterType

指定输入参数的类型。

    
        <update id="updateUserById" parameterType="com.example.model.User">
            update user set username = #{username} where id = #{id}
        </update>
    

MyBatis与Spring的整合

1. 引入 MyBatis 与 Spring 整合的依赖:

    
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis-spring</artifactId>
            <version>2.0.5</version>
        </dependency>
    

2. 配置数据源和事务管理器:

    
        <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
            <property name="driverClass" value="${jdbc.driverClassName}" />
            <property name="jdbcUrl" value="${jdbc.url}" />
            <property name="user" value="${jdbc.username}" />
            <property name="password" value="${jdbc.password}" />
        </bean>

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

3. 配置 SqlSessionFactory 和 MapperScannerConfigurer:

    
        <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="basePackage" value="com.example.mapper" />
        </bean>
    

4. 在业务层中注入数据访问接口的实现:

    
        public interface UserMapper {
            User getUserById(@Param("id") int id);
        }

        public class UserServiceImpl implements UserService {

            @Autowired
            private UserMapper userMapper;

            @Override
            public User getUserById(int id) {
                return userMapper.getUserById(id);
            }
        }