1.在src下创建一个myBatis.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>
<!-- default:指默认使用id为defaultr的 environment配置
一个environments下可以有多个environment-->
<environments default="default">
<environment id="default">
<!-- 使用原生jdbc事务 -->
<transactionManager type="JDBC"></transactionManager>
<!-- 使用数据库连接池 -->
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/ssm"/>
<property name="username" value="root"/>
<property name="password" value="admin"/>
</dataSource>
</environment>
</environments>
<!-- 读取mapper -->
<mappers>
<mapper resource="com/strong/mapper/FlowerMapper.xml"/>
</mappers>
</configuration>
2.新建一个包com.strong.mapper,在包下创建FlowerMapper.xml文件(类名.mapper.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">
<!-- namespace:命名,可以随意取 -->
<mapper namespace="com.strong.mapper">
<!-- resultType:实体类,要写类命名 id:命名 -->
<select resultType="com.strong.pojo.Flower" id="selectAll">
select * from flower
</select>
</mapper>
3.测试MyBatis
public class Test {
public static void main(String[] args)
throws IOException {
//读取XML文件
InputStream is=Resources.getResourceAsStream("myBatis.xml"
);
//创建SqlSessionFactory工厂
SqlSessionFactory factory=
new SqlSessionFactoryBuilder().build(is);
//生产一个SqlSession对象
SqlSession session=
factory.openSession();
//读取数据库
List<Flower> list=session.selectList("com.strong.mapper.selectAll"
);
for(Flower flower:list) {
System.out.println(flower);
}
}
}
三种常查询方式:
1.
返回一个List对象,适用于查询需要遍历的结果
List<Flower> list=session.selectList("com.strong.mapper.selectAll"
);
for(Flower flower:list) {
System.out.println(flower);
}
<select resultType="com.strong.pojo.Flower" id="selectAll">
select * from flower
</select>
2.
返回一个Object对象,适用于查询一条数据
int count=session.selectOne("com.strong.mapper.selectOne"
);
System.out.println(count);
<select resultType="int" id="selectOne">
select count(*) from flower
</select>
3.
返回一个map,适用于需要对查询结果再次筛选(通讯录)
Map<Object,Object> map=session.selectMap("com.strong.mapper.selectMap", "name"
);//name为map的key
System.out.println(map);
<select resultType="com.strong.pojo.Flower" id="selectMap">
select * from flower
</select>
MyBatis日志输出方法
1.在myBatis配置文件中加入<stttings>
<settings>
<setting name="logImpl" value="LOG4J"/>
</settings>
2.在log4j.propertie 中设置输出级别
log4j.rootCategory=ERROR, CONSOLE,LOGFILE
log4j.logger.com.strong.mapper=DEBUG //包级别,类级别,方法级别
parameterType使用:
可以使用#{ }和¥{ }获取参数:
#{} 和${} 的区别:
#{} 获取参数的内容支持索引获取,param1 获取指定位置参数, 并且SQL 使用?占位符
${} 字符串拼接不使用?,默认找${内容}内容的get/set 方法,如 果写数字,就是一个数字
<!-- 相当于:Preparing: select * from flower where id=? --> <select resultType="com.strong.pojo.Flower" id="selectForId" parameterType="int">
select * from flower where id=#{0}
</select>
<!-- 相当于:Preparing: select * from flower where id=0 --> <select resultType="com.strong.pojo.Flower" id="selectForId" parameterType="int">
select * from flower where id=${0}
</select>
//selectXXX方法第二个参数为sql查询参数Flower flower=session.selectOne("com.strong.mapper.selectForId",1);
<select resultType="com.strong.pojo.Flower" id="selectForId" parameterType="com.strong.pojo.Flower">
select * from flower where id=${id} <!-- 传入类的查询方法,大括号内写类的成员名称,myBatis低层调用get方法-->
</select>
Flower flower=
new Flower();
flower.setId(2
);
Flower flower2=session.selectOne("com.strong.mapper.selectForId"
,flower);
System.out.println(flower2);
使用map作为参数的使用方法:
<select resultType="com.strong.pojo.Flower" id="selectMap" parameterType="map">
select * from flower where id=#{id} or name=#{name}
</select>
Map<String,Object> map=
new HashMap<String,Object>
();
map.put("name","菊花"
);map.put("id", 2
);
List<Flower> list=session.selectList("com.strong.mapper.selectMap"
, map);
for(Flower f:list){
System.out.println(f);
}
实现分页
//每页显示几个
int pageSize=3
;
//第几页
int pageNumber=3
;
//计算好结果再传入
int pageStart=pageSize*(pageNumber-1
);
Map<String,Integer> map=
new HashMap<String,Integer>
();
map.put("pageSize"
, pageSize);
map.put("pageStart"
, pageStart);
List<Flower> list=session.selectList("com.strong.mapper.page"
,map);
for(Flower f:list) {
System.out.println(f);
}
<select resultType="com.strong.pojo.Flower" id="page" parameterType="map">
select * from flower limit #{pageStart},#{pageSize}
</select>
别名:
在myBatis中配置typeAliases属性
<typeAliases>
<typeAlias type="com.strong.pojo.Flower" alias="flower"/>
<package name="com.strong.pojo"/>
</typeAliases>
插入数据方法:
<select id="insert" parameterType="Flower">
insert into flower values(default,#{name},#{price},#{production})
</select>
Flower f=
new Flower(1,"newName",3.14,"test");
session.insert("com.strong.mapper.insert"
,f);session.commit();
事务回滚:.如果在一个事务中某个SQL 执行事务,希望回归到事务的原点,保证数据库数据的完整性.
Flower f=
new Flower(1,"newName",3.14,"Test"
);
try {
session.insert("com.strong.mapper.insert"
,f);
}catch(Exception e) {
System.out.println("插入失败"
);
session.rollback();//回滚
}
session.commit();
转载于:https://www.cnblogs.com/lastingjava/p/9926362.html
相关资源:Mybatis基础