mybatis–基础–04–SQL语句构建器
代码地址
https://gitee.com/DanShenGuiZu/learnDemo/tree/mysql_mybaties_DB/mybatis-learn-master
1、SQL类
通过Java代码动态生成sql语句
2.1、方法
2、案例
2.1、代码
@Data
public class User {
private Long id;
private String userName;
private String password;
}
public class SqlProvider {
public String selectAll(final User user){
SQL sql = new SQL();
sql.SELECT("*").FROM("user");
if(user.getId()!= null){
sql.WHERE("id=#{id}");
}
if(user.getPassword()!= null){
sql.WHERE("password=#{password}");
}
if(user.getUserName()!= null){
sql.WHERE("user_name=#{userName}");
}
return sql.toString();
}
}
public interface UserMapper {
@SelectProvider(type = SqlProvider.class, method = "selectAll")
List<User> selectAll(User user);
}
public class Mybatis001 {
public static void main(String[] args)throws Exception {
String resource = "common1/mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
SqlSession session = sqlSessionFactory.openSession();
UserMapper userMapper = session.getMapper(UserMapper.class);
User u1=new User();
u1.setId(1L);
u1.setUserName("1111");
u1.setPassword("222");
try {
List<User> users = userMapper.selectAll(u1);
} finally {
session.close();
}
}
}
mybatis-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>
<settings>
<!-- 打印sql日志 -->
<setting name="logImpl" value="STDOUT_LOGGING" />
</settings>
<typeAliases>
<!-- 使用包名 -->
<package name="com.cl.mybatis.learn.day26.bean"/>
</typeAliases>
<environments default="development1">
<environment id="development1">
<transactionManager type="MANAGED"/>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://zhoufei.ali.db.com:3306/test"/>
<property name="username" value="user123"/>
<property name="password" value="user123"/>
</dataSource>
</environment>
</environments>
<mappers>
<package name="com.cl.mybatis.learn.day26.dao"/>
</mappers>
</configuration>