Mybatis搭建以及junit

//mybatis官网



导入lib下的依赖包,和核心包

加入数据库驱动包

创建配置sqlMapConfig.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>
<!-- 环境标签和spring整合后environments配置将废除 -->
<environments default="development">
<environment id="development">
<!-- 使用jdbc事物管理 -->
<transactionManager type="JDBC"/>
<!-- 数据库连接池 -->
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/mybatis?characterEncoding=utf-8"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
</dataSource>
</environment>
</environments>
</configuration>


可配置log4j.properties 不知道哪里出错了,这个配置有问题

# Global logging configuration
log4j.rootLogger=DEBUG,stdout
# Console output...
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PattenrnLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n

创建写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">
<!-- namespacez:命名空间,用于隔离sql -->
<mapper>
</mapper>

映射到主配置文件里

测试
<select id="findUserById" parameterType="Integer" resultType="com.mask.mybatis.entity.User">
select * from user where id = #{v};
</select>
<select id="findUserByName" parameterType="String" resultType="com.mask.mybatis.entity.User">
select * from user where username like "%"#{v}"%";
</select>


-------------学意正浓,也不知道是包错了,也不知道是集成的Eclipse的问题,出的错简直就是恶心,改了参数运行,还是显示最早那次填写的参数,而且重新运行也不好使,项目文件夹上还报错感叹号。。。这不是逼着我休息吗这不是~-----------------



------------重新下载了Eclipse ,现在没问题了,很显然确实是软件出了问题。-------------------
@Test
public void testFindUserByUserName() throws Exception {
//加载核心配置文件
String resource = "sqlMapConfig.xml";
InputStream in = Resources.getResourceAsStream(resource);
//创建SqlSessionFactory
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(in);
SqlSession sqlSession = sqlSessionFactory.openSession();
//执行sql语句
List<User> users = sqlSession.selectList("test.findUserByName", "五");
for(User user : users){
System.out.println(user);
}
}

插入数据
记住最后。。。commit
//加载核心配置文件
String resource = "sqlMapConfig.xml";
InputStream in = Resources.getResourceAsStream(resource);
//创建SqlSessionFactory
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(in);
SqlSession sqlSession = sqlSessionFactory.openSession();
//执行sql语句
User user = new User();
user.setUsername("马云杰");
user.setBirthday(new Date());
user.setSex("男");
user.setAddress("asdfs");
int i = sqlSession.insert("test.insertUser", user);
sqlSession.commit();
<insert id="insertUser" parameterType="com.mask.mybatis.entity.User">
insert into user (username,birthday,address,sex) value (#{username},#{birthday},#{address},#{sex});
</insert>

保存时直接获取最新id
<selectKey>
select LAST_INSERT_ID()
</selectKey>

//加载核心配置文件
String resource = "sqlMapConfig.xml";
InputStream in = Resources.getResourceAsStream(resource);
//创建SqlSessionFactory
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(in);
SqlSession sqlSession = sqlSessionFactory.openSession();
//执行sql语句
User user = new User();
user.setId(28);
user.setUsername("luconghui");
user.setBirthday(new Date());
user.setSex("女");
user.setAddress("wan");
int i = sqlSession.update("test.updateUserById", user);
System.out.println(i);
sqlSession.commit();
<update id="updateUserById" parameterType="com.mask.mybatis.entity.User">
update user set username = #{username},sex = #{sex},birthday = #{birthday},address = #{address}
where id = #{id}
</update>

//加载核心配置文件
String resource = "sqlMapConfig.xml";
InputStream in = Resources.getResourceAsStream(resource);
//创建SqlSessionFactory
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(in);
SqlSession sqlSession = sqlSessionFactory.openSession();
//执行sql语句
int i = sqlSession.delete("test.delUserById", 25);
System.out.println(i);
sqlSession.commit();
<delete id="delUserById" parameterType="Integer">
delete from user
where id = #{id}
</delete>
1.junit 常用注解 @Before 初始化方法,每次测试方法调用前都执行一次。 @After 释放资源:每次测试方法调用后都执行一次 @Test 测试方法:在这里可以测试期望异常和超时时间 @ignore 忽略的测试方法 @BeforeClass 针对所有测试,只执行一次,且必须为static void @AfterClass 针对所有测试,只执行一次,且必须为static void @RunWith 指定测试类使用的某个运行器参数SpringJUnit4ClassRunner.class @Parameters 指定参数类的参数数据集合 @Rule 允许灵活添加或重新定义测试类中的每个测试方法的行为 @FixMethodOrder 指定测试方法的执行顺序 @ContextConfiguration 参数locations="classpath:spring-mybatis.xml" 指向src下的该文件 执行顺序: @BeforeClass---@Before---@Test---@After---@Before ---@Test---@After---@AfterClass junit与main方法相比的优势:代码量少、结构清晰、灵活性更好 main:一个类中只能有一个main方0法 层次结构方面不够清晰 运行具体某一个方法时,要将其他的方法注释掉 2.mybatis的基本配置 1.dao层接口 2.mapper.xml:编辑需要执行的sql语句 (1)mapper标签的namespace属性:指定该xml对应的dao层接口的路径 3.spring-mybatis.xml:spring集成mybatils的配置文件 (1)配置sqlSessionFactory指定要操作的数据库,以及mapper.xml的所在目录 (2)配置指定的dao层接口的目录 3.mybatis的注意事项 1.xml中的sql不得有分号 2.sql语句操作的表明和列名 3.xml中的小于号:$lt;大于号¥> 4.取变量时,如果dao层接口使用的是@param("别名")注解,则根据别名取值 5.mapper.xml中$和#取值的区别 4.mybatis的xml中如何设置返回值 resultType返回的数据类型 5.$和#区别 1. #将传入的数据都当成一个字符串,会对自动传入的数据加一个双引号。如:order by #{user_id},如果传入的值是111,那么解析成sql时的值为order by "111", 如果传入的值是id,则解析成的sql为order by "id". 2. $将传入的数据直接显示生成在sql中。如:order by ${user_id}, 如果传入 的值是id,则解析成的sql为order by id. 3. #方式能够很大程度防止sql注入。 4. $方式无法防止Sql注入。 5. $方式一般用于传入数据库对象,例如传入表名. 6. 一般能用#的就别用$ MyBatis排序时使用order by 动态参数时需要注意,用$而不是#
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值