mybatis查询数据常用得有两种模式
第一种是把sql语句放在xml中
第二种是把sql语句注解在UserMapperI接口中
这里先讲第一种,把sql语句放在xml中
需要两个jar包
第一种开发只有四个部分
1,实体类就一带而过
public class User {
private int id;
private String name;
private int age;
}
2,userMapping.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,namespace的值习惯上设置成包名+sql映射文件名,这样就能够保证namespace的值是唯一的
例如namespace="me.gacl.mapping.userMapper"就是me.gacl.mapping(包名)+userMapper(userMapper.xml文件去除后缀)
-->
<mapper namespace="dao_mapping.userMapping">
<!-- 在select标签中编写查询的SQL语句, 设置select标签的id属性为getUser,id属性值必须是唯一的,不能够重复
使用parameterType属性指明查询时使用的参数类型,resultType属性指明查询返回的结果集类型
resultType="me.gacl.domain.User"就表示将查询结果封装成一个User类的对象返回
User类就是users表所对应的实体类
-->
<!--
根据id查询得到一个user对象
-->
<select id="getUser" parameterType="String"
resultType="dao.User">
select * from users where name=#{name}
</select>
<!-- 创建用户(Create) -->
<insert id="addUser" parameterType="dao.User">
insert into users(name,age) values(#{name},#{age})
</insert>
<!-- 删除用户(Remove) -->
<delete id="deleteUser" parameterType="int">
delete from users where id=#{id}
</delete>
<!-- 修改用户(Update) -->
<update id="updateUser" parameterType="dao.User">
update users set name=#{name},age=#{age} where id=#{id}
</update>
<!-- 查询全部用户-->
<select id="getAllUsers" resultType="dao.User">
select * from users
</select>
</mapper>
3,核心配置文件 conf.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="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/mybatis" />
<property name="username" value="root" />
<property name="password" value="123456789" />
</dataSource>
</environment>
</environments>
<!-- 注册userMapper.xml文件,注意要配置注册
userMapper.xml位于me.gacl.mapping这个包下,所以resource写成me/gacl/mapping/userMapper.xml-->
<mappers>
<mapper resource="dao_Mapping/userMapping.xml"/>
</mappers>
</configuration>
4,Test1.java测试类
public class Test1 {
public static void main(String[] args) throws IOException {
//mybatis的配置文件
String resource = "conf.xml";
//創建sessionFactory有兩種方式
//第一种
//使用类加载器加载mybatis的配置文件(它也加载关联的映射文件)
//InputStream is = Test1.class.getClassLoader().getResourceAsStream(resource);
//构建sqlSession的工厂
// SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(is);
//第二种
//使用MyBatis提供的Resources类加载mybatis的配置文件(它也加载关联的映射文件)
Reader reader = Resources.getResourceAsReader(resource);
//构建sqlSession的工厂
SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader);
//创建能执行映射文件中sql的sqlSession
SqlSession session = sessionFactory.openSession();
/**
* 映射sql的标识字符串,
* me.gacl.mapping.userMapper是userMapper.xml文件中mapper标签的namespace属性的值,
* getUser是select标签的id属性值,通过select标签的id属性值就可以找到要执行的SQL
*/
// 查詢
// String statement = "dao_mapping.userMapping.getUser";//映射sql的标识字符串
// //执行查询返回一个唯一user对象的sql
// User user = session.selectOne(statement, "用户");
// System.out.println(user);
//插入
// String statement = "dao_mapping.userMapping.addUser";//映射sql的标识字符串
// User user = new User();
// user.setName("用户");
// user.setAge(20);
// //执行插入操作
// int retResult = session.insert(statement,user);
// //手动提交事务
// session.commit();
// //使用SqlSession执行完SQL之后需要关闭SqlSession
// session.close();
// System.out.println(retResult);
//修改
//修改功能還是在id功能上查詢
// String statement = "dao_mapping.userMapping.updateUser";//映射sql的标识字符串
// User user = new User();
// user.setId(3);
// user.setName("用户");
// user.setAge(25);
// //执行修改操作
// int retResult = session.update(statement,user);
// //使用SqlSession执行完SQL之后需要关闭SqlSession
// session.commit();
// session.close();
// System.out.println(retResult);
//刪除
// String statement = "dao_mapping.userMapping.deleteUser";//映射sql的标识字符串
// int retResult = session.delete(statement,3);
// //使用SqlSession执行完SQL之后需要关闭SqlSession
// session.commit();
// session.close();
// System.out.println(retResult);
//查詢所有
String statement = "dao_mapping.userMapping.getAllUsers";//映射sql的标识字符串
List<User> lstUsers = session.selectList(statement);
//使用SqlSession执行完SQL之后需要关闭SqlSession
session.close();
System.out.println(lstUsers);
}
}