文章目录
- Mybatis 基于xml的简单增删改查
- 准备
- 1. 创建一个Maven工程
- 2. 添加pom依赖
- 3. 在src/main/resources下创建log4j.properties文件,内容如下
- 4. 在src/main/resources下创建mydbconfig.properties 文件,内容如下
- 5. 在src/main/java/下的com.beans包创建实体类 UserBean
- 6. 在src/main/java/下的com.mapper包创建持久层接口 UserMapper
- 7. 在src/main/resources/mapping下创建持久层接口UserMapper的映射文件UserMapper.xml
- 8. 在src/main/resources下创建mydbconfig.propertiesmybatis-config.xml配置如下
- 一、 增加
- 二、 删除
- 三、修改
- 四、查询
- 五、测试
Mybatis 基于xml的简单增删改查
准备
1. 创建一个Maven工程
2. 添加pom依赖
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.47</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.0</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.2.6</version>
</dependency>
<dependency>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-core</artifactId>
<version>1.3.2</version>
</dependency>
</dependencies>
3. 在src/main/resources下创建log4j.properties文件,内容如下
# Set root category priority to INFO and its only appender to CONSOLE.
#log4j.rootCategory=INFO, CONSOLE debug info warn error fatal
log4j.rootCategory=debug, CONSOLE, LOGFILE
# Set the enterprise logger category to FATAL and its only appender to CONSOLE.
log4j.logger.org.apache.axis.enterprise=FATAL, CONSOLE
# CONSOLE is set to be a ConsoleAppender using a PatternLayout.
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=%d{ISO8601} %-6r [%15.15t] %-5p %30.30c %x - %m\n
# LOGFILE is set to be a File appender using a PatternLayout.
log4j.appender.LOGFILE=org.apache.log4j.FileAppender
log4j.appender.LOGFILE.File=d:\axis.log
log4j.appender.LOGFILE.Append=true
log4j.appender.LOGFILE.layout=org.apache.log4j.PatternLayout
log4j.appender.LOGFILE.layout.ConversionPattern=%d{ISO8601} %-6r [%15.15t] %-5p %30.30c %x - %m\n
4. 在src/main/resources下创建mydbconfig.properties 文件,内容如下
db.driver=com.mysql.jdbc.Driver
db.url=jdbc:mysql://localhost:3306/你的数据库名
db.username=root
db.password=root
5. 在src/main/java/下的com.beans包创建实体类 UserBean
public class UserBean {
private Integer id;
private String name;
private String email;
private Integer age;
<!-- getset方法自行实现 -->
}
6. 在src/main/java/下的com.mapper包创建持久层接口 UserMapper
public interface UserMapper {
}
7. 在src/main/resources/mapping下创建持久层接口UserMapper的映射文件UserMapper.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.mapper.UserMapper">
</mapper>
8. 在src/main/resources下创建mydbconfig.propertiesmybatis-config.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>
<properties resource="mydbconfig.properties" />
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="${db.driver}"/>
<property name="url" value="${db.url}"/>
<property name="username" value="${db.username}" />
<property name="password" value="${db.password}" />
</dataSource>
</environment>
</environments>
<!---->
<mappers>
<mapper resource="mapping/UserMapper.xml"></mapper>
</mappers>
</configuration>
一、 增加
持久层接口中增加 insertUser 方法
//持久层接口中增加 insertUser 方法
public interface UserMapper {
//返回一个true or false 添加成功为true,失败为false
public boolean insertUser(UserBean ub);
}
映射文件UserMapper.xml实现持久层接口中的方法 insertUser
<?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.mapper.UserMapper">
<!-- 实现持久层接口中的方法 insertUser id为方法名-->
<insert id="insertUser" parameterType="com.beans.UserBean">
insert into user (name,age,email) values (#{name},#{age},#{email})
</insert>
</mapper>
二、 删除
持久层接口中增加 deleteUserById方法
//持久层接口中增加 insertUser 方法
public interface UserMapper {
//返回一个true or false 添加成功为true,失败为false
public boolean insertUser(UserBean ub);
//返回一个true or false 删除成功为true,失败为false
public boolean deleteUserById(Integer id);
}
映射文件UserMapper.xml中实现持久层接口中的方法 deleteUserById
<?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.mapper.UserMapper">
<!-- 实现持久层接口中的方法 insertUser id为方法名-->
<insert id="insertUser" parameterType="com.beans.UserBean">
insert into user (name,age,email) values (#{name},#{age},#{email})
</insert>
<!-- 实现持久层接口中的方法 deleteUserById id为方法名-->
<delete id="deleteUserById" parameterType="Integer">
delete from user where id = #{id}
</delete>
</mapper>
三、修改
持久层接口中增加 updateUser方法
//持久层接口中增加 updateUser 方法
public interface UserMapper {
//返回一个true or false 添加成功为true,失败为false
public boolean insertUser(UserBean ub);
//返回一个true or false 删除成功为true,失败为false
public boolean deleteUserById(Integer id);
//返回一个true or false 修改成功为true,失败为false
public boolean updateUser(UserBean ub);
}
映射文件UserMapper.xml实现持久层接口中的方法 updateUser
<?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.mapper.UserMapper">
<!-- 实现持久层接口中的方法 insertUser id为方法名-->
<insert id="insertUser" parameterType="com.beans.UserBean">
insert into user (name,age,email) values (#{name},#{age},#{email})
</insert>
<!-- 实现持久层接口中的方法 deleteUserById id为方法名-->
<delete id="deleteUserById" parameterType="Integer">
delete from user where id = #{id}
</delete>
<!-- 实现持久层接口中的方法 updateUser id为方法名-->
<update id="updateUser" parameterType="com.beans.UserBean">
update user set name = #{name},age = #{age},email = #{email} where id = #{id}
</update>
</mapper>
四、查询
基础查询
持久层接口中增加 getAllUser方法
//持久层接口中增加 updateUser 方法
public interface UserMapper {
//返回一个true or false 添加成功为true,失败为false
public boolean insertUser(UserBean ub);
//返回一个true or false 删除成功为true,失败为false
public boolean deleteUserById(Integer id);
//返回一个true or false 修改成功为true,失败为false
public boolean updateUser(UserBean ub);
//返回一个集合,元素为 UserBean
public List<UserBean> getAllUser();
}
映射文件UserMapper.xml实现持久层接口中的方法 getAllUser
<?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.mapper.UserMapper">
<!-- 实现持久层接口中的方法 insertUser id为方法名-->
<insert id="insertUser" parameterType="com.beans.UserBean">
insert into user (name,age,email) values (#{name},#{age},#{email})
</insert>
<!-- 实现持久层接口中的方法 deleteUserById id为方法名-->
<delete id="deleteUserById" parameterType="Integer">
delete from user where id = #{id}
</delete>
<!-- 实现持久层接口中的方法 updateUser id为方法名-->
<update id="updateUser" parameterType="com.beans.UserBean">
update user set name = #{name},age = #{age},email = #{email} where id = #{id}
</update>
<!-- 实现持久层接口中的方法 getAllUser id为方法名-->
<select id="getAllUser" resultType="com.beans.UserBean">
select * from user
</select>
</mapper>
模糊查询
持久层接口中增加 getListUserLikeName方法
//持久层接口中增加 updateUser 方法
public interface UserMapper {
//返回一个true or false 添加成功为true,失败为false
public boolean insertUser(UserBean ub);
//返回一个true or false 删除成功为true,失败为false
public boolean deleteUserById(Integer id);
//返回一个true or false 修改成功为true,失败为false
public boolean updateUser(UserBean ub);
//返回一个集合,元素为 UserBean
public List<UserBean> getAllUser();
//返回一个集合 参数为姓名 实现模糊查找
public List<UserBean> getListUserLikeName(String name);
}
映射文件UserMapper.xml实现持久层接口中的方法 getAllUser
<?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="com.mapper.UserMapper">
<!-- 实现持久层接口中的方法 insertUser id为方法名-->
<insert id="insertUser" parameterType="com.beans.UserBean">
insert into user (name,age,email) values (#{name},#{age},#{email})
</insert>
<!-- 实现持久层接口中的方法 deleteUserById id为方法名-->
<delete id="deleteUserById" parameterType="Integer">
delete from user where id = #{id}
</delete>
<!-- 实现持久层接口中的方法 updateUser id为方法名-->
<update id="updateUser" parameterType="com.beans.UserBean">
update user set name = #{name},age = #{age},email = #{email} where id = #{id}
</update>
<!-- 实现持久层接口中的方法 getAllUser id为方法名-->
<select id="getAllUser" resultType="com.beans.UserBean">
select * from user
</select>
<!-- 实现持久层接口中的方法 getListUserLikeName id为方法名 利用concat函数防止sql注入 -->
<select id="getListUserLikeName" parameterType="String" resultType="com.beans.UserBean">
select * from user where name like concat('%',#{name},'%')
</select>
</mapper>
五、测试
public class JunitTest {
SqlSession sqlSession = null;
UserMapper userMapper = null;
@Before
public void init() {
// 1.加载类路径下的配置文件
// 2.InputStream in= Resources.getResourceAsStream("mybatis-config.xml");
InputStream in = Test.class.getClassLoader().getResourceAsStream("mybatis-config.xml");
// 3.创建SqlSessionFactory的构建者对象
SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
// 4.使用构建者对象创建工厂对象SqlSessionFactory
SqlSessionFactory factory = builder.build(in);
// 5.使用SqlSessionFactory产生sqlSession对象
sqlSession = factory.openSession();
// 6.使用sqlSession创建接口userMapper的代理对象
userMapper = sqlSession.getMapper(UserMapper.class);
}
@After
public void destory() {
// 提交事务
sqlSession.commit();
// 关闭
sqlSession.close();
}
@Test
public void testInsert() {
UserBean ub = new UserBean();
ub.setName("ttt");
ub.setAge(12);
ub.setEmail("ttt@qq.com");
Integer res = userMapper.insertUser(ub); ///调用方法
if (res < 0) {
System.out.println("添加失败");
} else {
System.out.println("添加成功");
System.out.println("自增Id为:" + res);
}
}
// 其他方法自行实现吧
}
本人公众号,欢迎交流
转载:https://blog.csdn.net/hwy499/article/details/104851219
查看评论