MyBatis实现简单的增删改查
第一步:导入mybatis-3.2.3.jar和mysql-connector-java-5.1.25-bin.jar这两个包
第二步:建立好相对应的类,如下图(注:本人的包建立并不规范)
第三步:编写Config.xml配置文件,代码如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "mybatis-3-config" "mybatis-3-config.dtd" >
<configuration>
<typeAliases>
<!-- 单个别名定义:
type:类型路径,alias:别名 -->
<typeAlias type="com.zhiyuan.Bean.User" alias="User"/>
<!-- 批量定义别名:
name:指定包名,mybatis自动扫描包中的类,自动定义别名,别名就是类
名(首字母大小写都可以) -->
<!-- <package name="" /> -->
</typeAliases>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC">
</transactionManager>
<dataSource type="POOLED">
<property name="driver" value=
"com.mysql.jdbc.Driver"/>
<property name="url" value=
"jdbc:mysql://localhost:3306/数据库名"/>
<property name="username" value="用户名"/>
<property name="password" value="密码"/>
</dataSource>
</environment>
</environments>
<mappers>
<!-- 通过resource方法一次加载一个映射文件 -->
<mapper resource="com/zhiyuan/Dao/Mapper.xml"/>
<!-- 通过mapper接口加载单个映射文件
遵循一些规范:需要将mapper接口类名和mapper.xml映射文件名
称保持一致,且在同一个目录中
以上规范的前提是:使用的是mapper代理方法
-->
<!-- <mapper class="com.zhiyuan.Dao.IUslect" /> -->
<!-- 批量加载mapper
指定mapper接口的包名,mybatis自动扫描包下边所有mapper接
口进行加载
遵循一些规范:需要将mapper接口类名和mapper.xml映射文件名
称保持一致,且在同一个目录中
以上规范的前提是:使用的是mapper代理方法
-->
<!-- <package name="com.zhiyuan.Dao" /> -->
</mappers>
</configuration>
第四步:编写Mapper.xml配置文件,代码如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "mybatis-3-mapper" "mybatis-3-mapper.dtd" >
<!--
Mapper代理开发规范:
1、在Mapper.xml中namespace值等于Mapper接口地址
(这里的IUslect接口就是Mapper接口)
2、Mapper接口中的方法和Mapper.xml中statement的id一致
3、Mapper接口中的方法输入参数类型和Mapper.xml中statement的
parameterType指定的类型一致
4、Mapper接口中的方法返回值类型和Mapper.xml中statement的
resultType指定类型一致
-->
<mapper namespace="com.zhiyuan.Dao.IUslect">
<!-- 增 -->
<insert id="into" parameterType="User">
insert into users (id,name,age) values(#{id},#{name},#{age})
</insert>
<!-- 删 -->
<delete id="desc" parameterType="int">
delete from users where id = #{id}
</delete>
<!-- 改 -->
<update id="gai" parameterType="User">
update users set name = #{name},age = #{age} where id =#{id}
</update>
<!-- 查 -->
<!-- resultType(pojo类型):
使用resultType进行输出映射,只有查询出来的列名和pojo中的属性名一
致,改列才可以映射成功
如果查询出来的列名和pojo中的属性名全部不一致,没有创建pojo对象
只要查询出来的列名和pojo中的属性名有一个一致,就会创建pojo对象
-->
<select id="select" parameterType="int" resultType="User">
select * from users where id = #{id}
</select>
<!-- 用户综合查询
#{userCustom.name}:取出pojo包装对象中用户的名称
${userCustom.age}:取出pojo包装对象中年龄的值
-->
<select id="findUserList" parameterType=
"com.zhiyuan.Bean.UserQueryVo"
resultType="com.zhiyuan.Bean.UserCustom">
select * from users where users.name = #{userCustom.name}
and users.age like '%${userCustom.age}%'
</select>
</mapper>
第五步:编写ICslect.java接口类,代码如下
package com.zhiyuan.Dao;
import java.util.List;
import com.zhiyuan.Bean.User;
import com.zhiyuan.Bean.UserCustom;
import com.zhiyuan.Bean.UserQueryVo;
public interface IUslect {
public int into(User user);//增
public int desc(int id);//删
public int gai(User user);//改
public User select(int id);//查
public List<UserCustom> findUserList(UserQueryVo userQueryVo);
}
第六步:编写User.java实体类,代码如下:
package com.zhiyuan.Bean;
public class User {
private int id;
private String name;
private int age;
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 int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
第七步:编写UserCustom.java子类,代码如下
package com.zhiyuan.Bean;
public class UserCustom extends User{
//可扩展用户的信息
}
第八步:编写UserQueryVo.java类,代码如下
package com.zhiyuan.Bean;
/**
* 包装类型
* @author Administrator
*
*/
public class UserQueryVo {
private UserCustom userCustom;
public UserCustom getUserCustom() {
return userCustom;
}
public void setUserCustom(UserCustom userCustom) {
this.userCustom = userCustom;
}
}
第九步:编写CheShiLei.java测试类,代码如下
package com.zhiyuan.Bean;
import java.io.*;
import java.util.List;
import org.apache.ibatis.io.*;
import org.apache.ibatis.session.*;
import com.zhiyuan.Dao.IUslect;
public class CheShiLei {
public static void main(String[] args) throws IOException {
//得到文件配置流
Reader reader = Resources.getResourceAsReader("Config.xml");
//创建回话工厂,传入mybatis的配置文件信息
SqlSessionFactory sql = new SqlSessionFactoryBuilder().build(reader);
//通过工厂得到SqlSession
SqlSession session = sql.openSession();
IUslect iuslect = session.getMapper(IUslect.class);//MyBatis自动生成Mapper代理对象
// User user = new User();//增
// user.setId(4);
// user.setName("李四");
// user.setAge(18);
// int a = iuslect.into(user);
// session.commit();//提交事务
// session.close();//释放资源
// System.out.println(a);
// int user = iuslect.desc(3);//删
// session.commit();//提交事务
// session.close();//释放资源
// System.out.println(user);
// User user = new User();//改
// user.setName("赵六");
// user.setAge(25);
// user.setId(3);
// int a = iuslect.gai(user);
// session.commit();//提交事务
// session.close();//释放资源
// System.out.println(a);
// User user = iuslect.select(1);//查
// session.close();//释放资源
// System.out.println(user.getId()+user.getName()+user.getAge());
//创建包装对象,设置查询条件
UserQueryVo userQueryVo = new UserQueryVo();
UserCustom userCustom = new UserCustom();
userCustom.setName("李四");
userCustom.setAge(18);
userQueryVo.setUserCustom(userCustom);
//调用iuslect的方法
List<UserCustom> list = iuslect.findUserList(userQueryVo);
System.out.println(list);
}
}
还没有评论,来说两句吧...