1.创建javaWeb项目MyBatis_dynamicSQL并在WebRoot下的WEB-INF下的lib下添加如下jar文件

cglib-nodep-2.1_3.jar

log4j-1.2.17.jar

mybatis-3.2.3.jar

ojdbc14.jar

创建如下userinfo.sql

SQL> create table userinfo
(id number(4),
name varchar2(50),
password varchar2(20
telephone varchar2(15),
isadmin varchar2(5));

SQL> --4.2 用户表序列
SQL> create sequence seq_userinfo;

SQL> alter table userinfo add constraint pk_userinfo_id primary key(id);

SQL> insert into userinfo values(seq_userinfo.nextval,'holly','123','134518024
','是');

SQL> commit;

2.在src下创建log4j.properties日志文件

log4j.properties

3..在src下创建Configuration.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>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="oracle.jdbc.driver.OracleDriver"/>
<property name="url" value="jdbc:oracle:thin:@127.0.0.1:1521:orcl"/>
<property name="username" value="system"/>
<property name="password" value="accp"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="com/mapper/UserInfoMapper.xml"/>
</mappers>
</configuration>

Configuration.xml

4.在src下com.entity包下创建UserInfo.java

 package com.entity;

 import java.util.ArrayList;
import java.util.List; /**
* 用户信息表
* @author Dell
*
*/
public class UserInfo {
private Integer id; //编号
private String name; //姓名
private String password; //密码
private String telephone; //电话
private String isadmin; //是否是管理员
private List<Integer> ids=new ArrayList<Integer>(); public UserInfo() {
} public UserInfo(Integer id, String name, String password, String telephone,
String isadmin) {
this.id = id;
this.name = name;
this.password = password;
this.telephone = telephone;
this.isadmin = isadmin;
} public UserInfo(String name, String password) {
this.name = name;
this.password = password;
} public Integer getId() {
return id;
} public void setId(Integer id) {
this.id = id;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public String getPassword() {
return password;
} public void setPassword(String password) {
this.password = password;
} public String getTelephone() {
return telephone;
} public void setTelephone(String telephone) {
this.telephone = telephone;
} public String getIsadmin() {
return isadmin;
} public void setIsadmin(String isadmin) {
this.isadmin = isadmin;
} public List<Integer> getIds() {
return ids;
} public void setIds(List<Integer> ids) {
this.ids = ids;
} @Override
public String toString() {
return "UserInfo [id=" + id + ", ids=" + ids + ", isadmin=" + isadmin
+ ", name=" + name + ", password=" + password + ", telephone="
+ telephone + "]";
} }

UserInfo.java

5.在src下com.util包下创建MyBatisUtil.java
MyBatisUtil.java

6.在src下com.mapper包下创建UserInfoMapper.java接口

 package com.mapper;

 import java.util.List;

 import com.entity.UserInfo;
/**
* 数据访问层接口
* @author pc
*
*/
public interface UserInfoMapper {
/**
* 1.根据用户信息查询某个用户
* @param userinfo
* @return
*/
UserInfo findNamePwd(UserInfo userinfo); /**
* 2.添加用户信息
* @param userinfo
*/
void addUserInfo(UserInfo userinfo); /**
* 3.查询所有
* @return
*/
List<UserInfo> findAll(UserInfo userinfo); /**
* 4.删除
* @param id
*/
void deleteUser(int id);
/**
* 5.修改
* @param userinfo
*/
void updateUser(UserInfo userinfo); /**
* 6.根据id查询
*/
UserInfo findId(int id);
}

UserInfoMapper.java

7.在src下com.mapper包下创建UserInfoMapper.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.mapper.UserInfoMapper">
<!-- 定义sql片段,该片段中不包含where,也就是定义公共sql部分 -->
<sql id="id_where">
<if test="id!=null and id!=''">
and id=#{id}
</if>
</sql> <!-- 根据用户查询用户 -->
<select id="findNamePwd" parameterType="com.entity.UserInfo" resultType="com.entity.UserInfo">
select * from userinfo
<!-- 动态sql -->
<where> <!--name,password,这个参数是输入参数对象的 属性-->
<if test="name!=null and name!=''">
and name=#{name}
</if>
<if test="password!=null and password!=''">
and password=#{password}
</if>
</where> </select> <!-- 插入用户信息 -->
<insert id="addUserInfo" parameterType="com.entity.UserInfo">
insert into userinfo values(seq_userinfo.nextval,#{name},#{password},#{telephone},#{isadmin})
</insert> <!-- 查询所有 -->
<select id="findAll" resultType="com.entity.UserInfo" parameterType="com.entity.UserInfo">
select * from userinfo
<where>
<if test="ids!=null">
<foreach collection="ids" item="id" open="and id in(" close=")" separator=",">
#{id}
</foreach>
</if>
</where>
</select> <!-- 删除 -->
<delete id="deleteUser" parameterType="int">
delete from userinfo
<!-- 动态sql中引用sql片段 --> <where>
<!-- 引用sql片段的id,如果refid指定的不在本映射文件中,需要前面加namespace -->
<include refid="id_where"/>
<!-- 这里可以引用其他的sql片段 -->
</where>
where id=#{id}
</delete> <!-- 修改 -->
<update id="updateUser" parameterType="com.entity.UserInfo">
update userinfo set name=#{name},password=#{password},telephone=#{telephone},isadmin=#{isadmin} where id=#{id}
</update> <!-- 根据id查询 -->
<select id="findId" parameterType="int" resultType="com.entity.UserInfo">
select * from userinfo where id=#{id} </select> </mapper>

UserInfoMapper.xml

8.在src下com.test包下创建Test.java

 package com.test;

 import java.util.ArrayList;
import java.util.List; import org.apache.ibatis.session.SqlSession; import com.entity.UserInfo;
import com.mapper.UserInfoMapper;
import com.util.MybatisUtil; public class Test { /**
* @param args
*/
public static void main(String[] args) {
SqlSession sqlSession=MybatisUtil.getSqlSession(false);
UserInfoMapper mapper=sqlSession.getMapper(UserInfoMapper.class);
UserInfo userinfo=new UserInfo("李杰", "123");
// UserInfo info=mapper.findNamePwd(userinfo);
// if(info!=null){
// System.out.println("登陆成功");
// }else{
// System.out.println("登陆失败");
//
// } List<Integer> ids=new ArrayList<Integer>();
ids.add(22);
ids.add(23);
ids.add(24);
userinfo.setIds(ids); List<UserInfo> userin=mapper.findAll(userinfo);
System.out.println(userin); } }

Test.java

8.MyBatos的动态Sql的更多相关文章

  1. 值得注意的ibatis动态sql语法格式

    一.Ibatis常用动态sql语法,简单粗暴用一例子 <select id="iBatisSelectList" parameterClass="java.util ...

  2. Mysql - 游标/动态sql/事务

    游标这个在我目前的项目里面用的还不多, 但是其功能还是很强大的. 动态sql以前都没用过, 是跟着富士康(不是张全蛋的富土康哦)过来的同事学的. 还是挺好用的. 我的数据库方面, 跟他学了不少. 在此 ...

  3. MyBatis4:动态SQL

    什么是动态SQL MyBatis的一个强大特性之一通常是它的动态SQL能力.如果你有使用JDBC或其他相似框架的经验,你就明白条件串联SQL字符串在一起是多么地痛苦,确保不能忘了空格或者在列表的最后的 ...

  4. 分享公司DAO层动态SQL的一些封装

    主题 公司在DAO层使用的框架是Spring Data JPA,这个框架很好用,基本不需要自己写SQL或者HQL就能完成大部分事情,但是偶尔有一些复杂的查询还是需要自己手写原生的Native SQL或 ...

  5. MySQL存储过程动态SQL语句的生成

    用Mysql存储过程来完成动态SQL语句,使用存储过程有很好的执行效率: 现在有要求如下:根据输入的年份.国家.节假日类型查询一个节假日,我们可以使用一般的SQL语句嵌入到Java代码中,但是执行效率 ...

  6. 【Java EE 学习 79 下】【动态SQL】【mybatis和spring的整合】

    一.动态SQL 什么是动态SQL,就是在不同的条件下,sql语句不相同的意思,曾经在“酒店会员管理系统”中写过大量的多条件查询,那是在SSH的环境中,所以只能在代码中进行判断,以下是其中一个多条件查询 ...

  7. 自定义函数执行动态sql语句

    --函数中不能调用动态SQL,使用用存储过程吧.如果还要对函数做其他操作,换成存储过程不方便,可以考虑把其他操作一起封装在存储过程里面.如:   create proc [dbo].[FUN_YSCL ...

  8. mybatis入门基础(五)----动态SQL

    一:动态SQL 1.1.定义 mybatis核心对sql语句进行灵活操作,通过表达式进行判断,对sql进行灵活拼接.组装. 1.2.案例需求 用户信息综合查询列表这个statement的定义使用动态s ...

  9. mybatis 动态sql表达式相关应用

    一.mybatis 表达式简介 对于mybatis3 ,提供了一种动态sql的方式.通过动态sql我们可以直接在mybatis 的xm映射文件中直接通过条件判断的方式进行查询添加的拼接.mybatis ...

随机推荐

  1. [转]Disabling ASLR on individual iOS applications when using iOS 6.0.1

    ASLR: Address Space Layout Randomization 查看应用是否进行了 ASLR 保护的方法:otool -hv ${File-Path} I recently enco ...

  2. .Net 异步随手记(二)

    Task.ContinueWith 这货,和 await 一样有“陷阱”.^^,因为写 ContinueWith 不能直观如人的“过程性”思维,写在 ContinueWith 括号里的部分不一定只在发 ...

  3. (翻译) Android ListView 性能优化指南

    本文翻译了Lucas Rocha的Performance Tips for Android’s ListView.这是一篇关于介绍如何提升ListView性能的文章,非常的优秀.使得我拜读之后,忍不住 ...

  4. JavaScript原型与继承

    JavaScript原型与继承 原型 在JavaScript中,每个函数都有一个prototype属性,这个属性是一个指针,指向该函数的原型对象.这个原型对象为所有该实例所共享.在默认情况下,原型对象 ...

  5. Makefile常用信息查询页

    这是博主第一次尝试在博客中使用markdown来写博文,目前感觉还不错.大家也可以尝试尝试. 符号说明 符号 作用   换行符 @ 放在命令前面隐藏命令输出 - 放在命令前面忽略命令错误 : 以来规则 ...

  6. LinqToXml高级用法介绍

    LinqToXml高级用法介绍 一.函数构造 什么是函数构造?其是指通过单个语句构建XML树的能力. 那么它有什么作用呢? 作用1.用单个表达式快速创建复杂的XML树 见实例代码CreateXml( ...

  7. MySQL 常用命令大全

    Mysql常用命令行大全 第一招.mysql服务的启动和停止 net stop mysql net start mysql 第二招.登陆mysql 语法如下: mysql -u用户名 -p用户密码 键 ...

  8. Web Host下的URL路由

    Web Host下的URL路由 ASP.NET Web API提供了一个独立于执行环境的抽象化的HTTP请求处理管道,而ASP.NET Web API自身的路由系统也不依赖于ASP.NET路由系统,所 ...

  9. 典型的团队VS优秀团队

    如果做不了优秀的团队,那么就做一个典型的团队,公司需要这么一个神话,需要这么一个领头羊. 我在进入某公司后,第一个项目用的是"敏捷开发方法".而公司的理念恰恰是:开发.协作性强.扁 ...

  10. C# ASP.net 入门之简单通讯录

    简单通讯录功能虽然简单,却包括了制作一个网站的基本功能!各个模块可以作为新手入门的参考. 简单通讯录实现功能:1.登录 2.注册 3.后台管理 4.前台登录显示 5.创建联系人 6.密码修改 代码下载 ...