Sql片段的使用,可以将重复的部分提出来,成为Sql片段。
<select id="findUserByManyCondition" parameterType="map" resultType="com.wc.test01.User">
select * from t_user
<where>
1=1
</where>
<if test="uName!=null and uName!=''">
and uName=#{uName}
</if>
<if test="uPassWord!=null and uPassWord!=''">
and uPassWord=#{uPassWord}
</if>
</select>
提出sql片段
<select id="findUserByManyCondition" parameterType="map" resultType="com.wc.test01.User">
select * from t_user
<!--where 条件还可以这样写-->
<include refid="bobo"></include>
</select>
<!--下面定义的是sql的片段-->
<sql id="bobo">
<where>
1=1
</where>
<if test="uName!=null and uName!=''">
and uName=#{uName}
</if>
<if test="uPassWord!=null and uPassWord!=''">
and uPassWord=#{uPassWord}
</if>
</sql>
Mybatis建议的Mapper开发的方法的写法:
1>:模块的dao接口的名字和模块的映射文件的名字必须一样
2>:模块的dao的接口和模块的映射文件必须在同一个文件夹下
3>:模块的dao的接口的写法一般是 模块Mapper eg:UserMapper
4>:映射文件的namespace必须是模块的dao接口的全路径
5>:模块的dao接口的方法的名字必须是里面描述方法的id值
6>:映射的xml的接受数据类型和返回的数据类型必须和接口一样
7>:更改我们的这个mapper映射文件的路径编程扫描
代码如下:
User.java
public class User implements Serializable{
/**
*
*/
private static final long serialVersionUID = 1L;
private int uId;
private String uName;
private String uPassword;
public User() {
super();
}
public User(int uId, String uName, String uPassword) {
super();
this.uId = uId;
this.uName = uName;
this.uPassword = uPassword;
}
public int getuId() {
return uId;
}
public void setuId(int uId) {
this.uId = uId;
}
public String getuName() {
return uName;
}
public void setuName(String uName) {
this.uName = uName;
}
public String getuPassword() {
return uPassword;
}
public void setuPassword(String uPassword) {
this.uPassword = uPassword;
}
@Override
public String toString() {
return "User [uId=" + uId + ", uName=" + uName + ", uPassword="
+ uPassword + "]";
}
}
UserMapper.java
public interface UserMapper {
/**
* 添加用户的方法
* @param user
*/
void add(User user);
}
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.wc.test02.mapper.UserMapper">
<!--插入的方法-->
<insert id="add" parameterType="com.wc.test02.pojo.User">
insert into t_user(uName,uPassWord) values(#{uName},#{uPassWord})
</insert>
</mapper>
IUserService.java
public interface IUserService {
void updateByName(User user);
}
UserService.java
public class UserService implements IUserService{
private UserMapper userMapper=null;
@Override
public void updateByName(User user) {
userMapper=MyBatisUtils.getSqlSession().getMapper(UserMapper.class);
userMapper.add(user);
MyBatisUtils.close();
}
}
UserControll.java
public class UserControll {
@Test
public void test() throws Exception {
new UserService().updateByName(new User(1, "玛莎拉蒂","999999"));
}
}
mybatis.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!--这个配置文件是不用记住的 只是需要 知道去哪里找就OK了 -->
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<!-- configuration:这个表示的是整个的配置信息 -->
<configuration>
<!-- 资源导入-->
<properties resource="db.properties"></properries>
<!--取别名-->
<typeAliases>
<!--给单个类取别名:type:表示的是取别名的数据类型 alias:别名的名字-->
<!-- <typeAlias type="com.qf.setting.User" alias="user1"/> -->
<!--给一个包中的类都取别名,么这个别名的名字就是 类名的手写字母小写-->
<package name="com.wc.test01"/>
</typeAliases>
<!-- environments环境可以配置多个 比如 mySql orale? ... default:默认使用那个环境 后面的值 必须是后面的id
mysql / oracle -->
<environments default="mysql">
<!-- environment:这个表示的是配置的是单个的环境 id:给环境添加唯一的标识符 id可以随便取名 但是一般也要见名之意 -->
<environment id="mysql">
<!--mybatis的事物只能交给JDBC去进行处理 -->
<transactionManager type="JDBC" />
<!--这个表示的是数据库的连接池 type也只能写 pooled -->
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql:///iBatis001" />
<property name="username" value="root" />
<property name="password" value="123456" />
</dataSource>
</environment>
<environment id="oracle">
<transactionManager type="JDBC" />
<dataSource type="POOLED">
<!--引用我们的资源文件 ${资源名}-->
<property name="driver" value="${driver}" />
<property name="url" value="${url}" />
<property name="username" value="${username}" />
<property name="password" value="${password}" />
</dataSource>
</environment>
</environments>
<!--配置的是映射的文件 -->
<mappers>
<!--mapper扫描器-->
<package name="com.wc.test02.mapper"/>
</configuration>
db.properties
driver=com.mysql.jdbc.Driver
url=jdbc:mysql:///iBatis001
username=root
password=123456
log4j.properties与前一章相同。