主要学习mybatis的crud,增查改删
mybatis:
https://github.com/mybatis/mybatis-3/releases
mybatis框架:
1. 新建java project,加入相关jar包,目录结构如下:
根据mybatis的框架,首先新建sqlmapconfig.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://192.168.199.124:3306/mybatis?characterEncoding=UTF-8"/>
<property name="username" value="root"/>
<property name="password" value="xxxxxxxx"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="sqlmap/User.xml"/>
</mappers>
</configuration>
编写一个mapping文件放到config/sqlmap目录下:
内容如下:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapping 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="demo">
<select id="findUserById" parameterType="int" resultType="com.yf.po.User">
select * from user where id = #{id}
</select>
</mapper>
#{}是一个占位符,接受输入参数,类型可以是java简单类型,pojo自定义,hashmap
如果接受简单类型,{}里面可以写value或者任意名字
如果接受pojo类型,通过OGNL读取对象中的属性值,通过属性,属性,属性...的方式获取属性值
${}是一个拼接符号,会引入sql注入,不建议使用
2. 编写测试代码
内容如下:
@Test
public void findUserTest(){
String resource = "mybatisconfig.xml";
InputStream inputStream = null;
try {
inputStream = Resources.getResourceAsStream(resource);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
SqlSession sqlSession = sqlSessionFactory.openSession();
User user = sqlSession.selectOne("demo.findUserById", 1);
System.out.println(user);
sqlSession.close();
}
查看打印结果:
DEBUG [main] - Logging initialized using 'class org.apache.ibatis.logging.slf4j.Slf4jImpl' adapter.
DEBUG [main] - PooledDataSource forcefully closed/removed all connections.
DEBUG [main] - PooledDataSource forcefully closed/removed all connections.
DEBUG [main] - PooledDataSource forcefully closed/removed all connections.
DEBUG [main] - PooledDataSource forcefully closed/removed all connections.
DEBUG [main] - Opening JDBC Connection
DEBUG [main] - Created connection 864803407.
DEBUG [main] - Setting autocommit to false on JDBC Connection [com.mysql.jdbc.JDBC4Connection@338bda4f]
DEBUG [main] - ==> Preparing: select * from user where id = ?
DEBUG [main] - ==> Parameters: 1(Integer)
DEBUG [main] - <== Total: 1
User [id=1, username=王五, birthday=null, sex=1, address=江苏无锡]
DEBUG [main] - Resetting autocommit to true on JDBC Connection [com.mysql.jdbc.JDBC4Connection@338bda4f]
DEBUG [main] - Closing JDBC Connection [com.mysql.jdbc.JDBC4Connection@338bda4f]
DEBUG [main] - Returned connection 864803407 to pool.
完成简单的查询mybatis功能