mybatis是什么?
- mybatis是一个持久层的框架,是apache下的项目
- mybatis能够将输入参数自动映射,能够将查询结果灵活地映射成java对象
配置mybatis
- 添加数据库的驱动包和mybatis的核心包以及依赖包
- 在classpath中添加log4j.properties文件
配置log4j.properties
`# Global logging configuration '# 在开发情况下日志级别要设置成ˆDEBUG,生产环境设置成info或者error log4j.rootLogger=DEBUG, stdout '# Console output log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n`
添加全局配置SqlMapConfig.xml配置文件用于配置SqlMapping
<?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="database1"> <environment id="database1"> <transactionManager type="JDBC" /> <dataSource type="POOLED"> <property name="driver" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost:3306/mybatis"/> <property name="username" value="root" /> <property name="password" value="root" /> </dataSource> </environment> </environments> <!-- 加载映射文件 --> <mappers> <mapper resource="sqlmap/User.xml"/> </mappers>
在classpath目录下创建一个sqlmap包,并且配置单个User.xml映射文件
<?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"> <!-- 命名空间,作用对sql进行分类管理 --> <mapper namespace="test"> <!-- 在配置文件中配置很多的sql语句 --> <!-- 需求:通过id查询用户记录 --> <!-- 通过select执行数据查询 id:标识映射文件的sql 将sql语句封装到mappedStatement对象中,所以将id称为statement的id `#{}表示一个占位符` parameterType:指定输入参数的类型 `#{id}:id表示我们输入的参数,参数的名称就是id` resultType:指sql输出的的结果所映射的java对象类型 select将单条记录映射成java对象 --> <select id="findUserById" parameterType="int" resultType="com.aikeri.mybatis.bean.User"> SELECT * FROM user WHERE id=#{id} </select> <!-- 查询多条数据 resultType:是单条数据所映射的java数据类型 ${}拼接sql字符串 使用${}可能会引起sql注入 ${}中只能使用value eg:${value} --> <select id="findUserByName" parameterType="java.lang.String" resultType="com.aikeri.mybatis.bean.User"> SELECT * FROM user WHERE username LIKE '%${value}%' </select> </mapper>`
在SqlMapConfig中加载映射文件
<!-- 加载映射文件 -->
<mappers>
<mapper resource="sqlmap/User.xml"/>
</mappers>
在java中用mybatis进行数据库操作
//全局配置文件路径
String sqlMapConfig="SqlMapConfig.xml";
//通过流的方式获取得配置文件信息
InputStream inputStream=Resources.getResourceAsStream(sqlMapConfig);
//创建会话工厂
System.out.println(inputStream);
SqlSessionFactory ssf=new SqlSessionFactoryBuilder().build(inputStream);
System.out.println(ssf);
//通过会话工厂得到SqlSession
SqlSession ss=ssf.openSession();
//通过SqlSession操作数据库,test.findUserById是映射文件的中select的id
User user=ss.selectOne("test.findUserById", 1);
System.out.println(user.getAddress());
ss.close();//关闭会话释放资源
小结
parameterType和resultType
- parameterType是在映射文件中指定的参数输入类型
- resultType是在映射文件中指定的输入结果类型
‘#{}和${}
- #{}表示一个占位符
- ${}是sql拼接符号,会引起sql注入,不建议使用
- selectOne和selectList
- selectOne查询出一条数据进行映射
- selectList查询出多条数据进行映射