MyBatis之动态sql语句和Mapper
2018-01-14 16:19
501 查看
MyBatis之动态sql语句和Mapper
1.什么是动态sql?
动态sql是mybatis的核心,主要是对sql语句进行灵活操作,通过表达式进行判断,对sql进行灵活的拼接、组装。2.动态sql里面的标签
if 、choose (when ,otherwise) 、trim(where,set)、foreach3.用动态sql实现查询
配置文件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"> <!-- 通过这个配置文件完成mybatis与数据库的连接 --> <configuration> <!-- 引入 database.properties 文件 --> <properties resource="database.properties" /> <!-- 配置mybatis的log实现为LOG4J --> <settings> <setting name="logImpl" value="LOG4J" /> </settings> <!--取别名--> <typeAliases> <!-- <typeAlias type="com.bdqn.entity.User" alias="User" /> --> <package name="com.bdqn.entity"/> </typeAliases> <environments default="development"> <environment id="development"> <!--配置事务管理,采用JDBC的事务管理 --> <transactionManager type="JDBC"></transactionManager> <!-- POOLED:mybatis自带的数据源,JNDI:基于tomcat的数据源 --> <dataSource type="POOLED"> <property name="driver" value="${driver}" /> <property name="url" value="${url}" /> <property name="username" value="${user}" /> <property name="password" value="${password}" /> </dataSource> </environment> </environments> <!-- 将mapper文件加入到配置文件中 --> <mappers> <mapper resource="com/bdqn/dao/UserMapper.xml" /> </mappers> </configuration>
工具类:
package com.bdqn.utils; import org.apache.ibatis.io.Resources; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder; import java.io.IOException; import java.io.InputStream; /** * Created by Administrator on 2018/1/14. * 单利模式:两个私有一个共有 * 一个私有变量一个私有构造一个共有方法 */ public class Config { //私有变量 private static SqlSessionFactory factory = null; private static Config config = null; private InputStream inputStream = null; private SqlSession session=null; //私有构造 private Config() { try { inputStream = Resources.getResourceAsStream("mybatis-config.xml"); factory = new SqlSessionFactoryBuilder().build(inputStream); } catch (IOException e) { e.printStackTrace(); } } //公有方法--双重锁 public static synchronized Config getInstant() { if (config == null) { synchronized (Config.class) { if (config == null) { config = new Config(); } } } return config; } public void close(){ try { if (session!=null){ session.close(); } if (inputStream!=null){ inputStream.close(); } } catch (IOException e) { e.printStackTrace(); } } public SqlSession getSession() { session = factory.openSession(); return session; } }
实体类:
package com.bdqn.entity; /** * Created by Administrator on 2018/1/14. */ public class User { private int id; private String name; private String pwd; public User(int id, String name, String pwd) { this.id = id; this.name = name; this.pwd = pwd; } public User() { } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getPwd() { return pwd; } public void setPwd(String pwd) { this.pwd = pwd; } @Override public String toString() { return "User{" + "id=" + id + ", name='" + name + '\'' + ", pwd='" + pwd + '\'' + '}'; } }
Dao层中:
UserMapper.xml文件:
<?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.bdqn.dao.UserDao"> <select id="UserList" parameterType="map" resultMap="User"> select id,name,pwd from user <where> <if test="pid !=null"> and id=#{pid} </if> <if test="name !=null"> and name=#{name} </if> <if test="pwd !=null"> and sal=#{psal} </if> </where> </select> </mapper>
dao实现类:
package com.bdqn.dao; import com.bdqn.entity.User; import java.util.List; /** * Created by Administrator on 2018/1/14. */ public interface UserDao { List<User> selectAll(); }
4.区别名Mapper
在mybatis-config.xml文件中添加下列代码<typeAliases> <!--type是指文件路径 alias是区别名--> <!-- <typeAlias type="com.bdqn.entity.User" alias="User" /> --> <!--在com.bdqn.entity这个包里的所有实体类--> <package name="com.bdqn.entity"/> </typeAliases>
相关文章推荐
- 在mybatis的sqlMapper中使用Ognl判断动态sql语句
- mybatis实战教程(mybatis in action)之八:mybatis 动态sql语句
- Mybatis中的动态SQL语句以及一些其他的笔记
- MyBatis学习 之 三、动态SQL语句
- Mybatis:关于动态生成sql语句的一些问题
- 设置在控制台打印 MyBatis 动态生成 SQL 语句的方法
- Mybatis的动态sql语句if和choose
- mybatis动态SQL语句
- Mybatis SQL语句的两种映射方式 mapper的xml配置和接口两种方式
- MyBatis动态Sql语句
- mybatis动态SQL语句
- MyBatis第八步、动态SQL语句
- mybatis动态插入sql语句
- Mybatis使用之动态SQL语句
- mybatis插件-------从dao快速定位到mapper的sql语句
- MyBatis学习 之 三、动态SQL语句
- mybatis 动态sql语句
- mybatis动态SQL语句
- MyBatis学习 之 三、动态SQL语句
- mybatis 动态sql 根据条件执行相应的语句