Mybatis 基于 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);
		}
	}
    // 其他方法自行实现吧
}

本人公众号,欢迎交流
在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值