A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

依赖:
dependencies>
  <!--mybatis依赖-->
  <dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis</artifactId>
    <version>3.4.5</version>
  </dependency>
  <!--数据库驱动包-->
  <dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.30</version>
  </dependency>
  <!--log4j日志包(查看控制台中mybatis生成的sql语句)-->
  <dependency>
    <groupId>log4j</groupId>
    <artifactId>log4j</artifactId>
    <version>1.2.17</version>
  </dependency>
  <dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis</artifactId>
    <version>3.4.5</version>
  </dependency>
  <dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.0</version>
  </dependency>
</dependencies>
实体类:
public class User {    private int  id;
    private String username;
    private Date birthday;
    private String sex;
    private String address;//省略getter/setter
}
config.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">
<configuration>
   
    <properties resource="jdbc.properties"></properties>
    <settings>
        <setting name="lazyLoadingEnabled" value="true"/>
    </settings>
   
    <typeAliases>
            <package name="test.mylo.entity"></package>

    </typeAliases>
    <!--environments配置数据库环境(事务、连接池、连接参数)-->
    <!--default 表示默认使用哪个环境-->
    <environments default="mysql">
        <environment id="mysql">
            <!--指定事务管理器-->
            <transactionManager type="JDBC"></transactionManager>
            <!--指定数据源(连接池)-->
            <dataSource type="POOLED">
                <property name="driver" value="${driver}"></property>
                <property name="url" value="${url}"></property>
                <property name="username" value="${username}"></property>
                <property name="password" value="${password}"></property>
            </dataSource>
        </environment>
    </environments>

    <mappers>
   
      <package name="test.mylo.mapper"></package>
    </mappers>
</configuration>
UserMapper
package test.mylo.mapper;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Options;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.UpdateProvider;
import  test.mylo.entity.User;
public interface UserMapper {
    @Select("select  * from user where id = #{id}")
    User findOne(Integer id);

    @Insert("insert into user(username,birthday,sex,address) values(" +
            "#{username},#{birthday},#{sex},#{address})")
    @Options(useGeneratedKeys = true,keyColumn = "id",keyProperty = "id")
    void addUser(User user);

    @UpdateProvider(method = "testUpdate" ,type = TestSQL.class)
    User updateUser(User u);


}
TestSQL
package test.mylo.mapper;import test.mylo.entity.User;

import org.apache.ibatis.jdbc.SQL;
/**
* @program: workSet
* @description: 测试动态sql
* @author: Mylo
* @create: 2018-08-11 14:40
**/
public class TestSQL {

    public String testUpdate(final User user){
        return new SQL(){{
            UPDATE("user");
                    if (user.getUsername() != null){
                        SET(" username = #{username}");
                    }
                    if(user.getBirthday() != null){
                        SET("birthday =#{birthday}");
                    }

                    if(user.getAddress() != null){
                        SET("address = #{address}");
                    }
                WHERE("id = #{id}");
        }
        }.toString();
    }
}
Test
@Testpublic void testUpdateUser(){
    SqlSession sqlSession = build.openSession();
    UserMapper mapper = sqlSession.getMapper(UserMapper.class);
    User user = new User();
    user.setId(50);
    user.setUsername("test33");
    user.setSex("男");
    user.setBirthday(new Date());
    user.setAddress("test333");

    mapper.updateUser(user);
    sqlSession.commit();
}


0 个回复

您需要登录后才可以回帖 登录 | 加入黑马