目录
2.3创建 resources/mybatis-config.xml
2.6MonsterMapper.xml(配置sql完成对表的crud)
2.7在mybatis-config.xml配置需要关联的Mapper.xml
- CREATE DATABASE `mybatis`
- CREATE TABLE `monster` (
- `id` INT NOT NULL AUTO_INCREMENT,
- `age` INT NOT NULL,
- `birthday` DATE DEFAULT NULL,
- `email` VARCHAR(255) NOT NULL ,
- `gender` TINYINT NOT NULL,
- `name` VARCHAR(255) NOT NULL,
- `salary` DOUBLE NOT NULL,
- PRIMARY KEY (`id`)
- ) CHARSET=utf8
父模块的pom.xml
-
- <groupId>org.examplegroupId>
- <artifactId>MybatisartifactId>
- <packaging>pompackaging>
- <version>1.0-SNAPSHOTversion>
-
-
- <modules>
- <module>mybaits_quicktart/mybaits_quicktartmodule>
- modules>
-
- <properties>
- <maven.compiler.source>11maven.compiler.source>
- <maven.compiler.target>11maven.compiler.target>
- properties>
- <dependencies>
- <dependency>
- <groupId>mysqlgroupId>
- <artifactId>mysql-connector-javaartifactId>
- <version>8.0.16version>
- dependency>
- <dependency>
- <groupId>org.mybatisgroupId>
- <artifactId>mybatisartifactId>
- <version>3.4.6version>
- dependency>
- <dependency>
- <groupId>junitgroupId>
- <artifactId>junitartifactId>
- <version>4.12version>
-
- dependency>
- dependencies>
子模块的pom.xml
-
- <parent>
- <artifactId>MybatisartifactId>
- <groupId>org.examplegroupId>
- <version>1.0-SNAPSHOTversion>
- <relativePath>../../pom.xmlrelativePath>
- parent>
- <modelVersion>4.0.0modelVersion>
-
- <groupId>com.honggroupId>
- <artifactId>mybaits_quicktartartifactId>
-
- <properties>
- <maven.compiler.source>11maven.compiler.source>
- <maven.compiler.target>11maven.compiler.target>
- properties>
- <environments default="development">
- <environment id="development">
-
- <transactionManager type="JDBC"/>
-
- <dataSource type="POOLED">
-
- <property name="driver" value="com.mysql.jdbc.Driver"/>
-
- <property name="url"
- value="jdbc:mysql://127.0.0.1:3306/mybatis?useSSL=true&
- useUnicode=true&characterEncoding=UTF-8"/>
- <property name="username" value="root"/>
- <property name="password" value="hong"/>
- dataSource>
- environment>
- environments>
- package com.hong.entity;
-
- import java.util.Date;
-
- /**
- * Created with IntelliJ IDEA.
- *
- * @Author: 海绵hong
- * @Date: 2022/11/07/16:40
- * @Description:Monster和monster表是一个对应关系
- */
- //解读
- //1. 一个普通的Pojo类
- //2. 使用原生态的sql语句查询结果还是要封装成对象
- //3. 要求大家这里的实体类属性名和表名字段保持一致。
- public class Monster {
- //属性-和表字段有对应关系
- private Integer id;
- private Integer age;
- private String name;
- private String email;
- private Date birthday;
- private double salary;
- private Integer gender;
-
- public Monster() {
- }
-
- public Monster(Integer id, Integer age, String name, String email, Date birthday, double salary, Integer gender) {
- this.id = id;
- this.age = age;
- this.name = name;
- this.email = email;
- this.birthday = birthday;
- this.salary = salary;
- this.gender = gender;
- }
-
- public Integer getId() {
- return id;
- }
-
- public void setId(Integer id) {
- this.id = id;
- }
-
- public Integer getAge() {
- return age;
- }
-
- public void setAge(Integer age) {
- this.age = age;
- }
-
- public String getName() {
- return name;
- }
-
- public void setName(String name) {
- this.name = name;
- }
-
- public String getEmail() {
- return email;
- }
-
- public void setEmail(String email) {
- this.email = email;
- }
-
- public Date getBirthday() {
- return birthday;
- }
-
- public void setBirthday(Date birthday) {
- this.birthday = birthday;
- }
-
- public double getSalary() {
- return salary;
- }
-
- public void setSalary(double salary) {
- this.salary = salary;
- }
-
- public Integer getGender() {
- return gender;
- }
-
- public void setGender(Integer gender) {
- this.gender = gender;
- }
-
- @Override
- public String toString() {
- return "Monster{" +
- "id=" + id +
- ", age=" + age +
- ", name='" + name + '\'' +
- ", email='" + email + '\'' +
- ", birthday=" + birthday +
- ", salary=" + salary +
- ", gender=" + gender +
- '}';
- }
- }
-
-
- /**
- * 1. 这是一个接口
- * 2. 该接口用于声明操作monster表的方法
- * 3. 这些方法可以通过注解或者xml文件来实现
- */
- public interface MonsterMapper {
-
- //添加monster
- public void addMonster(Monster monster);
-
- //根据id删除一个Monster
- public void delMonster(Integer id);
-
- //修改Monster
- public void updateMonster(Monster monster);
-
- //查询-根据id
- public Monster getMonsterById(Integer id);
-
- //查询所有的Monster
- public List
findAllMonster(); - }
- "1.0" encoding="UTF-8" ?>
- mapper
- PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
- "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-
- <mapper namespace="com.hong.mapper.MonsterMapper">
-
- <insert id="addMonster" parameterType="Monster" useGeneratedKeys="true" keyProperty="id">
- INSERT INTO `monster`
- (`age`, `birthday`, `email`, `gender`, `name`, `salary`)
- VALUES (#{age}, #{birthday}, #{email}, #{gender}, #{name}, #{salary})
- insert>
-
-
- <delete id="delMonster" parameterType="Integer">
- DELETE FROM `monster` WHERE id = #{id}
- delete>
-
-
- <update id="updateMonster" parameterType="Monster">
- UPDATE `monster`
- SET `age`=#{age} , `birthday`= #{birthday}, `email` = #{email},
- `gender` = #{gender} , `name`= #{name}, `salary` = #{salary}
- WHERE id = #{id}
- update>
-
-
- <select id="getMonsterById" resultType="Monster">
- SELECT * FROM `monster` WHERE id = #{id}
- select>
-
-
- <select id="findAllMonster" resultType="Monster">
- SELECT * FROM `monster`
- select>
- mapper>
- <mappers>
- <mapper resource="com/hong/mapper/MonsterMapper.xml"/>
- mappers>
-
- /**
- * @author 海绵hong
- * @version 1.0
- * MyBatisUtils 工具类,可以得到SqlSession
- */
- public class MyBatisUtils {
-
- //属性
- private static SqlSessionFactory sqlSessionFactory;
-
- //编写静态代码块-初始化sqlSessionFactory
- static {
- try {
- //指定资源文件, 配置文件mybatis-config.xml
- String resource = "mybatis-config.xml";
- //获取到配置文件mybatis-config.xml 对应的inputStream
- //这里说明:加载文件时,默认到resources目录=>运行后的工作目录target-classes
- InputStream resourceAsStream = Resources.getResourceAsStream(resource);
- sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);
- System.out.println("sqlSessionFactory="
- + sqlSessionFactory.getClass());
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
-
- //编写方法,返回SqlSession对象-会话
- public static SqlSession getSqlSession() {
- return sqlSessionFactory.openSession();
- }
- }
-
- public class MonsterMapperTest {
- //属性
- private SqlSession sqlSession;
- private MonsterMapper monsterMapper;
-
- /**
- * 解读
- * 1. 当方法标注 @Before, 表示在执行你的目标测试方法前,会先执行该方法
- * 2. 这里在测试的时候,可能小伙伴们会遇到一些麻烦,说了解决方案
- */
- //编写方法完成初始化
- @Before
- public void init() {
- //获取到sqlSession
- sqlSession = MyBatisUtils.getSqlSession();
- //获取到到MonsterMapper对象 class com.sun.proxy.$Proxy7 代理对象
- //, 底层是使用了动态代理机制, 后面我们自己实现mybatis底层机制时,会讲到
- monsterMapper = sqlSession.getMapper(MonsterMapper.class);
- System.out.println("monsterMapper=" + monsterMapper.getClass());
-
- }
-
- @Test
- public void addMonster() {
-
- for (int i = 0; i < 2; i++) {
- Monster monster = new Monster();
- monster.setAge(10 + i);
- monster.setBirthday(new Date());
- monster.setEmail("kate@qq.com");
- monster.setGender(1);
- monster.setName("大象精-" + i);
- monster.setSalary(1000 + i * 10);
- monsterMapper.addMonster(monster);
-
- System.out.println("添加对象--" + monster);
- System.out.println("添加到表中后, 自增长的id=" + monster.getId());
- }
-
- //如果是增删改, 需要提交事务
- if(sqlSession != null) {
- sqlSession.commit();
- sqlSession.close();
- }
-
- System.out.println("保存成功...");
-
- }
-
- @Test
- public void delMonster() {
-
- monsterMapper.delMonster(2);
-
- if(sqlSession != null) {
- sqlSession.commit();
- sqlSession.close();
- }
-
- System.out.println("删除成功...");
-
- }
-
- @Test
- public void updateMonster() {
-
- Monster monster = new Monster();
- monster.setAge(50);
- monster.setBirthday(new Date());
- monster.setEmail("king3@qq.com");
- monster.setGender(0);
- monster.setName("老鼠精-01");
- monster.setSalary(2000);
- monster.setId(3);
-
- monsterMapper.updateMonster(monster);
-
- if(sqlSession != null) {
- sqlSession.commit();
- sqlSession.close();
- }
-
- System.out.println("修改成功...");
-
- }
-
- @Test
- public void getMonsterById() {
-
- Monster monster = monsterMapper.getMonsterById(3);
- System.out.println("monster=" + monster);
-
- if(sqlSession != null) {
- sqlSession.close();
- }
- System.out.println("查询成功~");
- }
-
-
- @Test
- public void findAllMonster() {
-
- List
monsters = monsterMapper.findAllMonster(); - for (Monster monster : monsters) {
- System.out.println("monster-" + monster);
- }
- if(sqlSession != null) {
- sqlSession.close();
- }
- System.out.println("查询成功~");
- }
- }
-
- <typeAliases>
-
-
-
- <package name="com.hong.entity"/>
- typeAliases>
-
- <settings>
- <setting name="logImpl" value="STDOUT_LOGGING"/>
- settings>