本次实训环境:
jdk:1.8
编辑器:eclipse
数据库:mysql,SQLyog
实训所得结果:使用mybatis进行简单增删改查操作
代码上传gitee:
创建数据库:
DROP TABLE IF EXISTS `computers`;
CREATE TABLE `computers` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键(电脑编号)',
`brand` varchar(20) DEFAULT NULL COMMENT '品牌',
`computer_name` varchar(40) DEFAULT NULL COMMENT '电脑名字',
`memory_size` float DEFAULT NULL COMMENT '内存大小',
`hard_size` float DEFAULT NULL COMMENT '硬盘大小',
`cpu_type` varchar(20) DEFAULT NULL COMMENT 'CPU型号',
`system` varchar(40) DEFAULT NULL COMMENT '操作系统',
`price` float DEFAULT NULL COMMENT '单价',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;
添加3条记录,结果如下:
在eclipse中新建项目(略)
新建lib文件夹,导入mybatis、mysql数据库连接驱动两个jar包
选中Jar包,点击build path
Jar包前的图形是一个小坛子说明添加成功
新建一个resouces文件夹,该文件夹主要放配置文件
在resources下新建一个mybatis.xml文件,这个文件是我们的主配置文件
编写主配置文件(可以自定义模板)
mybatis主配置文件头,输入“<”,会弹出提示符,如果没有弹出提示符,说明前期的模板导入错误。
<?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">
在主配置文件中配置数据库的连接信息
包括:数据库驱动、url、usenrame、password等
<?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>
<typeAliases>
<package name="cn.java.entity"/>
</typeAliases>
<environments default="mysql">
<environment id="mysql">
<transactionManager type="JDBC"></transactionManager>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/mybatis?useUnicode=true&characterEncoding=utf8&useSSL=false"/>
<property name="username" value="root"/>
<property name="password" value="123456"/>
</dataSource>
</environment>
</environments>
</configuration>
编写局部配置文件(mapper文件)
新建对应Java文件
创建局部配置文件
局部配置文件头
<?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">
引入命名空间(对应接口的全限定包名)
<?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">
<mapper namespace="cn.java.dao.impl.ComputerDaoImpl">
</mapper>
在mapper内部添加对数据库的操作---增删改查
提示:在xml文件中写入句子前,先在数据库中验证,sql语句是否正确
<?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">
<mapper namespace="cn.java.dao.impl.ComputerDaoImpl">
<!-- 查询全部 -->
<select id="selectAll" resultType="computer">
SELECT * FROM computers
</select>
<!-- 按单条件查询 -->
<select id="selectById" parameterType="Long" resultType="computer">
SELECT * FROM computers WHERE id=#{0}
</select>
<!-- 按多条件查询 -->
<select id="selectByConditions" parameterType="Map" resultType="computer">
SELECT * FROM computers WHERE brand=#{b} AND memory_size=#{m}
</select>
<!-- 添加 -->
<insert id="addComputer" parameterType="Map" >
INSERT INTO computers SET brand=#{brand},computer_name=#{computer_name},memory_size=#{memory_size},hard_size=#{hard_size},cpu_type=#{cpu_type},system=#{system},price=#{price};
</insert>
<!-- 更新 -->
<update id="updateComputer" parameterType="Map">
UPDATE computers SET computer_name=#{computer_name},cpu_type=#{cpu_type} WHERE id=#{id};
</update>
<!-- 删除 -->
<delete id="deleteComputer" parameterType="Long">
DELETE FROM computers WHERE id=#{id};
</delete>
</mapper>
测试:
在测试类中新建 init 方法,此方法是为了获取SqlSession,因为每个操作都需要,所以抽取成一个单独的方法以便调用
public class ComputerDaoImpl {
static SqlSession session = null;
@Before
public void init() throws IOException {
SqlSessionFactoryBuilder sfb = new SqlSessionFactoryBuilder();
InputStream ins = ins=Resources.getResourceAsStream("mybatis.xml");
SqlSessionFactory ssf = sfb.build(ins);
session = ssf.openSession();
}
}
编写测试方法:
public class ComputerDaoImpl {
static SqlSession session = null;
@Before
public void init() throws IOException {
SqlSessionFactoryBuilder sfb = new SqlSessionFactoryBuilder();
InputStream ins = ins=Resources.getResourceAsStream("mybatis.xml");
SqlSessionFactory ssf = sfb.build(ins);
session = ssf.openSession();
}
@Test
public void selectAll() throws IOException {
List<Computer> lists = session.selectList("cn.java.dao.impl.ComputerDaoImpl.selectAll");
for(Computer computer:lists) {
System.out.println(computer);
}
}
@Test
public void selectById() throws IOException {
Computer computer = session.selectOne("cn.java.dao.impl.ComputerDaoImpl.selectById",2L);
System.out.println(computer.toString());
}
@Test
public void selectByConditions() throws IOException {
Map<String,Object> parameter = new HashMap<String,Object>();
parameter.put("b", "lenovo");
parameter.put("m", 4F);
List<Computer> list = session.selectList("cn.java.dao.impl.ComputerDaoImpl.selectByConditions",parameter);
for(Computer computer:list) {
System.out.println(computer);
}
}
@Test
public void addComputer() {
Map<String,Object> parameter = new HashMap<String,Object>();
parameter.put("brand", "外星人");
parameter.put("computer_name", "fun410");
parameter.put("memory_size", 4F);
parameter.put("hard_size", 1024);
parameter.put("cpu_type","i10");
parameter.put("system", "windows10");
parameter.put("price", 4999);
int flag = session.insert("cn.java.dao.impl.ComputerDaoImpl.addComputer",parameter);
session.commit();
if(flag>=1)
{
System.out.println("插入成功!");
}else {
System.out.println("插入失败!");
}
}
@Test
public void updateComputer() {
Map<String,Object> parameter = new HashMap<String,Object>();
parameter.put("computer_name", "宏碁蜂鸟fun410");
parameter.put("cpu_type","i11");
parameter.put("id", 9);
int flag = session.insert("cn.java.dao.impl.ComputerDaoImpl.updateComputer",parameter);
session.commit();
if(flag>=1)
{
System.out.println("更新成功!");
}else {
System.out.println("更新失败!");
}
}
@Test
public void deleteComputer() {
int flag = session.delete("cn.java.dao.impl.ComputerDaoImpl.deleteComputer",9L);
session.commit();
if(flag>=1)
{
System.out.println("删除成功!");
}else {
System.out.println("删除失败!");
}
}
}
总结:
由于之前已经自学过mybatis,所以只是简单记录一下实训过程~~
之前自学的时候用的是IDEA编辑器,此时用eclipse略显生疏,好在操作能够顺利实现
大佬都不会吐槽编辑器的,所以我要吐槽一下eclipse~~