配置参数
id:进行数据库操作的时候,唯一确定要执行的sql语句
parameterType:指定输入参数类型(可以是实体类类型),mybatis通过ognl从输入对象中获取参数值拼接在sql中
resultType:指定输出结果类型,mybatis将sql查询结果的一行记录数据映射为resultType指定类型的对象。如果有多条数据,则分别进行映射,并把对象放到容器List中
API(增删改查操作)
查询操作:
selectOne:查询一条记录,如果使用selectOne查询多条记录则抛出异常
第一步:映射文件中配置sql语句
<!--根据cust_id查询客户-->
<select id="queryCustomerById" parameterType="Int" resultType="com.ctbu.domain.Customer">
SELECT * FROM `customer` WHERE cust_id = #{cust_id}
</select>
第二步:测试类中执行语句
@Test
public void test1() throws IOException {
SqlSession session = MyUtils.openSession();
//执行sqlsession对象执行查询
//第一个参数是customer.xml的statement的id
//第二额参数是执行sql需要的参数
Customer customer = session.selectOne("queryCustomerById", 1);
System.out.println(customer);
session.close();
}
selectList:可以查询一条或多条记录
第一步:映射文件中配置sql语句
<!--查询所有客户-->
<select id="queryAllCustomer" resultType="com.ctbu.domain.Customer">
SELECT * FROM `customer`
</select>
第二步:测试类中执行语句
@Test
public void selectAllCus(){
SqlSession session = MyUtils.openSession();
List<Customer> allCustomer = session.selectList("queryAllCustomer");
for (Customer customer : allCustomer) {
System.out.println(customer);
}
session.close();
}
insert:插入操作(直接使用mybatis的时候记得手动提交事务)
第一步:映射文件中配置sql语句
<!--添加用户-->
<insert id="insertCustomer" parameterType="com.ctbu.domain.Customer">
<!--这里配置的是插入后获取插入数据的id-->
<selectKey keyColumn="cust_id" keyProperty="cust_id" order="AFTER" resultType="Integer">
select last_insert_id()
</selectKey>
insert into `customer` (cust_name,cust_profession,cust_phone,email) values (#{cust_name},#{cust_profession},#{cust_phone},#{email})
</insert>
第二步:测试语句
@Test
public void insertCustomer(){
SqlSession session = MyUtils.openSession();
Customer customer = new Customer();
customer.setCust_name("heihei");
customer.setCust_phone("110");
customer.setEmail("22342@qq.com");
session.insert("insertCustomer", customer);
session.commit();
System.out.println(customer.getCust_id());
session.close();
}
update:更新操作(先根据id查出来,再执行更新)
第一步:映射文件配置sql语句
<!--更新用户-->
<update id="updateCustomer" parameterType="com.ctbu.domain.Customer">
update `customer` set cust_name = #{cust_name} where cust_id = #{cust_id}
</update>
第二步:测试语句
@Test
public void updateTest(){
SqlSession session = MyUtils.openSession();
Customer customer = session.selectOne("queryCustomerById", 18);
customer.setCust_name("酒桶");
session.update("updateCustomer",customer);
session.commit();
session.close();
}
delete:删除操作(一般是先根据id查出来,再删除)
第一步:映射文件配置sql语句
<!--删除用户-->
<delete id="deleteCustomer" parameterType="com.ctbu.domain.Customer">
delete from `customer` where cust_id = #{cust_id}
</delete>
第二步:测试语句
@Test
public void deleteTest(){
SqlSession session = MyUtils.openSession();
Customer customer = session.selectOne("queryCustomerById", 18);
session.delete("deleteCustomer", customer);
session.commit();
session.close();
}