MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 。2013年11月迁移到Github。
2、创建po类
4、在sqlMapConfig中加载user.xml
5、根据id查询用户
6、测试程序
public class myProjectTest {
//会话工厂sqlMapConfig
private SqlSessionFactory sqlSessionFactory;
@Before
public void testBefor() throws IOException{
InputStream inputStream = Resources.getResourceAsStream("sqlMapConfig.xml");
sqlSessionFactory = new SqlSessionFactoryBuilder()
.build(inputStream);
}
@Test
public void test(){
SqlSession sqlSessiion = sqlSessionFactory.openSession();
User user = (User)sqlSessiion.selectOne("userTest.findUserById",1);
System.out.println(user);
}
}
1.4 Mapper的动态代理开发
2、UserDao接口
public interface IUserDao {
/**
* 根据ID查询用户
* @param id
* @return
*/
public User findUserById(Integer id);
}
3、测试程序
public class myProjectTest {
//会话工厂sqlMapConfig
private SqlSessionFactory sqlSessionFactory;
@Before
public void testBefor() throws IOException{
InputStream inputStream = Resources.getResourceAsStream("sqlMapConfig.xml");
sqlSessionFactory = new SqlSessionFactoryBuilder()
.build(inputStream);
}
@Test
public void findUserByIdTest(){
SqlSession sqlSessiion = sqlSessionFactory.openSession();
IUserDao userDao = sqlSessiion.getMapper(IUserDao.class);
User user = userDao.findUserById(4);
System.out.println(user);
}
}
#{}和${}
#{}表示一个占位符号,通过#{}可以实现preparedStatement向占位符中设置值,自动进行java类型和jdbc类型转换,#{}可以有效防止sql注入。 #{}可以接收简单类型值或pojo属性值。如果parameterType传输单个简单类型值,#{}括号中可以是value或其它名称。
${}表示拼接sql串,通过${}可以将parameterType传入的内容拼接在sql中且不进行jdbc类型转换,${}可以接收简单类型值或pojo属性值,如果parameterType传输单个简单类型值,${}括号中只能是value。
2、添加用户
select LAST_INSERT_ID()
INSERT INTO t_user (id,name,age,money)
VALUES
(#{id},#{name},#{age},#{money})
注:测试程序要提交事务
keyProperty:返回的主键存储在pojo中的哪个属性
order:selectKey的执行顺序,是相对与insert语句来说,由于mysql的自增原理执行完insert语句之后才将主键生成,所以这里selectKey的执行顺序为after
resultType:返回的主键是什么类型
LAST_INSERT_ID():是mysql的函数,返回auto_increment自增列新记录id值。
mysql使用uuid实现主键
select uuid()
insert into user(id,username,birthday,sex,address)
values(#{id},#{username},#{birthday},#{sex},#{address})
注意这里使用的order是“BEFORE”
3、删除用户
DELETE FROM t_user WHERE id=#{id}
4、更新用户
UPDATE t_user
name=#{name},
age=#{age},
money=#{money},
where id=#{id}
1.6 sqlMapConfig配置文件
<properties resource="db.properties"/>
2、typeAliases(类型别名)
3、mappers(映射器)
select * from user
然后在别的需要的地方引入
2、一对多关联查询