动态Sql语句中标签的使用
(一)常用标签
1.
if标签通常用于WHERE语句中,通过判断参数值来决定是否使用某个查询条件, 他也经常用于UPDATE语句中判断是否更新某一个字段,还可以在INSERT语句中用来判断是否插入某个字段的值
2.
where元素的作用是给SQL语句添加一个条件判断. 如果输出后是and 开头的,MyBatis会把第一个and忽略,当然如果是or开头的,MyBatis也会把它忽略;此外,在where元素中你不需要考虑空格的问题,MyBatis会智能的帮你加上
3.
主要用在构建in条件中,它可以在SQL语句中进行迭代一个集合。
foreach元素的属性主要有item,index,collection,open,separator,close
collection属性的值有三个分别是list、array、map三种,分别对应的参数类型为:List、数组、map集合
item : 表示在迭代过程中每一个元素的别名
index :表示在迭代过程中每次迭代到的位置(下标)
open :前缀
close :后缀
separator :分隔符,表示迭代时每个元素之间以什么分隔
(二)应用
1.pom.xml
junit
junit
4.11
mysql
mysql-connector-java
5.1.41
org.mybatis
mybatis
3.4.6
2.SqlMapperConfig.xml
/p>
PUBLIC"-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
3.Users.java
packageentity;public classUsers {private intid;privateString username;privateString password;public intgetId() {returnid;
}public void setId(intid) {this.id =id;
}publicString getUsername() {returnusername;
}public voidsetUsername(String username) {this.username =username;
}publicString getPassword() {returnpassword;
}public voidsetPassword(String password) {this.password =password;
}
@OverridepublicString toString() {return "Users{" +
"id=" + id +
", username='" + username + '\'' +
", password='" + password + '\'' +
'}';
}
}
4.UserVo.java
packageentity;importjava.util.List;public classUserVo {privateUsers users;private Listids;publicUsers getUsers() {returnusers;
}public voidsetUsers(Users users) {this.users =users;
}public ListgetIds() {returnids;
}public void setIds(Listids) {this.ids =ids;
}
}
5.UserDao.java
packagedao;importentity.UserVo;importentity.Users;importorg.apache.ibatis.annotations.Param;importjava.util.List;public interfaceUserDao {//查询所有用户信息
ListfindAll();//根据ID进行查询
Users find(intid);//模糊查询
ListfindVague(String name);//查询用户总数
intcount();//将实体类封装到另一个实体类中的模糊查询
ListfindVo(UserVo vo);//根据传入参数进行查询
Users findby(Users users);//根据UserVo中的ids集合查询用户信息
Listfindids(UserVo vo);
}
6.UserDao.xml
/p>
PUBLIC"-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
select * from users
select * from users where id=#{id}
-- select * from users where username like '%${value}%'
select * from users where username like #{name}
select count(id) from users
select * from users where username like #{users.username}
select * from users
and id=#{id}
and username=#{username}
select * from users
0">
#{id}
7.UserTest.java
packagetest;importdao.UserDao;importentity.UserVo;importentity.Users;importorg.apache.ibatis.io.Resources;importorg.apache.ibatis.session.SqlSession;importorg.apache.ibatis.session.SqlSessionFactory;importorg.apache.ibatis.session.SqlSessionFactoryBuilder;importorg.junit.After;importorg.junit.Before;importorg.junit.Test;importjava.io.IOException;importjava.io.InputStream;importjava.util.ArrayList;importjava.util.List;public classUserTest {privateInputStream in;privateSqlSession sqlSession;privateUserDao UserDaoImpl;
@Beforepublic void init() throwsIOException {//1.读取配置文件
in= Resources.getResourceAsStream("SqlMapperConfig.xml");//2.创建SqlSessionFactory工厂
SqlSessionFactoryBuilder builder=newSqlSessionFactoryBuilder();
SqlSessionFactory factory=builder.build(in);//3.使用工厂生产SqlSession对象
sqlSession=factory.openSession();//4.使用SqlSession创建dao接口的代理对象
UserDaoImpl=sqlSession.getMapper(UserDao.class);
}
@Afterpublic void destroy() throwsIOException {//提交事务
sqlSession.commit();//6.释放资源
sqlSession.close();
in.close();
}/*** 查询所有
*@throwsIOException*/@Testpublic void findall() throwsIOException {//5.使用代理对象执行方法
List users=UserDaoImpl.findAll();for(Users u:users){
System.out.println(u);
}
}/*** 根据ID进行查询*/@Testpublic voidfind(){
Users u=UserDaoImpl.find(15);
System.out.println(u);
}/*** 模糊查询,查询所有名字中有小的用户
*@throwsIOException*/@Testpublic void findVague() throwsIOException {//5.使用代理对象执行方法
List users=UserDaoImpl.findVague("%小%");for(Users u:users){
System.out.println(u);
}
}/*** 查询用户总数*/@Testpublic voidcount(){int c=UserDaoImpl.count();
System.out.println(c);
}/*** 将实体类封装到另一个实体类中的模糊查询*/@Testpublic voidfindVo(){
UserVo vo=newUserVo();
Users users=newUsers();
users.setUsername("%小%");
vo.setUsers(users);
List list=UserDaoImpl.findVo(vo);for(Users u:list){
System.out.println(u);
}
}/*** if标签查询,查询用户名为小花,id为25的用户信息*/@Testpublic voidfindby(){
Users users=newUsers();
users.setUsername("小花");
users.setId(25);
Users u=UserDaoImpl.findby(users);
System.out.println(u);
}/*** 根据UserVo中的ids集合查询用户信息*/@Testpublic voidfindids(){
UserVo vo=newUserVo();
List list=new ArrayList();
list.add(13);
list.add(14);
list.add(15);
vo.setIds(list);
List li=UserDaoImpl.findids(vo);for(Users u:li){
System.out.println(u);
}
}
}