public static void main(String[] args) throws IOException {
// 读取配置文件
InputStream in = Resources.getResourceAsStream("SqlMapConfig.xml");
// 创建SqlSessionFactory的创建者对象
SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
// 使用创建者对象创建工厂对象
SqlSessionFactory factory = builder.build(in);
// 使用工厂对象生产SqlSession对象
SqlSession sqlSession = factory.openSession();
// 使用sqlsession对象 创建dao接口的代理对象
Iuser mapper = sqlSession.getMapper(Iuser.class);
List all = mapper.findAll();
System.out.println(all);
// 释放资源
sqlSession.close();
in.close();
}
案例:实现数据库的增删改查
接口
public interface Iuser {
// 增
void add(user user);
// 删
void delete(int id);
// 修改(更新)
void update(user user);
// 查询:查询所有
List findAll();
// 查询:根据id进行查询
user findById(int id);
// 查询:根据name进行模糊查询
List findByNameLike(String name);
// 查询一共多少条记录
int count();
}
映射配置文件
insert into test_dao(username,password) values (#{username},#{password})
delete from test_dao where id=#{uid}
update test_dao set username=#{username},password=#{password} where username=#{username}
模糊查询两种方法
1、#{}:使用的是预编译方式 动态执行sql语句
select * from test_dao where username like #{uname}
2、${value}:使用的是字符串拼接的方式,执行sql语句
在使用的时候,直接传入文字即可
select * from test_dao where username like '%${value}%'
返回新增用户的id
select last_insert_id()
insert into test_dao(username,password) values (#{username},#{password})
public class Peoper {
private user user;
public dome1.dmain.user getUser() {
return user;
}
public void setUser(dome1.dmain.user user) {
this.user = user;
}
}
接口方法
// 实体类的包装对象作为参数
List findByName_Peoper(Peoper peoper);
映射配置文件
select * from test_dao where username like #{user.username}
resultType配置结果类型
该属性支持基本类型、实体类型
参照上方的代码即可
特殊情况:实体类的属性名称与数据库列名不符(2种解决方法)
1、在SQL语句中加别名 给数据表的列名通过设置别名的方法改成实体类的属性名
select id,username as name,password as pwd from test_dao
2、使用resultMap标签
功能:当列名和属性名不一致时建立对应关系,从而实现封装
select * from test_dao
Mybatis传统的DAO层开发
接口实现类:daoimpl
public class userimpl implements Iuser {
private SqlSessionFactory factory;
//通过工厂类对象创建这个是实现类
public userimpl(SqlSessionFactory factory) {
this.factory = factory;
}
public void add(user user) {
SqlSession sqlSession = factory.openSession();
sqlSession.insert("dome1.dao.Iuser.add", user);
sqlSession.commit();
sqlSession.close();
}
public void delete(int id) {
SqlSession sqlSession = factory.openSession();
sqlSession.delete("dome1.dao.Iuser.delete",id);
sqlSession.commit();
sqlSession.close();
}
public void update(user user) {
SqlSession sqlSession = factory.openSession();
sqlSession.update("dome1.dao.Iuser.update",user);
sqlSession.commit();
sqlSession.close();
}
public List findAll() {
SqlSession sqlSession = factory.openSession();
List userList = sqlSession.selectList("dome1.dao.Iuser.findAll");
return userList;
}
public user findById(int id) {
SqlSession sqlSession = factory.openSession();
user user = sqlSession.selectOne("dome1.dao.Iuser.findById", id);
return user;
}
}
映射文件与上个案例相同
测试代码
public class t1 {
private InputStream in;
private Iuser iuser;
@Before
public void init() throws IOException {
in = Resources.getResourceAsStream("SqlMapConfig.xml");
SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
SqlSessionFactory factory = builder.build(in);
iuser = new userimpl(factory);
}
@After
public void after() throws IOException {
in.close();
}
@Test
public void add(){
user user = new user();
user.setUsername("赵六");
user.setPassword("123");
iuser.add(user);
}
@Test
public void delete(){
iuser.delete(1);
}
@Test
public void update(){
user user = new user();
user.setUsername("tony");
user.setPassword("111111");
iuser.update(user);
}
@Test
public void findall(){
System.out.println(iuser.findAll());
}
@Test
public void findid(){
System.out.println(iuser.findById(3));
}
}