MyBatis样例

项目结构

pom依赖 

<?xml version="1.0" encoding="UTF-8"?>

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.msb</groupId>
    <artifactId>mybatis</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>war</packaging>

    <name>mybatis Maven Webapp</name>
    <!-- FIXME change it to the project's website -->
    <url>http://www.example.com</url>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-beans</artifactId>
            <version>5.3.2</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>5.3.2</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
            <version>5.3.2</version>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.11</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.11</version>
        </dependency>

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

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.22</version>
        </dependency>


        <!-- https://mvnrepository.com/artifact/log4j/log4j -->
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.17</version>
        </dependency>

    </dependencies>

    <build>
        <finalName>mybatis</finalName>
        <pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
            <plugins>
                <plugin>
                    <artifactId>maven-clean-plugin</artifactId>
                    <version>3.1.0</version>
                </plugin>
                <!-- see http://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_war_packaging -->
                <plugin>
                    <artifactId>maven-resources-plugin</artifactId>
                    <version>3.0.2</version>
                </plugin>
                <plugin>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <version>3.8.0</version>
                </plugin>
                <plugin>
                    <artifactId>maven-surefire-plugin</artifactId>
                    <version>2.22.1</version>
                </plugin>
                <plugin>
                    <artifactId>maven-war-plugin</artifactId>
                    <version>3.2.2</version>
                </plugin>
                <plugin>
                    <artifactId>maven-install-plugin</artifactId>
                    <version>2.5.2</version>
                </plugin>
                <plugin>
                    <artifactId>maven-deploy-plugin</artifactId>
                    <version>2.8.2</version>
                </plugin>
            </plugins>
        </pluginManagement>
    </build>
</project>

MyBatis配置:sqlMapConfig.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" >
<!--配置文件官方说明:https://mybatis.org/mybatis-3/zh/configuration.html#environments-->
<configuration>
    <!--配置文件标签必须按照顺序定义,否则会报错-->

    <!--引用外部配置文件,并自定义属性:加载顺序:property, resource,方法参数 后面覆盖前面同名属性  -->
 <!--   <properties resource="org/mybatis/example/config.properties">
        <property name="username" value="dev_user"/>
        <property name="password" value="F2Fa3!33TYyg"/>
    </properties>-->

    <settings>
        <!--没有指定,会自动查找-->
        <setting name="logImpl" value="LOG4J"></setting>
    </settings>

    <!--类型别名-->
    <typeAliases>
        <!--没有指定alias,别名默认为首字母小写-->
        <typeAlias type="com.msb.pojo.Person" alias="person"></typeAlias>
        <!--扫描对应package,类上增加@Alias注解指定别名-->
        <!--<package name="com.msb.pojo"></package>-->
    </typeAliases>

    <!--类型处理器(typeHandlers):需要自己定义:继承 BaseTypeHandler 类并添加@MappedJdbcTypes(JdbcType.VARCHAR) 注解-->
    <!--<typeHandlers>
        <typeHandler handler="org.mybatis.example.ExampleTypeHandler"/>
    </typeHandlers>-->

    <environments default="development">
        <environment id="development">
            <!--JDBC:自己手动管理事务;MANAGED:由spring容器管理事务-->
            <transactionManager type="JDBC"></transactionManager>
            <dataSource type="POOLED">
                <property name="username" value="root"></property>
                <property name="password" value="root"></property>
                <property name="url"
                          value="jdbc:mysql://127.0.0.1:3306/test?useSSL=false&amp;useUnicode=true&amp;characterEncoding=UTF-8&amp;serverTimezone=Asia/Shanghai"></property>
                <property name="driver" value="com.mysql.cj.jdbc.Driver"></property>
            </dataSource>
        </environment>
    </environments>

    <mappers>
        <!--目的是找到mapper.xml文件,如果是通过class或package找到对应的类或包下面的类,则是通过类名去找对应的mapper.xml文件-->
        <!-- 使用相对于类路径的资源引用 -->
        <!--<mapper resource="com/msb/mapper/PersonMapper.xml"></mapper>-->
        <mapper class="com.msb.mapper.PersonMapper"/>
        <!-- 将包内的映射器接口实现全部注册为映射器 -->
        <!--<package name="com.msb.mapper"></package>-->
    </mappers>
</configuration>

日志配置:log4j.properties

log4j.rootLogger=DEBUG,console,file

#打印到控制台
log4j.appender.console = org.apache.log4j.ConsoleAppender
log4j.appender.console.Target = System.out
log4j.appender.console.Threshold=DEBUG
log4j.appender.console.layout = org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=[%c]-%m%n

#打印到文件
log4j.appender.file = org.apache.log4j.RollingFileAppender
log4j.appender.file.File=./log/mybatis01.log
log4j.appender.file.MaxFileSize=10mb
log4j.appender.file.Threshold=DEBUG
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=[%p][%d{yy-MM-dd}][%c]%m%n

#打印sql
log4j.logger.org.mybatis=DEBUG
log4j.logger.java.sql=DEBUG
log4j.logger.java.sql.Statement=DEBUG
log4j.logger.java.sql.ResultSet=DEBUG
log4j.logger.java.sql.PreparedStatement=DEBUG

mapper.xml文件:

文件名称一定要和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.msb.mapper.PersonMapper">

    <!--void addPerson(Person person);-->
    <insert id="addPerson" useGeneratedKeys="true" keyProperty="id" keyColumn="id">
        insert into test_person
        values (null, #{username}, #{age}, #{sale}, #{deptno})
    </insert>

    <!-- int updatePerson(Person person);-->
    <update id="updatePerson">
        update test_person
        set sale = #{sale}
        where username = #{username}
    </update>

    <update id="updatePerson3">
        update test_person
        <set>
            <if test="age > 0">
                age = #{age}
            </if>
        </set>

        <where>
            username = #{username}
        </where>
    </update>

    <update id="updatePerson2">
        update test_person
        <trim prefix="set" suffixOverrides=",">
            <if test="username != null">
                username = #{username},
            </if>
            <if test="age > 0">
                age = #{age},
            </if>
        </trim>
        <trim prefix="where" prefixOverrides="and |or ">
            <if test="username != null and username != ''">
                and username = #{username}
            </if>
            <if test="age > 0">
                and age = #{age}
            </if>
        </trim>
    </update>

    <!--int deletePerson(Person person);-->
    <delete id="deletePerson">
        delete
        from test_person
        where username = #{username}
    </delete>


    <!--Person selectPerson(String username, int age);-->
    <select id="selectPerson" resultType="person">
        select *
        from test_person
        where username = #{username}
          and age = #{age}
        <!--select * from test_person where username=#{param1} and age = #{param2}-->
    </select>

    <select id="selectPerson2" resultType="person">
        select *
        from test_person
        <trim prefix="where" prefixOverrides="and |or ">
            <if test="username != null">
                and username = #{username}
            </if>
            <if test="age > 0">
                or age = #{age}
            </if>
        </trim>
    </select>
</mapper>

Mapper接口

package com.msb.mapper;

import com.msb.pojo.Person;
import org.apache.ibatis.annotations.Param;

/**
 * @ClassName: PersonMapper
 * @Description: TODO
 * @Date: 2021/11/23 12:38
 * @Author: wangdy001
 * @Version: 1.0
 */
public interface PersonMapper {

    Person selectPerson(@Param("username") String username, @Param("age") int age);

    Person selectPerson2(@Param("username") String username, @Param("age") int age);

    void addPerson(Person person);

    int updatePerson(Person person);

    int updatePerson2(Person person);

    int updatePerson3(Person person);

    int deletePerson(Person person);
}

测试代码:

package com.msb.test;

import com.msb.mapper.PersonMapper;
import com.msb.pojo.Person;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.BeforeClass;
import org.junit.Test;

import java.io.InputStream;

/**
 * @ClassName: Test01
 * @Description: TODO
 * @Date: 2021/11/23 13:06
 * @Author: wangdy001
 * @Version: 1.0
 */
public class Test01 {
    private static SqlSession sqlSession = null;

    @BeforeClass
    public static void init() {
        SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();
        InputStream systemResourceAsStream = ClassLoader.getSystemResourceAsStream("sqlMapConfig.xml");
        SqlSessionFactory build = sqlSessionFactoryBuilder.build(systemResourceAsStream);
        sqlSession = build.openSession();
    }

    @Test
    public void insert() {
        PersonMapper mapper = sqlSession.getMapper(PersonMapper.class);
        Person person = new Person();
        person.setAge(10);
        person.setDeptno(10);
        person.setSale(10.0);
        person.setUsername("小红");
        mapper.addPerson(person);
        sqlSession.commit();
        System.out.println(person);

    }

    @Test
    public void select() {
        PersonMapper mapper = sqlSession.getMapper(PersonMapper.class);
        Person person = mapper.selectPerson("小红", 10);
        System.out.println(person);

    }

    @Test
    public void select2() {
        PersonMapper mapper = sqlSession.getMapper(PersonMapper.class);
        Person person = mapper.selectPerson2("小红", 0);
        System.out.println(person);

        person = mapper.selectPerson2(null, 10);
        System.out.println(person);

    }

    @Test
    public void update2() {
        Person person = new Person();
        person.setUsername("小红");
        person.setAge(10);
        PersonMapper mapper = sqlSession.getMapper(PersonMapper.class);
        int i = mapper.updatePerson2(person);
        System.out.println(i);

    }


    @Test
    public void update3() {
        Person person = new Person();
        person.setUsername("小红");
        person.setAge(10);
        PersonMapper mapper = sqlSession.getMapper(PersonMapper.class);
        int i = mapper.updatePerson3(person);
        System.out.println(i);

    }

    @BeforeClass
    public static void destory() {
        if (sqlSession != null) {
            sqlSession.close();
        }
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值