MyBatis学习笔记04

注解增删改查

1.在工具类创建的时候自动提交事务

java 复制代码
public class MybatisUtils {
    private static SqlSessionFactory sqlSessionFactory;
    static {
        try {//使用MyBatis第一步获取sqlSessionFactory对象
            String resource = "mybatis-config.xml";
            InputStream inputStream = Resources.getResourceAsStream(resource);
            sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

        } catch (Exception e) {
            e.printStackTrace();
        }

    }//SqlSession完全包含了面向数据库执行SQL命令事务所有方法
    public static SqlSession getSqlSession(){
        return sqlSessionFactory.openSession(true);
    }
}

2.接口

java 复制代码
 @Select("select * from user where id = #{id}")
    User getUserById(@Param("id")int id);
    @Insert("insert into user(id,name,pwd) values (#{id},#{name},#{pwd})")
    int addUser(User user);
    @Update("update user set name=#{name},pwd=#{pwd} where id = #{id}")
    int updateUser(User user);
    @Delete("delete from user where id = #{id}")
    int deleteUser(@Param("id") int id);

3.测试

java 复制代码
@Test
    public void testDemo1(){
        SqlSession sqlSession = MybatisUtils.getSqlSession();
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        User user = mapper.getUserById(7);
        System.out.println(user);
        sqlSession.close();
    }
    @Test
    public void testDemo2(){
        SqlSession sqlSession = MybatisUtils.getSqlSession();
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        mapper.addUser(new User(8,"sun","123456"));
        sqlSession.close();
    }
    @Test
    public void testDemo3(){
        SqlSession sqlSession = MybatisUtils.getSqlSession();
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        mapper.updateUser(new User(8,"tom2","123456"));
        sqlSession.close();
    }
    @Test
    public void testDemo4(){
        SqlSession sqlSession = MybatisUtils.getSqlSession();
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        mapper.deleteUser(8);
        sqlSession.close();
    }

关于@Param()注解

1.基本类型的参数或者String类型,需要加上

2.引用类型不需要加

3.如果只有一个基本参数类型,可以忽略

4.在SQL中引用的是@Param("id")中设定的属性名

lombok使用步骤

1.在idea中安装插件

2.在项目中导入jar包

xml 复制代码
<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>1.18.26</version>
    <scope>provided</scope>
</dependency>

3.在实体类中加注解

java 复制代码
package pojo;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {
    private int id;
    private String name;
    private  String pwd;

}

一对多

xml 复制代码
<mapper namespace="dao.TeacherMapper">
<select id="getTeacher" resultMap="TeacherStudent">
    select s.id sid,s.name sname,t.name tname,t.id tid
    from mybatis.student s,mybatis.teacher t
    where s.tid=t.id and t.id=#{tid}
</select>
    <resultMap id="TeacherStudent" type="Teacher">
        <result property="id" column="tid"/>
        <result property="name" column="tname"/>
        <collection property="students" ofType="Student">
            <result property="id" column="sid"/>
            <result property="name" column="sname"/>
            <result property="tid" column="tid"/>
        </collection>
    </resultMap>

</mapper>

测试

java 复制代码
public void test(){
        SqlSession sqlSession = MybatisUtils.getSqlSession();
        TeacherMapper mapper = sqlSession.getMapper(TeacherMapper.class);
        Teacher teacher = mapper.getTeacher(1);
        System.out.println(teacher);

        sqlSession.close();
    }

多对一

xml 复制代码
<select id="getStudent2" resultMap="StudentTeacher2">
        select s.id sid,s.name sname,t.name tname
        from mybatis.student s,mybatis.teacher t
        where s.tid=t.id;
    </select>
    <resultMap id="StudentTeacher2" type="Student">
        <result property="id" column="sid"/>
        <result property="name" column="sname"/>
        <association property="teacher" javaType="Teacher">
            <result property="name" column="tname"/>
        </association>
    </resultMap>

测试

java 复制代码
public void testStudent2(){
        SqlSession sqlSession = MybatisUtils.getSqlSession();
        StudentMapper mapper = sqlSession.getMapper(StudentMapper.class);
        List<Student> student = mapper.getStudent2();
        for (Student student1 : student) {
            System.out.println(student1);
        }
        sqlSession.close();
    }
相关推荐
YJlio5 分钟前
Sysinternals 文件工具学习笔记(12.12):常见踩坑场景、排障套路与面试问题
笔记·学习·面试
小曦成长日记13 分钟前
Cover Letter 撰写要点 【科研笔记】
笔记
Maxwell_li116 分钟前
新冠检测例子学习查准率和召回率
学习·机器学习·数据分析·回归·numpy·pandas
客梦40 分钟前
数据结构--最小生成树
数据结构·笔记
arron88991 小时前
自训练yolo模型自主学习性能持续提升思路
学习·yolo·目标跟踪
陌上明苏1 小时前
.NET1-异步方法、LINQ
学习
青衫码上行1 小时前
【JavaWeb学习 | 第23篇】监听器、RBAC权限模型
java·学习·servlet·jsp
柒.梧.1 小时前
MyBatis一对一关联查询深度解析:大实体类、SQL99联表、分布式查询实践
分布式·mybatis
sbc-study2 小时前
comsol例题学习-旋转晶片电镀-稀物质传递+二次电流分布+电极,壳+层流
学习·comsol·二次电流分布·稀物质传递·电极,壳·多物理场耦合·层流
智算菩萨2 小时前
【Python基础】AI的“重复学习”:循环语句(for, while)的奥秘
人工智能·python·学习