(一)搭建mybatis结构
(二)在接口中定义方法—》在接口的配合文件中进行配置—》在测试类中进行测试
IUserDao接口中代码
package com.itheima.dao;
import com.itheima.domain.User;
import org.apache.ibatis.annotations.Select;
import java.util.List;
IUserDao接口代码
/**
* 用户的持久层接口
*/
public interface IUserDao {
/**
* 查询所有操作
* @return
*/
//@Select("select * from user")
List<User> findAll();
/**
* 保存用户
*/
void saveUser(User user);
/**
* 更新用户
*/
void updateUser(User user);
/**
* 根据id删除用户
*/
void deleteUser(Integer userId);
/**
* 根据id查找用户信息
*/
User findById(Integer userId);
/**
* 用姓名模糊查询用户信息
*/
List<User> findByName(String username);
/**
* 查询有多少用户
*/
int findCount();
}
接口配置文件中代码
<?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.itheima.dao.IUserDao">
<!-- 配置查询所有-->
<select id="findAll" resultType="com.itheima.domain.User">
select * from user;
</select>
<!-- 保存用户-->
<insert id="saveUser" parameterType="com.itheima.domain.User">
insert into user(username,birthday,sex,address)values(#{username},#{birthday},#{sex},#{address});
</insert>
<!--更新用户-->
<update id="updateUser" parameterType="com.itheima.domain.User">
update user set username=#{username},birthday=#{birthday},sex=#{sex},address=#{address} where id=#{id};
</update>
<!-- 删除用户-->
<delete id="deleteUser" parameterType="java.lang.Integer">
delete from user where id=#{uid};
</delete>
<!--根据id查询用户信息-->
<select id="findById" parameterType="int" resultType="com.itheima.domain.User">
select * from user where id=#{uid};
</select>
<!--根据姓名模糊查询-->
<select id="findByName" parameterType="String" resultType="com.itheima.domain.User">
<!--select * from user where username like #{name};-->
select * from user where username like '%${value}%';
</select>
<!-- 查询有多少用户-->
<select id="findCount" resultType="int">
select count(id) from user;
</select>
</mapper>
测试类中代码
package com.itheima.test;
import com.itheima.dao.IUserDao;
import com.itheima.domain.User;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import java.io.IOException;
import java.io.InputStream;
import java.util.Date;
import java.util.List;
/**
* 入门案例
*/
public class MybatisTest {
private InputStream in;
private SqlSession sqlSession;
private IUserDao userDao;
public static void main(String[] args) throws IOException {
//1.读取配置文件
InputStream in = Resources.getResourceAsStream("SqlMapConfig.xml");
//2.创建SqlSessionFactory工厂
SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
SqlSessionFactory factory = builder.build(in);
//3.使用工厂产生SqlSession对象
SqlSession session = factory.openSession();
//4.使用SqlSession创建Dao接口的代理对象
IUserDao userDao = session.getMapper(IUserDao.class);
//5.使用代理对象执行方法
List<User> users = userDao.findAll();
for(User user : users){
System.out.println(user);
}
//6.释放资源
session.close();
in.close();
}
@Before
public void init() throws IOException {
//1.读取配置文件
in = Resources.getResourceAsStream("SqlMapConfig.xml");
//2.创建SqlSessionFactory工厂
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(in);
//3.使用工厂产生SqlSession对象
sqlSession = factory.openSession();
//4.使用SqlSession创建Dao接口的代理对象
userDao = sqlSession.getMapper(IUserDao.class);
}
@After
public void destory() throws IOException {
//提交事务
sqlSession.commit();
sqlSession.close();
in.close();
}
@Test
public void testSave(){
User user = new User();
user.setUsername("mybatis saveuser");
user.setBirthday(new Date());
user.setSex("male");
user.setAddress("黑龙江大庆");
//5.保存方法
userDao.saveUser(user);
//提交事务
sqlSession.commit();
}
@Test
public void updateUser(){
User user = new User();
user.setUsername("mybatis updateuser");
user.setBirthday(new Date());
user.setSex("male");
user.setAddress("黑龙江大庆");
user.setId(9);
//5.保存方法
userDao.updateUser(user);
}
@Test
public void deleteUser(){
//5.保存方法
userDao.deleteUser(9);
}
@Test
public void findById(){
//5.保存方法
User usera = userDao.findById(11);
System.out.println(usera);
}
@Test
public void findByName(){
//5.保存方法
//List<User> users = userDao.findByName("%王%");
List<User> users = userDao.findByName("王");
for(User user :users){
System.out.println(user);
}
}
@Test
public void findCount(){
int count = userDao.findCount();
System.out.println(count);
}
}
总结
模糊查询语句
- select * from user where username like #{name};//预定于查询
- select * from user where username like ‘%${value}%’;//字符串直接拼接查询
- 配置文件中:
①parameterType=“输入类型”
②resultType=“返回类型/位置”