MyBatis入门(二)

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与前一章相同。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值