学习笔记_mybatis02_增删改查操作

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.itheima.dao.IUserDao">
    <!-- 查询所有 -->
    <select id="findAll" resultType="com.itheima.domain.User">
        select * from user ;
    </select>

    <!--保存用户-->
    <insert id="saveUser" parameterType="com.itheima.domain.User">
        insert into user(username,address,sex,birthday)values(#{username},#{address},#{sex},#{birthday});
    </insert>

    <!--更新用户-->
    <update id="updateUser" parameterType="com.itheima.domain.User">
        update user set username=#{username},address=#{address},sex=#{sex},birthday=#{birthday} where id=#{id}
    </update>

    <!--删除用户-->
    <update id="deleteUser" parameterType="INT">
        delete from user where id = #{userid}
    </update>
    
    <!--根据id查询用户-->
    <select id="findById" parameterType="INT" resultType="com.itheima.domain.User">
        select * from user where id = #{userid};
    </select>

    <!--根据姓名模糊查询用户-->
    <select id="findByName" parameterType="String" resultType="com.itheima.domain.User">
        select * from user where username like #{name};
    </select>

    <!--根据querVo的条件查询用户-->
    <select id="findByVo" parameterType="com.itheima.domain.QueryVo" resultType="com.itheima.domain.User">
        select * from user where username like #{user.username}
    </select>
</mapper>

parameterType是表示参数类型,根据saveUser方法的user参数找到User实体类中的属性从而达到实现ORM(操作实体类来操作数据库)的目的。
保存用户操作中的values后面的内容保证程序可以取出User类中的各个属性值。
resultType可以指定结果集的类型,包含基本类型和实体类类型。

接口类代码

package com.itheima.dao;

import com.itheima.domain.QueryVo;
import com.itheima.domain.User;

import java.util.List;

/*
 * 用户的持久层接口
 */
public interface IUserDao {
    //查询所有用户
    List<User> findAll();

    //保存用户
    void saveUser(User user);

    //更新用户
    void updateUser(User user);

    //根据id删除用户
    void deleteUser(Integer userId);

    //根据id查询用户
    User findById(Integer userId);

    //根据名称模糊查询用户
    List<User> findByName(String username);
	//根据querVo的条件查询用户
    List<User> findByVo(QueryVo vo);
}

jdbcConfig.properties配置文件

<?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-->
    <properties resource="jdbcConfig.properties">
       <!-- <property name="driver" value="com.mysql.jdbc.Driver"/>
        <property name="url" value="jdbc:mysql://localhost:3306/day17"/>
        <property name="username" value="root"/>
        <property name="password" value="root"/>-->
    </properties>
    <typeAliases>
        <package name="com.itheima.domain"/>
    </typeAliases>
    <!--配置环境-->
    <environments default="mysql">
        <!--配置mysql环境-->
        <environment id="mysql">
            <!--配置事务类型-->
            <transactionManager type="JDBC"></transactionManager>
            <!--配置数据库连接池-->
            <dataSource type="POOLED">
                <!--配置连接数据的4个基本信息-->
                <property name="driver" value="${jdbc.driver}"/>
                <property name="url" value="${jdbc.url}"/>
                <property name="username" value="${jdbc.username}"/>
                <property name="password" value="${jdbc.password}"/>
            </dataSource>

        </environment>
    </environments>
    <mappers>
        <!--<mapper resource="com/itheima/dao/IUserDao.xml"/>-->
        <package name="com.itheima.dao"/>
    </mappers>
</configuration>

测试类代码

/*
 * 测试mybatis的crud操作
 * */
public class mybatisTest {
    private InputStream in;
    private SqlSession sqlSession;
    private IUserDao userDao;

    @Before//在测试方法之前执行
    public void init() throws Exception {
        //1.读取配置文件,生成字节输入流
        in = Resources.getResourceAsStream("SqlMapConfig.xml");
        //2.获取SqlSessionFactoryg工厂
        SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(in);
        //3.获取SqkSession对象
        sqlSession = factory.openSession();
        //4.获取dao的代理对象
        userDao = sqlSession.getMapper(IUserDao.class);
    }

    @After//在测试方法之后执行
    public void destory() throws Exception {
        //提交事务
        sqlSession.commit();
        //释放资源
        sqlSession.close();
        in.close();
    }

    @Test
    public void testFindAll() {
        //通过代理对象使用方法
        List<User> users = userDao.findAll();
        for (User user : users) {
            System.out.println(user);
        }
    }

    //测试保存操作
    @Test
    public void testSave() {
        User user = new User();
        user.setUsername("mybatis saveuser");
        user.setAddress("广州市");
        user.setSex("男");
        user.setBirthday(new Date());
        System.out.println("before :" + user);
        //.通过代理对象使用方法
        userDao.saveUser(user);
    }

    // 测试更新操作
    @Test
    public void testUpdate() {
        User user = new User();
        user.setId(52);
        user.setUsername("mybatis updateuser");
        user.setAddress("广州市");
        user.setSex("男");
        user.setBirthday(new Date());

        //通过代理对象使用方法
        userDao.updateUser(user);
    }

    //测试删除操作
    @Test
    public void testDelet() {
        //根据id删除用户操作
        userDao.deleteUser(52);
    }

    //测试查询操作
    @Test
    public void testfindById() {
        User user = userDao.findById(48);
        System.out.println(user);
    }

    //测试模糊查询操作
    @Test
    public void testFindByName() {
        List<User> users = userDao.findByName("%王%");
        for (User user : users) {
            System.out.println(user);
        }
    }

    //测试QueryVo作为条件的查询操作
    @Test
    public void testFindByVo() {
        QueryVo vo = new QueryVo();
        User user = new User();
        user.setUsername("%王%");
        vo.setUser(user);
        List<User> users = userDao.findByVo(vo);
        for (User u : users) {
            System.out.println(u);
        }
    }
}

配置标签小结

-properties (属性)
–property
-settings(全局配置参数)
–setting
–typeAliases(类型别名)
–typeAliase
–package
-plugins(插件)
-environments(环境集合属性对象)
–environment
—dataSource(数据源)
—transactionManager(事务管理)
-mappers(映射器)
–mapper
–package

resultMap结果类型

resultMap标签可以建立查询的列名和实体类的属性名不一致时建立对应关系,从而实现封装。在select标签中使用resultMap属性指定引用即可。

发布了33 篇原创文章 · 获赞 0 · 访问量 505

猜你喜欢

转载自blog.csdn.net/naerjiajia207/article/details/103401324