依赖:
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);
}
|
|
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();
}
}
|
@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();
} |
|
|